关于 backtesting-trading-strategies
面向量化研究和交易策略开发者的历史数据回测技能,提供内置策略、风险与绩效指标、参数网格搜索及图表输出。模拟结果仅反映历史数据,不代表未来表现。
主要功能
- 01提供 8 种内置交易策略
- 02计算绩效与风险指标
- 03网格搜索优化参数
- 04生成权益曲线图
- 05导出逐笔交易分析
适用场景
- 01比较不同策略的历史表现
- 02检查策略的回撤与风险指标
- 03搜索策略参数组合
- 04查看交易记录和权益曲线
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jeremylongshore/ tons-of-skills-marketplace --skill backtesting-trading-strategies安装后在 Claude Code 中输入/backtesting-trading-strategies确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
commands/backtest-strategy.mdcompare-strategies.mdoptimize-parameters.mdwalk-forward.mdconfig/settings.yamlreferences/errors.mdexamples.mdimplementation.mdscripts/backtest.pyfetch_data.pymetrics.pyoptimize.pystrategies.pytests/test_metrics.pytest_strategies.py详细介绍
交易策略回测
概述
使用历史数据模拟交易策略。结果描述的是历史模拟,而非对未来表现的预期。该框架包含 8 种内置策略、下列指标以及参数优化功能。
主要功能:
- 8 种预置交易策略(SMA、EMA、RSI、MACD、布林带、突破、均值回归、动量)
- 绩效指标(Sharpe、Sortino、Calmar、VaR、最大回撤)
- 参数网格搜索优化
- 资产曲线可视化
- 逐笔交易分析
先决条件
调用此技能前,用户需在模拟所用的 Python 环境中安装所需依赖:
set -euo pipefail
pip install pandas numpy yfinance matplotlib
高级功能的可选依赖:
set -euo pipefail
pip install ta-lib scipy scikit-learn
说明
-
获取历史数据(缓存到
${CLAUDE_SKILL_DIR}/data/以供重复使用):python ${CLAUDE_SKILL_DIR}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d -
使用默认或自定义参数运行回测:
python ${CLAUDE_SKILL_DIR}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y python ${CLAUDE_SKILL_DIR}/scripts/backtest.py \ --strategy rsi_reversal \ --symbol ETH-USD \ --period 1y \ --capital 10000 \ --params '{"period": 14, "overbought": 70, "oversold": 30}' -
分析保存到
${CLAUDE_SKILL_DIR}/reports/的结果——包括*_summary.txt(绩效指标)、*_trades.csv(交易记录)、*_equity.csv(资产曲线数据)和*_chart.png(可视化资产曲线)。 -
通过网格搜索优化参数,寻找最佳组合:
python ${CLAUDE_SKILL_DIR}/scripts/optimize.py \ --strategy sma_crossover \ --symbol BTC-USD \ --period 1y \ --param-grid '{"fast_period": [10, 20, 30], "slow_period": [50, 100, 200]}'
输出
绩效指标
| 指标 | 描述 |
|---|---|
| 总回报 | 总体百分比收益/亏损 |
| CAGR | 复合年增长率 |
| Sharpe 比率 | 历史风险调整后回报 |
| Sortino 比率 | 下行风险调整后回报 |
| Calmar 比率 | 回报除以最大回撤 |
风险指标
| 指标 | 描述 |
|---|---|
| 最大回撤 | 最大峰谷跌幅 |
| VaR(95%) | 95% 置信度下的风险价值 |
| CVaR(95%) | 超出 VaR 的预期损失 |
| 波动率 | 年化标准差 |
交易统计
| 指标 | 描述 |
|---|---|
| 交易总数 | 完整往返交易的次数 |
| 胜率 | 盈利交易所占百分比 |
| 盈利因子 | 总毛利润除以总毛亏损;未观察到亏损时为 N/A |
| 期望值 | 每笔交易的预期价值 |
输出示例
不含图表的布局;实际数值取决于输入序列、费用、滑点、策略和参数。不要将这些占位值作为实测回报呈现。
HISTORICAL SIMULATION: [strategy]
[symbol] | [start_date] to [end_date]
Total Return: [computed] | Max Drawdown: [computed]
Sharpe Ratio: [computed] | Win Rate: [computed]
Total Trades: [observed] | Profit Factor: [computed or N/A]
未观察到亏损交易时,盈利因子不可用,包括零交易运行或仅有一笔盈利/盈亏平衡交易的情况。仅有一笔亏损交易时,总毛利润除以其亏损所得为零;这并不能证明策略质量。零笔或一笔交易的样本无法证明策略表现,而优化是对样本内历史数据的比较,不是预测。
支持的策略
| 策略 | 描述 | 关键参数 |
|---|---|---|
sma_crossover | 简单移动平均线交叉 | fast_period、slow_period |
ema_crossover | 指数移动平均线交叉 | fast_period、slow_period |
rsi_reversal | RSI 超买/超卖 | period、overbought、oversold |
macd | MACD 信号线交叉 | fast、slow、signal |
bollinger_bands | 布林带均值回归 | period、std_dev |
breakout | 价格突破区间 | lookback、threshold |
mean_reversion | 回归移动平均线 | period、z_threshold |
momentum | 变化率动量 | period、threshold |
配置
创建 ${CLAUDE_SKILL_DIR}/config/settings.yaml:
data:
provider: yfinance
cache_dir: ./data
backtest:
default_capital: 10000 # Starting simulated capital in quote-currency units
commission: 0.001 # 0.1% per trade
slippage: 0.0005 # 0.05% slippage
risk:
max_position_size: 0.95
stop_loss: null # Optional fixed stop loss
take_profit: null # Optional fixed take profit
错误处理
使用 Read 查看 references/errors.md,了解常见问题及解决方案。
示例
请参阅 references/examples.md,了解详细用法示例,包括:
- 多资产比较
- 滚动前向分析
- 参数优化工作流
文件
| 文件 | 用途 |
|---|---|
scripts/backtest.py | 主要回测引擎 |
scripts/fetch_data.py | 历史数据获取器 |
scripts/strategies.py | 策略定义 |
scripts/metrics.py | 绩效计算 |
scripts/optimize.py | 参数优化 |
资源
- yfinance - Yahoo Finance 数据
- TA-Lib - 技术分析库
- QuantStats - 投资组合分析