Reproducible Quant Backtests: Deterministic Data, Deterministic Decisions
Backtests become misleading when data snapshots, fee assumptions, or rebalance timing shift silently between runs. The cure is a reproducibility contract.
Step 1: Version market data snapshots
snapshot_id = f"equities-{as_of_date}-{source_hash}"
store_snapshot(snapshot_id, rows)
Step 2: Freeze execution assumptions in config
fees_bps: 8
slippage_bps: 5
rebalance: weekly
execution_time_utc: "20:00"