Research reports
Every backtest run stores a machine-readable report in backtest_runs (metrics, provenance, artifacts) and is
rendered at /reports/<id> (printable) with CSV (/api/backtests/<id>/trades.csv) and JSON (/api/backtests/<id>).
A report answers, for one strategy × symbol × interval:
- Economic hypothesis and failure modes (from
StrategyMeta). - Universe & data coverage: window, number of closed bars, dataset hash, gaps.
- Parameters (validated against the
ParamSpecs) and the cost model actually used. - In-sample performance with uncertainty: block-bootstrap CI on Sharpe/CAGR, deflated Sharpe given the number
of configurations tried (
n_trials). - Out-of-sample: holdout segment (never used for selection) and walk-forward folds (train → test, embargo).
- Implementation costs: fee drag, slippage drag, turnover, partial fills, rejected orders.
- Stress: fees ×2, spread ×3, +20 bps slippage, +1 bar latency, liquidity collapse, exchange outage gap, shuffled-trade drawdown distribution.
- Benchmarks on the same window and costs: buy & hold, cash, simple momentum, constant-vol long.
Strategies stay experimental: true until a documented OOS evaluation on ≥ 1 year of data supports them.
Current data coverage (accumulating since first deployment) is far too short for any claim — the report says so.