未来函数:我们差点被自己的回测骗了

未来函数:我们差点被自己的回测骗了 - Phoenix Wise Web Design & SEO Toronto

系统第一次跑完回测,屏幕上显示了一个让全队兴奋的数字:58.2%的高信心交易胜率。

我们高兴了大约45分钟。

然后伟博说了一句话:”等等,这个数字太好了。让我查一下。”

十五分钟后,他发来了确认结果:”发现未来函数泄漏。指纹库的品种偏向没有做时间过滤。”

这一刻,58.2%变成了一个谎言。


什么是未来函数

如果你做过量化回测,看到”未来函数”三个字可能已经脊背发凉了。如果你没做过,让我用最直白的方式解释。

假设你做了一套系统,用2020年到2025年的数据做回测。系统在2022年3月给出了一个”看涨欧元”的信号,回测显示这个信号是对的,你很高兴。

但问题是:系统在做这个判断的时候,有没有偷偷用到了2022年3月之后才出现的数据?

如果用到了,那你的回测就是在”开卷考试”。系统看到了未来的答案,当然做得对。但到了实盘环境,没有答案可以偷看了,系统就会原形毕露。

这就是未来函数泄漏(Look-Ahead Bias)。

它的危险之处在于,很难被发现。系统不会告诉你”我作弊了”。它只会给你一个漂亮的回测数字,让你充满信心地走进真实市场,然后被碾碎。


我们的纰漏出在哪里?

上一篇讲过,我们的系统核心是”周期指纹库”:从陶博士的文章中提炼出的三十多个经济周期模式,每个模式都有对应的市场特征。系统的工作方式是把当前市场的数据和这些历史指纹做比对,找出”现在最像历史上的哪个阶段”。

问题出在指纹库的构建方式上。

我们在建库的时候,用了全部历史数据来提取指纹,包括回测期间的数据。这意味着:当系统在回测2022年的情况时,指纹库里已经包含了2022年的信息。系统不需要”预测”,它只需要”记住”。

打个比方:这就像一个学生把考试答案提前背了一遍,然后告诉你他考了90分。

修复方法在概念上很简单:做Walk-Forward(推进式)回测。也就是说,如果系统正在判断2022年3月的情况,它只能看到2022年3月之前的数据。之后的数据必须被严格屏蔽。

实际操作比概念复杂得多。每一个时间点上都需要动态重建指纹库,确保没有任何信息从未来泄漏到过去。Marcus花了好几天才把这套机制完全实现。


修复之后的直面胜率预测的下跌

修复后的数字很难看。

高信心胜率从58.2%掉到了52.5%。差了5.7个百分点,这5.7个百分点就是”作弊”带来的虚假收益。

52.5%,和抛硬币差不多。

但这个数字是真实的。58.2%虽然好看,却是假的。

在量化交易中,一个真实的52%比一个虚假的80%有价值一万倍。因为你可以在真实的基础上做改进,而在虚假的基础上做的任何改进都是空中楼阁。

我们把”发现未来函数泄漏”视为整个项目最重要的里程碑之一。不是因为它带来了好结果,而是因为它防止了一场灾难。如果我们带着58.2%的假信心进入实盘,亏损是必然的。更可怕的是,我们可能很长时间都找不到原因,因为系统本身”看起来没问题”。


五个阶段,一次残酷的进化

52.5%是我们的真实起点。

但故事没有在这里停下。在修复了未来函数泄漏之后,我们重新扩充了指纹库和宏观因子体系,重建了系统的基础。重建后的基线版本,高信心胜率回到了58.2%。这一次,每一个百分点都是干净的,没有任何未来信息的污染。

未来函数:我们差点被自己的回测骗了 - Phoenix Wise Web Design & SEO Toronto未来函数:我们差点被自己的回测骗了 - Phoenix Wise Web Design & SEO Toronto

从这个干净的58.2%出发,我们用了五个阶段的实验,每个阶段只改变一个变量,严格隔离因果关系。

第一阶段:数学洗礼

把所有趋势类宏观指标从”绝对值”转换为”同比变化率”。比如,不看”CPI是3.2%”,而是看”CPI比去年同期上升了0.8个百分点”。

一个看似微小的数学变换,但它改变了系统理解数据的方式。绝对值告诉你”现在在哪”,变化率告诉你”正在往哪走”。对于判断经济周期来说,方向比位置更重要。

结果:高信心胜率微升到58.6%(+0.4个百分点)。改进很小,但方向正确。采纳。

第二阶段:利差矩阵

这是整个实验中最关键的一步。

外汇市场有一条铁律:货币的走向很大程度上由两国利率的差异决定。资金天然会从低利率的地方流向高利率的地方。我们构建了主要货币对之间的利差矩阵,让系统理解”相对宏观”而不只是”单边宏观”。

这个改动的灵感直接来自陶博士。他在2014年的文章里反复强调”大分化”:美联储在收紧,欧洲央行在放松,日本央行在加码。三大央行第一次同时朝着三个完全不同的方向走。陶博士没有孤立地分析每个央行,而是分析它们之间的差异。我们的利差矩阵,本质上就是把他的这种思维方式数量化了。

结果:高信心胜率从58.6%跳升到65.1%(+6.5个百分点)。这是五个阶段中最大的单步提升。采纳。

第三阶段:市场隐含宏观

美联储的经济数据是月度或季度发布的,天然滞后。但市场不会等数据。市场每时每刻的价格里,已经隐含了对宏观环境的实时判断。

我们加入了几个”市场隐含宏观”指标:铜金比(Copper/Gold Ratio,反映市场对经济增长的预期),信用利差(Credit Spread,反映市场的风险偏好)。

验证过程中有一个发现让团队非常兴奋:这些市场隐含信号比官方数据领先一到三个月。2020年4月COVID崩盘时,我们的隐含宏观指标打出了负111分(极度收缩),比官方经济数据的反应快了整整一个季度。

但直接叠加效果不好,因为它和利差矩阵的信号互相”抵消”了。最终方案是按品种分治:外汇品种主要看利差,大宗商品品种主要看隐含宏观。

结果:高信心胜率升到67.6%(+2.5个百分点)。采纳。

第四阶段:财政因子

这是最痛苦的一个阶段。

我们加入了美国财政部TGA账户余额和经济意外指数(Economic Surprise Index),希望捕捉财政政策对市场的影响。花了不少时间研究和调试。

结果:高信心胜率从67.6%暴跌到60.1%(-7.5个百分点)。

更糟糕的是,高信心样本数从222次膨胀到363次。这意味着财政因子把大量本该被标记为”中等信心”的信号错误地提升为”高信心”,稀释了整个高信心池的质量。

决策:果断抛弃。回退到第三阶段的版本。

这个决策的痛苦在于,我们在财政因子的研究上投入了很多时间和精力。但数据说它有害,就必须砍掉。在量化交易中,”尊重数据、拒绝沉没成本”不是口号,是生存法则。

很多量化团队死在这一步。不是技术不行,是舍不得。

第五阶段:环境细分
最后一次尝试。我们把笼统的”金发女郎经济”(Goldilocks,经济学中形容”不冷不热刚刚好”的经济环境)拆分成五个子类:纯金发女郎、晚周期、减速期、衰退前夜、早周期。
结果很有意思:总体准确率反而下降了。但在子类内部发现了极有价值的信息。比如”晚周期”环境下高信心胜率达到76.8%,”衰退前夜”达到71.8%。

最终决策:不用这个版本做预测,而是把它改造为”审核层”。上一个版本继续负责信号判断,这个版本只负责”环境体检”。当环境标签为”减速期”或”早周期”时,系统自动降低仓位或拒绝交易。


未来函数:我们差点被自己的回测骗了 - Phoenix Wise Web Design & SEO Toronto未来函数:我们差点被自己的回测骗了 - Phoenix Wise Web Design & SEO Toronto

最终成绩单

五个阶段的完整演进:

重建后基线(高信心):58.2% 第一阶段 数学洗礼(+0.4):58.6% 第二阶段 利差矩阵(+6.5):65.1% 第三阶段 市场隐含宏观(+2.5):67.6% 第四阶段 财政因子(-7.5):60.1%,被抛弃,回退到67.6% 第五阶段 环境细分:作为审核层保留,不参与预测

最终锁定版本经过Walk-Forward严格验证后:

全量准确率:53.9%。高信心交易胜率:71.8%。被系统否决的信号中,44.4%事后证明确实应该被否决。

其中英镑兑美元的表现最引人注目:从修复前的29.6%(严重亏损)逆袭到77.8%。原因是利差矩阵对英镑的定价能力特别强。英国和美国之间的利率政策差异,是英镑走势最主要的驱动因素。而这个判断的根基,又可以追溯到陶博士2014年”大分化”分析中关于英国央行独立性的那些论述。


接近真实的成绩单

53.9%的全量准确率看起来不高。但在外汇日线级别的交易中,这个数字配合合理的风险收益比和仓位管理,是可以实现正期望值的。我们不追求”每次都对”,追求的是”对的时候赚得比错的时候亏得多”。

71.8%的高信心胜率是一个严格筛选后的子集。系统不是对每一个信号都出手,而是只在信心最高的时刻交易。其余时间,它选择不做。在量化交易中,”不做”往往比”做错”更有价值。

而第四阶段财政因子被果断抛弃这件事,可能是整个研发过程中最重要的决策。不是因为它省了多少钱,而是因为它证明了团队有纪律。当数据告诉你”这个方向不对”的时候,你能不能放下已经投入的时间和精力,冷静地转身?


但这还不是终点

回测通过了,胜率看起来不错。但伟博在一次讨论中泼了一盆冷水。

他指出了一个根本性的问题:我们的指纹库只有96个历史实例。在这96个样本上反复调参数,本质上是在”背答案”。就像一个学生只做了10道数学题,然后反复改答题策略让这10道题全对。看起来100分了,但换一套新卷子可能不及格。

这个问题叫做”过拟合”(Overfitting),是量化交易中仅次于未来函数的第二大杀手。

伟博的建议很直接:先不要再调参数了。现在最需要做的不是优化模型,而是扩充指纹库。从96个实例扩展到200个以上,让回测的统计基础更扎实。地基不够大的时候,上面盖的楼再漂亮也站不住。

他说的对。

于是我们暂停了模型优化,把精力重新投回到数据收集和整理上。我们扩充了数据来源,补充了更多历史年份的市场数据,最终把指纹库扩展到了超过150个实例。然后重新跑回测。

这一轮回测的结果比第一轮好得多。不是因为我们调了更多参数,而是因为样本量变大了,统计规律更稳定了。美元兑日元的准确率从最初的22%(几乎完全反向)提升到了55.6%。黄金维持在66.7%的水准。2023和2024两个新增年份的准确率分别达到61.1%和66.7%。

地基做得越大、越牢固,上层建筑才有可能做大做强。这句话听起来像老生常谈,但在量化交易中,它是用真金白银换来的教训。


下一篇讲一个更大的工程挑战:当宏观面说”看涨”但技术面说”看跌”的时候,系统听谁的?在我们的初始架构中,技术面信号以98.4%的压倒性优势碾压了宏观面。宏观信号几乎被系统性地”一票否决”了。

解决这个问题的过程中,我们做出了整个项目最重要的架构创新。


*本文是「量化交易系统研发手记」系列第5篇,共8+篇。上一篇:「一个”错误”的标注,改变了整个项目:深度学习陶博士(下)」。下一篇:「当宏观和技术面打架」*


多伦多凤凰创意网站设计开发公司原创博客,版权所有,请勿转载! 更多多伦多实战网站案例,请点击这里

读者评价

0.0
Rated 0 out of 5
0 out of 5 stars (based on 0 reviews)
Excellent0%
Very good0%
Average0%
Poor0%
Terrible0%

There are no reviews yet. Be the first one to write one.

留下您的评价