关于 backtesting-trading-strategies
面向量化交易研究者的历史数据回测技能,包含 8 种策略、绩效与风险指标及参数网格搜索,可将结果保存为报告和曲线图。
主要功能
- 01提供 8 种内置交易策略
- 02计算绩效与风险指标
- 03网格搜索优化参数
- 04生成权益曲线可视化
- 05导出交易记录和报告
适用场景
- 01用历史行情评估策略表现
- 02比较策略的回撤和风险指标
- 03搜索策略参数组合
- 04检查逐笔交易与权益曲线
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gracefullight/ stock-checker --skill backtesting-trading-strategies安装后在 Claude Code 中输入/backtesting-trading-strategies确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
config/settings.yamlreferences/errors.mdexamples.mdimplementation.mdscripts/backtest.pyfetch_data.pymetrics.pyoptimize.pystrategies.py详细介绍
回测交易策略
概述
在投入真实资金之前,使用历史数据验证交易策略。此技能提供一套完整的回测框架,内置 8 种策略,包含全面的绩效指标和参数优化功能。
主要功能:
- 8 种预置交易策略(SMA、EMA、RSI、MACD、布林带、突破、均值回归、动量)
- 完整的绩效指标(Sharpe、Sortino、Calmar、VaR、最大回撤)
- 参数网格搜索优化
- 权益曲线可视化
- 逐笔交易分析
前提条件
安装所需依赖:
pip install pandas numpy yfinance matplotlib
高级功能的可选依赖:
pip install ta-lib scipy scikit-learn
使用说明
第 1 步:获取历史数据
python {baseDir}/scripts/fetch_data.py --symbol BTC-USD --period 2y --interval 1d
数据会缓存到 {baseDir}/data/{symbol}_{interval}.csv,以便重复使用。
第 2 步:运行回测
使用默认参数进行基本回测:
python {baseDir}/scripts/backtest.py --strategy sma_crossover --symbol BTC-USD --period 1y
使用自定义参数进行高级回测:
# Example: backtest with specific date range
python {baseDir}/scripts/backtest.py \
--strategy rsi_reversal \
--symbol ETH-USD \
--period 1y \
--capital 10000 \
--params '{"period": 14, "overbought": 70, "oversold": 30}'
第 3 步:分析结果
结果会保存到 {baseDir}/reports/,包括:
*_summary.txt- 绩效指标*_trades.csv- 交易记录*_equity.csv- 权益曲线数据*_chart.png- 权益曲线图
第 4 步:优化参数
通过网格搜索查找最优参数:
python {baseDir}/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 比率 | 风险调整后收益(目标:>1.5) |
| Sortino 比率 | 经下行风险调整后的收益 |
| Calmar 比率 | 收益除以最大回撤 |
风险指标
| 指标 | 描述 |
|---|---|
| 最大回撤 | 从峰值到谷值的最大跌幅 |
| VaR (95%) | 置信度为 95% 时的风险价值 |
| CVaR (95%) | 超出 VaR 的预期损失 |
| 波动率 | 年化标准差 |
交易统计
| 指标 | 描述 |
|---|---|
| 交易总数 | 完整买入卖出交易的数量 |
| 胜率 | 盈利交易的百分比 |
| 盈利因子 | 总盈利除以总亏损 |
| 期望值 | 每笔交易的预期价值 |
输出示例
================================================================================
BACKTEST RESULTS: SMA CROSSOVER
BTC-USD | [start_date] to [end_date]
================================================================================
PERFORMANCE | RISK
Total Return: +47.32% | Max Drawdown: -18.45%
CAGR: +47.32% | VaR (95%): -2.34%
Sharpe Ratio: 1.87 | Volatility: 42.1%
Sortino Ratio: 2.41 | Ulcer Index: 8.2
--------------------------------------------------------------------------------
TRADE STATISTICS
Total Trades: 24 | Profit Factor: 2.34
Win Rate: 58.3% | Expectancy: $197.17
Avg Win: $892.45 | Max Consec. Losses: 3
================================================================================
支持的策略
| 策略 | 描述 | 关键参数 |
|---|---|---|
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 |
配置
创建 {baseDir}/config/settings.yaml:
data:
provider: yfinance
cache_dir: ./data
backtest:
default_capital: 10000
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
错误处理
常见问题及解决方案请参阅 {baseDir}/references/errors.md。
示例
详细用法示例请参阅 {baseDir}/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 - 投资组合分析
评论
支持 Markdown