Straud

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:

  • more variants were tested than the result can support
  • hidden costs were larger than the edge
  • your rules used information that did not exist yet
  • the profit came from a small subset of symbols, etc.

backtestlive

Every reason it turned is already in the results behind the rising half.

Straud finds all that apply — with the evidence behind each, and what to do before you rely on it again.

Runs locally offline · no account · no subscription · no data leaves your machine


What Straud checks

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.

The same 12 trades, counted two ways by date 8 days by symbol 3 symbols Clustering by date leaves the sample looking eight-wide. The edge is really three names, and no fix on one axis touches the other.

Selection pressure

One question most tools never ask: how many strategy variants did you test before choosing this one? Every variant. Including those discarded.

example_trades.csv · same data, more declared trials1.00deflatedSharpe1520100500declared trialsSurvivesFatal

Nothing about the data changed along that curve — 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.


What Straud reports

Every audit returns one verdict, a list of findings, and a list of what was not tested.

Verdict

Survives Conditional Unproven Fatal passed everytest applied real signal, onassumptions not separablefrom luck result not usable


Severity

· Note▲ Caution⚠ Serious🔴 Criticalno defectverify firsta real defectclaim unsupportedhow bad, if true


Confidence

how sure Straud isConfirmedLikelyPossiblean assumption could explain ita heuristic flag · needs your judgement


Real-world use case

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

The edge lives in entities that RECUR, not in the universe

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

Survives the trial count supplied

Across 8 declared trials the expected maximum under the null is 0.047 — deflated Sharpe 0.996.


· Note — Statistical validity · Confirmed

This result survives up to ~170,049 tested variants

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.


Why trust us?

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.

See the evidence →