第三周内侧期货动量 + 波动率策略回测与仿真交易之旅
  清诂 9天前 66 0

策略思路:动量 + 波动率

  • 动量(RSI):用相对强弱指数判断市场是 “过热” 还是 “过冷”,RSI>55 时认为趋势向上,RSI<45 时认为趋势向下。
  • 波动率(ATR):用平均真实波幅衡量市场波动大小,只有当波动放大时才入场,避免在 “死水一潭” 的行情里浪费手续费。
    我的核心交易逻辑很简单:
    当 RSI>55 且 ATR 突破阈值时,开多仓;
    当 RSI<45 且 ATR 突破阈值时,开空仓;
    出现反向信号或触发止损 / 止盈时,立即平仓。
    后续测试其他品类将其他品类换成石油
    1.png

调整过程:从黄金到原油,一步步修改策略

  1. 合约标的修改
    最开始的代码是针对黄金(AU)主力合约写的,我需要把它改成原油(SC)。
    在initialize函数里,把context.gold_underlying = 'AU’改成了context.crude_underlying = ‘SC’。
    在_preload_daily_history函数里,把数据获取的合约代码从"AU_DOMINANT.SHF"改成了"SC_DOMINANT.SHF"。

  2. 数据加载与清洗
    为了让回测更准确,我专门写了数据加载函数_load_crude_oil_history:
    用panda_data.get_market_data从行情服务器拉取原油主力合约在回测区间(2025.03.10-2026.03.06)内的日线收盘价。
    把日期格式从YYYY-MM-DD改成YYYYMMDD,方便后续计算。
    去掉了收盘价为 NaN 的行,得到一个干净、按时间排序的价格序列。

3.交互式参数调整
在 PandaAI 的策略编辑器里,我可以很方便地修改策略参数:
仓位大小:把默认的动态仓位改成了每次固定交易 24 手(根据资金和风险承受力调整)。
RSI 周期:保持了默认的 14 天,这是最经典的设置。
阈值:把 RSI 的开仓阈值设为 55(多头)和 45(空头),过滤掉一些假信号。
2.png

回测结果:有惊喜,也有教训

核心数据
总收益:21.35%
年化收益:22.23%
最大回撤:-31.81%
夏普比率:0.50023.png4.png5.png

结果反思

从收益概览图可以看到,策略在大部分时间里是跑输基准(原油本身的走势)的,尤其是在 2025 年下半年到 2026 年初,出现了超过 30% 的最大回撤,这让我意识到:
这套策略在趋势行情里表现不错,但在震荡行情里会频繁止损,导致回撤过大。
夏普比率只有 0.5,说明风险调整后的收益并不理想,需要进一步优化风控。

最后一次编辑于 9天前 0

暂无评论

推荐阅读