【回测策略实战检验】我把三张指数 K 线图 + 四个宏观指标,交给了 EVO

HomelessLightHomelessLight··3 浏览

上证站稳均线,纳指趋势向上,恒生科技在低位悄悄修复。
三张K线图似乎在说同一件事——但我决定,不让"感觉"替我下单。

这周的 EVO 任务,和往常不太一样。

以前我研究的是"图形":这只股票像不像双底、那根K线是不是突破。而这一次,我想验证一个更大的判断——宏观。把上证指数、纳斯达克、恒生科技三张图放在一起看,它们各自的信号也许只是噪音,可当三个市场同时指向"宽松预期正在兑现"时,直觉告诉我:这值得被认真对待。

但"感觉要涨"这句话,说出口很容易,拿去交易却一文不值。它没有买点、没有仓位、没有止损,更经不起一句追问:凭什么?

所以这周我给 EVO 的任务只有一句话:把"宏观宽松"这四个字,翻译成一套能回测、能被数据反复质疑的择时策略。

QQ_1788493427341.png

一、先让宏观指标"开口说话"

如果把策略比作一个人,宏观因子就是它的信息输入系统。我给 EVO 指定了四个"消息源",它们共同描绘全球流动性的温度:

宏观指标 权重 释放什么信号时加分
中国 LPR 25% 环比下行 → 国内宽松
美国核心 PCE 35% 同比下行 → 降息空间打开
美国 CPI 20% 同比下行 → 通胀回落交叉验证
美国非农 20% 新增落在 -20 万 \~ +30 万温和区间 → 经济不冷不热

四个指标加权合成一个 0\~1 的宏观得分,再映射成仓位:得分越高越敢买——≥0.7 满仓、0.3\~0.7 半仓、<0.3 空仓。

整个过程里最打动我的一个细节是 PIT 对齐:每一个宏观值都严格按官方发布日"解禁",回测中绝不让未来的数据偷看历史。零前视偏差——这是专业和业余的分水岭,EVO 默认替我做对了。

QQ_1788493866217.png

二、全篇最"真实"的一段:把宏观数据喂进引擎

如果说前面是写策略,那真正消耗时间的是数据工程。EVO 的引擎只认上游因子词表里的标准字段,而我带来的 LPR、PCE、CPI、非农,是它从未见过的新朋友。于是,一场"三顾茅庐"式的报错开始了:

  1. 第一次尝试:在 run.py 里生成 lpr_value 宏观点,不告诉引擎 → 报错 KeyError: 面板字段 lpr_value 未提供。原来引擎只注入它"认识"的字段。
  2. 第二次尝试:把自定义字段写进 FIELDS 声明 → 报错 DataSchemaError: 未知字段 lpr_value。引擎把所有声明字段拿去和上游 4939 个官方因子比对,自定义字段在词表里查无此人。
  3. 被逼无奈:只能用 volume、limit_up 这类"闲置标准字段"覆盖承载宏观数据——然后回测结果给了我狠狠一击:2023 年全年收益 0.0%。volume 被 LPR 的小数(3.45)覆盖后,日均成交额过滤把全市场股票都判成"流动性不足",股票池直接空了。

这一段经历让我明白一个道理,也成了我最想给 EVO 的反馈:

引擎不会因为你破坏了字段的语义而报警,它只会把错误悄悄还给你。
当研究需求超出平台预置数据时,研究者需要一个"自定义数据/宏观面板"的正规入口,而不是靠覆盖标准字段的 hack。

QQ_1788495600395.png

三、第一版成绩单:难看,但诚实

草稿 1 出炉,数字并不漂亮:

总收益 -25.98% · 最大回撤 -25.98% · 夏普 -1.31 · 月度胜率 0.0%

如果只看收益,这版策略可以扔进垃圾桶。但把它拆开看,每一处"难看"都在说话:

  • 2023 全年 0.0% → 字段被覆盖、股票池全空的铁证;
  • 月度胜率 0.0% → 四个宏观指标要同时转松才满仓,阈值苛刻到 90% 的时间在空仓踏空;
  • 回撤几乎贴着基准 → 宏观信号刚转暖、市场还在下跌时就满仓"接飞刀",没有任何趋势保护。

回测结果不好,从来不是失败,而是策略在告诉你:下一步该改哪里。

QQ_1788507731759.png

四、对症下药:回撤砍半,超额转正

EVO 把三个病灶逐一拆解、逐一修复:

病灶 药方
字段冲突导致股票池全空 volume / trade_status 恢复原始含义,宏观改由真正闲置的字段承载
阈值太严、长期踏空 满仓阈值 0.7 → 0.6,空仓阈值降至 0.2,开仓频率大幅提升
抄底总接飞刀 新增沪深300 20/60 日均线趋势滤波,趋势向下时不开新仓

草稿 2 的成绩单:

指标 草稿 1 草稿 2
总收益 -25.98% -10.48%
最大回撤 -25.98% -12.56%
相对沪深300 超额 +27.38%

回撤减半,超额转正。 更可贵的是,没有一步修改是拍脑袋的——每一步都精准对应着上一版暴露的病灶。这就是"回测驱动迭代"该有的样子。下一版,止损、动量过滤、波动率倒数加权已经排上日程,我还要把它丢进历史极端事件的"压力测试"里看看成色。

五、这次体验里,最让我印象深刻的三个瞬间

  1. AI 的调试能力,比它的写码能力更值钱。 前后 6 次运行失败,它每一次都能从控制台报错里准确定位——KeyError 和 DataSchemaError 是两个互相矛盾的坑,它没有乱试,而是摸清引擎的校验机制后,给出了自洽的解法。这种"越挫越勇、越勇越准"的耐心,是研究中最稀缺的品质。
  2. 回测把"赚不赚钱"拆成了一个个可以追问的问题。 为什么胜率是 0%?为什么 2023 年一整年不动?为什么回撤贴着基准?每一个指标都在逼问策略逻辑的漏洞,逼你把"我觉得"换成"数据显示"。
  3. 自然语言驱动的完整闭环。 从"看三张K线图"到"宏观数据合成因子"再到"仓位择时与回测报告",全程没有手写一行框架代码。研究的门槛,第一次被压得这么低。

写在最后

这周最大的收获,不是某一版策略的收益率,而是我终于把 “宏观宽松所以要买” 这种模糊的直觉,变成了一个可以被数据质疑、被参数打磨、被反复验证的研究对象

这次完整流程可以概括为:

三张K线图 → 提炼宏观判断 → 数据源接入 → PIT对齐的因子打分 → 仓位择时 → 全市场回测 → 按病灶迭代

同时也借这篇帖子,把最真诚的建议留给 EVO:给研究者一个自定义宏观/另类数据的正规入口。 等这条路打通,宏观×多因子这类的策略,才能真正从"实验"走向"生产"。

评论

还没有评论,来说点什么吧
0 / 2000