Stock Strategy Backtester Clean
Version Notice
- - Use this clean slug if your environment pins to
stock-strategy-backtester-clean.
Overview
Run repeatable, long-only stock strategy backtests from daily OHLCV CSV files.
Use bundled scripts to generate consistent metrics and trade-level output, then summarize with investor-friendly conclusions.
Quick Start
- 1. Prepare a CSV with at least
Date and Close columns. - Run a baseline backtest:
CODEBLOCK0
- 3. Export artifacts for review:
CODEBLOCK1
Workflow
- 1. Validate data
- - Ensure
Date is parseable and sorted ascending. - Ensure
Open/High/Low/Close are numeric; missing Open/High/Low falls back to Close.
- 2. Pick strategy logic
- -
sma-crossover: trend-following with fast/slow moving averages. - INLINECODE8 : buy oversold and exit on momentum recovery.
- INLINECODE9 : enter on highs breakout and exit on lows breakdown.
- 3. Set realistic assumptions
- - Always set
--commission-bps and --slippage-bps. - Avoid reporting cost-free backtests as production-ready.
- 4. Compare variants
- - Change one parameter block at a time.
- Compare on the same date range and same cost model.
- 5. Produce final summary
- - Report:
total_return_pct, cagr_pct, win_rate_pct, max_drawdown_pct, sharpe_ratio, profit_factor, and trade count. - Use trade CSV to explain where alpha is coming from.
Supported Commands
CODEBLOCK2
CODEBLOCK3
- - JSON-only output (for automation pipelines):
CODEBLOCK4
Output Contract
- - Script prints a JSON object to stdout with:
- INLINECODE18
- INLINECODE19
- INLINECODE20
- INLINECODE21
- INLINECODE22
Analysis Guardrails
- 1. Use out-of-sample logic
- - Prefer walk-forward validation over one-shot tuning.
- 2. Avoid leakage
- - Compute signals from bar
t, execute at bar t+1 open.
- 3. Report downside with upside
- - Never present return without drawdown and trade count.
- 4. Treat results as research
- - Backtests are not guarantees and should not be framed as financial advice.
References
- - Metrics details: INLINECODE25
股票策略回测器(纯净版)
版本说明
- - 若您的环境固定使用stock-strategy-backtester-clean,请使用此纯净标识符。
概述
基于每日OHLCV CSV文件运行可重复的纯多头股票策略回测。使用内置脚本生成一致的指标和交易级输出,并通过投资者友好的结论进行总结。
快速开始
- 1. 准备至少包含Date和Close列的CSV文件。
- 运行基准回测:
bash
python scripts/backtest_strategy.py \
--csv /path/to/prices.csv \
--strategy sma-crossover \
--fast-window 20 \
--slow-window 60
- 3. 导出结果供审查:
bash
python scripts/backtest_strategy.py \
--csv /path/to/prices.csv \
--strategy rsi-reversion \
--rsi-period 14 \
--rsi-entry 30 \
--rsi-exit 55 \
--commission-bps 5 \
--slippage-bps 2
工作流程
- 1. 数据验证
- - 确保Date列可解析且按升序排列。
- 确保Open/High/Low/Close列为数值型;缺失Open/High/Low时回退至Close列。
- 2. 选择策略逻辑
- - sma-crossover:基于快慢移动平均线的趋势跟踪策略。
- rsi-reversion:买入超卖资产,在动能恢复时退出。
- breakout:突破高点时入场,跌破低点时离场。
- 3. 设定现实假设
- - 务必设置--commission-bps和--slippage-bps参数。
- 避免将零成本回测结果视为可投产方案。
- 4. 比较变体
- - 每次仅更改一个参数模块。
- 在相同日期范围和相同成本模型下进行比较。
- 5. 生成最终总结
- - 报告指标:totalreturnpct、cagrpct、winratepct、maxdrawdownpct、sharperatio、profit_factor及交易次数。
- 使用交易CSV文件解释超额收益来源。
支持的命令
bash
python scripts/backtest_strategy.py \
--csv /path/to/prices.csv \
--strategy sma-crossover \
--fast-window 10 \
--slow-window 50
bash
python scripts/backtest_strategy.py \
--csv /path/to/prices.csv \
--strategy breakout \
--lookback 20
bash
python scripts/backtest_strategy.py \
--csv /path/to/prices.csv \
--strategy rsi-reversion \
--quiet
输出约定
- - 脚本向标准输出打印JSON对象,包含:
- strategy
- period
- metrics
- config
- trades
分析护栏
- 1. 使用样本外逻辑
- 2. 避免信息泄露
- - 基于第t根K线计算信号,在第t+1根K线开盘时执行。
- 3. 同时报告收益与风险
- 4. 将结果视为研究参考
参考资料
- - 指标详情:references/backtest-metrics.md