# Research reports Every backtest run stores a machine-readable report in `backtest_runs` (`metrics`, `provenance`, `artifacts`) and is rendered at `/reports/` (printable) with CSV (`/api/backtests//trades.csv`) and JSON (`/api/backtests/`). A report answers, for one strategy × symbol × interval: 1. **Economic hypothesis** and failure modes (from `StrategyMeta`). 2. **Universe & data coverage**: window, number of closed bars, dataset hash, gaps. 3. **Parameters** (validated against the `ParamSpec`s) and the cost model actually used. 4. **In-sample performance** with uncertainty: block-bootstrap CI on Sharpe/CAGR, deflated Sharpe given the number of configurations tried (`n_trials`). 5. **Out-of-sample**: holdout segment (never used for selection) and walk-forward folds (train → test, embargo). 6. **Implementation costs**: fee drag, slippage drag, turnover, partial fills, rejected orders. 7. **Stress**: fees ×2, spread ×3, +20 bps slippage, +1 bar latency, liquidity collapse, exchange outage gap, shuffled-trade drawdown distribution. 8. **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.