Five minutes to your first audit. Run it on the example, point it at your own results, and read what comes back.
Contents
You have a trading strategy and some backtest results. Straud examines the evidence behind them and tells you where it is weak — an edge that rests on two symbols, a cost assumption frozen into a spreadsheet years ago, a sample too short to support the claim.
It checks your reasoning, and measures how much the evidence can carry.
Open a terminal in the folder you unzipped, and run:
./straud audit examples/example_trades.csv --column net_return --trials 40
On Windows: straud.exe audit examples\example_trades.csv --column net_return --trials 40
The first run takes 15–60 seconds. Your operating system is checking a program it has not seen before. Every run after that is under a second.
You should see a report. If you do, Straud works — now point it at your own data.
Straud needs a CSV or Parquet file with one row per trade or event, and a
column of returns as decimals (0.012 for 1.2%, not 1.2).
./straud audit my_results.csv --column net_return --trials 40
That is the minimum. Three optional columns make the answer much better:
| Add this | With | Why it matters |
|---|---|---|
| a date column | --cluster date |
Trades on the same day are not independent |
| a symbol column | --entity symbol |
One symbol firing fifty times is not fifty events |
| pre-cost returns | --gross gross_return --cost 0.001 |
Checks your cost assumption is survivable |
./straud audit my_results.csv --column net_return --trials 40 \
--cluster date --entity symbol
--trials is how many strategy variants you tried before choosing this one.
Every variant. Including those discarded.
If you swept 12 lookback periods across 4 thresholds and kept the best, that is 48, not 1. Straud cannot know this — only you do — and it changes the answer completely:
| You declare | What Straud reports |
|---|---|
--trials 1 |
Survives |
--trials 200 |
Not distinguishable from luck |
Nothing about the strategy changed — only the declared size of the search.
When unsure, guess high. Understating it produces a flattering answer — the one failure that costs real money.
The verdict is one of four:
| Verdict | Meaning |
|---|---|
| Survives | Passed every test applied. |
| Conditional | Real signal, but survival depends on assumptions that probably do not hold live. |
| Unproven | The trial-adjusted edge is not distinguishable from zero. |
| Fatal | A confirmed defect. Do not trade this. |
The findings are what it actually discovered, worst first. Each says what was measured, what it means, and what to do about it.
The "what we did NOT test" list is part of the result, not an afterthought. A clean verdict is only as strong as the list of what was tested.
Straud's strongest verdict is Survives: the strategy passed every test that was run.
0 nothing serious · 1 something at your failing level · 2 a critical finding
./straud audit results.csv --column net --trials 50 || echo "needs attention"