{"slug":"how-to-backtest-a-trading-strategy","qid":"backtest_runs","label":"Three runs of backtest.py on the illustrative 60-bar file","post_title":"How to Backtest a Trading Strategy in Python","post_url":"/blog/how-to-backtest-a-trading-strategy#q-backtest_runs","columns":["run","total_return_pct","max_drawdown_pct","round_trips"],"rows":[{"run":"raw tape","total_return_pct":-49.84,"max_drawdown_pct":-50.01,"round_trips":2},{"run":"split-adjusted","total_return_pct":1.19,"max_drawdown_pct":-3.91,"round_trips":2},{"run":"split-adjusted, 0.1% slippage","total_return_pct":0.69,"max_drawdown_pct":-3.9,"round_trips":2}],"shape":"ranking","sql":"SELECT\n    run,\n    total_return_pct,\n    max_drawdown_pct,\n    round_trips\nFROM\n(\n    SELECT 1 AS step, 'raw tape' AS run, -49.84 AS total_return_pct, -50.01 AS max_drawdown_pct, 2 AS round_trips\n    UNION ALL\n    SELECT 2, 'split-adjusted', 1.19, -3.91, 2\n    UNION ALL\n    SELECT 3, 'split-adjusted, 0.1% slippage', 0.69, -3.90, 2\n)\nORDER BY step","computed_at":"2026-09-16T15:07:18.647099+00:00","elapsed":0.007320736}