Audit your trading strategy
Your backtest was profitable, so why does your live trading fail?
The causes are few and identifiable, and every one of them is already present
in the results you have:
Straud finds all that apply — with the evidence behind each, and what to do before you trade it again.
Runs locally offline · no account · no subscription · no data leaves your machine
Statistical validity — can the sample carry the claim once the search is accounted for? Deflated Sharpe against declared trials, effective sample size once observations stop being independent, and the power to detect the claimed effect.
Data integrity — does the file record the past, or assume it? Look-ahead, archive coverage holes, survivorship, and columns that are a frozen assumption rather than a measurement.
Robustness — does the result hold away from the chosen operating point? Placebo cutoffs, parameter plateaus rather than spikes, consistency across eras, and P&L concentrated in a small subset of names.
Execution realism — does the edge survive execution at a real venue? Cost sweeps and break-even headroom, funding settlements, borrow against the observed band, and short availability.
Capacity — is the size you intend to trade supported by the liquidity available? Trade size against accessible volume, and the headroom remaining.
One question most tools never ask: how many strategy variants did you test before choosing this one? Every variant. Including those discarded.
| You declare | The verdict |
|---|---|
| 1 trial | Survives |
| 200 trials | Not distinguishable from luck |
Nothing about the strategy changed — only the declared size of the search. That number is what the statistical checks run on, which is why Straud (full version) keeps a trial ledger.
Every audit returns one verdict, a list of findings, and a list of what was not tested.
| Verdict | What it means |
|---|---|
| Survives | Passed every test applied. |
| Conditional | Real signal, but survival depends on assumptions that probably do not hold live. |
| Unproven | No critical finding, but the trial-adjusted edge is not distinguishable from zero. |
| Fatal | A confirmed critical finding. Do not trade this strategy. |
| Severity | What it means | |
|---|---|---|
| · | Note | Contextual information. No defect identified. |
| ▲ | Caution | Verify before relying on this result. |
| ⚠ | Serious | A real defect. Deploying without addressing it is a decision, not an oversight. |
| 🔴 | Critical | The result does not support the claim being made. |
| Confidence | What it means |
|---|---|
| Confirmed | The test ran and it fails deterministically. |
| Likely | The test indicates it, but an assumption could explain it. |
| Possible | A heuristic flag that needs your own domain knowledge. |
A finding from a deployed live strategy — by Straud.
Verdict: Conditional — real signal, but survival depends on assumptions that probably do not hold live.
| n | n effective | Sharpe / obs | trials declared | deflated Sharpe |
|---|---|---|---|---|
| 1,234 | 974 | 0.145 | 8 | 0.996 |
3 findings: 1 Serious · 2 Note
⚠ Serious — Robustness · Confirmed
By how often an entity appears — 1×: n=596, −139bp; 2×: n=294, +889bp; 3–5×: n=297, +1883bp; 6+×: n=47, +1122bp. Entities seen once carry −139bp over 596 events, against +1369bp for recurring ones (difference t +6.10).
What this means: the P&L is not concentrated in a few names (top 2 = 3% of winnings), so this is not a fake sample. It is a conditional edge: recurrence is part of the signal, and the one-appearance majority dilutes the headline.
Cost of ignoring: trading the whole universe at a size justified by an edge only the recurring subset supplies.
Remedy: condition on recurrence explicitly and re-test, or report first-time and repeat entities separately. Do not average them.
· Note — Statistical validity · Confirmed
Across 8 declared trials the expected maximum under the null is 0.047 — deflated Sharpe 0.996.
· Note — Statistical validity · Confirmed
Question: across everything ever run against this data — including discarded variants and earlier sessions — is the true count below ~170,049? If not, this becomes Critical.
The research had clustered by date (correctly), but had never checked
concentration by symbol. Those are different defects, and fixing one does
nothing about the other.
Straud (full version) produces all of it: the measurement, the mechanism,
and the remedy.
The free version names the finding and its severity.
Straud is a tool that criticises statistical work, so it is built to be judged the same way. Its calibration is published in full — the corpus it was tested against, the results it produced, and the limits it found — every claim on this page can be checked independently.