Stock Strategy Backtester
Version Notice
- -
1.0.0 and 1.0.1 are deprecated. - Use
1.0.2 or newer only. - Deprecation reason: early versions bundled non-core marketplace automation files and may trigger security scanner warnings in some environments.
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. - INLINECODE10 : buy oversold and exit on momentum recovery.
- INLINECODE11 : 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:
- INLINECODE20
- INLINECODE21
- INLINECODE22
- INLINECODE23
- INLINECODE24
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: INLINECODE27
股票策略回测工具
版本说明
- - 1.0.0 和 1.0.1 版本已弃用。
- 仅使用 1.0.2 或更新版本。
- 弃用原因:早期版本捆绑了非核心的市场自动化文件,可能在某些环境中触发安全扫描器警告。
概述
通过每日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