用途
Backtest 用于将交易策略想法转化为可量化的结果。用户提供入场规则和出场规则后,该技能会将其应用到真实历史数据上,报告策略的实际表现,而不是停留在理论层面。它适合验证某条入场或出场规则是否有效,或比较不同策略的优劣。
主要能力
- 使用真实历史数据对策略进行回测,输出具体数值结果。
- 支持两种实现模式:向量化回测(适用于 EMA 交叉、RSI 阈值等简单信号策略)和事件驱动回测(适用于带止损、移动止损、仓位管理或条件退出的复杂逻辑)。
- 计算绩效指标,包括总收益、最大回撤、夏普比率、胜率和盈亏比。
- 支持前视偏差、幸存者偏差、过拟合、选择偏差和交易成本等常见回测偏差的识别与缓解。
- 支持走步式分析(Walk-Forward Analysis),在训练窗口优化参数、在测试窗口评估,以捕捉单次训练/测试划分遗漏的过拟合。
- 可生成权益曲线、回撤和对比图表(使用 matplotlib),输出到 output/ 目录。
- 提供策略示例模式,如 EMA 交叉、RSI 均值回归、布林带突破、MACD 信号交叉、RSI + EMA 汇合等。
- 提供市场状态意识参考,说明趋势跟踪、均值回归和突破策略各自适用的市场环境。
使用方式
使用前需先明确入场逻辑、出场逻辑以及标的币种和时间周期。用户可能已有 scripts/ 目录下的脚本,可先阅读、理解、修复或扩展已有代码,而非从零重建。通常编写独立脚本到 scripts/ 目录,运行后查看输出,并讨论数字含义。脚本应独立运行,使用 requests 和 os.getenv() 获取 API 密钥,不依赖内部导入或 dotenv。默认参数为 180 天、日线、仅做多、无手续费,可根据需要调整。运行脚本后再讨论结果。
适用场景
适用于验证交易策略的入场或出场规则、比较不同策略表现、在讨论结果前先获得数据支撑的场景。也适用于需要向用户解释夏普比率、回撤等指标实际含义的对话场景。
限制
CoinGecko /ohlc?days=N 接口会自动选择K线粒度:1-2天为30分钟,3-30天为4小时,31天以上为日线。这是 CoinGecko API 的行为,并非套餐限制。若需4小时K线,DAYS 应不超过30。OHLC 接口不提供成交量数据,基于成交量的指标需从 market chart 接口单独获取。默认不建模滑点和手续费,如需更真实结果可添加 fee_pct = 0.001(0.1%)。路径相对于工作区,bash 当前目录已是工作区,因此应写入 scripts/foo.py 而非 workspace/scripts/foo.py。