以 2021 年双顶为例,细谈何谓交易策略开发中的「未来数据泄漏」
2025-06-28 14:00
貝格先生
2025-06-28 14:00
貝格先生
2025-06-28 14:00
订阅此专栏
收藏此文章

TLDR


- 谈「未来数据泄漏(Look-ahead bias)」的概念


- 谈交易领域中的命门:过度拟合(Overfitting)


- 2021 年双顶:对于刻舟求剑而言最大的考验


- 三个指标与一个模型的战绩回顾



未來數據洩漏(Look-ahead bias)


试想一个情境:

「假设我开发了一个交易策略,并将这个策略严谨的回测过去 50 年,回测时间是 1975 ~ 2024,并且得到很不错的回测绩效。于是,我便决定在 2025 年启用这一套策略。」


各位读者对于以上描述,有人看出哪里有毛病吗?


如果真的只做 1975 ~ 2024 的回测,其实就很容易陷入「未来数据泄漏」的陷阱之中。

因为我们单纯只用了「至今为止」所有的数据来做回测,这会导致我们训练出来的策略参数,很可能「不耐打」


更严谨的作法是,举例而言:

可以再针对「1975 ~ 2023」(假设我们人在 2024 年),并以训练后的策略,去回测 2024 年整年的绩效;

当然还可以用 1975 ~ 2022 时段的数据去训练策略,然后再拿训练后的策略去回测 2023、2024 的绩效。

更精确来说,我们可以透过「滚动回测」或「步进回测」的方式,去尽可能的避免「未来数据泄漏」。


这样做的好处是「确保训练后的策略,可以接受未来的考验」。



过度拟合(Overfitting):最致命的毒药


只要是稍微有基础量化策略开发概念的人,就会知道 overfitting 能带来的问题有多严重。


所谓 overfitting,用通俗的话语来说就是「刻舟求剑」,这会让回测数据很好看(训练误差低),但却难以应用于实战(测试误差高)。


在此我打算引入一个数学的概念来解释,如果你是看到数学就头疼的读者,可以直接跳到下一段看结论。


假设有一数列:「1 , 2 , 4 , 8 , 16 , ?」

对数字稍微有点敏感的读者,应该都会觉得下一个数字是 32,因为前五项数据明显与「2 的次方」有明显关联。


但事实上,我们其实无法预测下一个数字是多少


因为从数学的角度,我们完全可以利用 Lagrange 插值法,构建另一个高次多项式,让第六个数据不是 32,但也满足规律。

这意味着:「单纯基于有限数据点进行外推的预测,是不可靠的」。



2021 年第二顶:对于多数指标而言最大的考验


讲完无聊的理论观念,接着我们来聊实战。


众所周知,2021 年出现了两个顶部,分别在 4 月和 11 月。

关于 2021 年双顶的话题,之前也在这篇文章聊过,有兴趣的读者可以参考。


以下,我将拿出三个链上数据指标,以及一个我个人开发的模型,为各位读者进行讲解:



1️⃣ MVRV(本段必读❗️)


我相信稍微有研究链上数据的读者,一定都听过 MVRV,很早之前我也写过关于 MVRV 的介绍



如上图,这是 MVRV 的历史数据图表,图中标记的 1、2、3、4,分别对应 13 年、17 年的顶部,以及 2021 年的两次顶部。


我们可以明显看到:每一轮顶部的 MVRV 高点是「递减」的!


我听过很多人会用以下方法,针对高点递减的现象做处理:

「我知道是递减,所以在判断顶部的时候,我会抓一个更保守、更低的阀值当作警讯。」


现在问题来了:


  • 更保守的阀值怎么设定?
  • 如果我们回到 2021 年 4 月,能看到的历史数据只有 13、17 年,
  • 保守设定后的阀值能在 21 年 4 月触发吗?
  • 用这种方式设定的阀值,能在 2021 年第二顶触发吗?
  • 如果不认为 2021 年 4 月是顶部,那 2021 年第二顶就更不可能逃顶了,对吧?


我想说的是:正因为 BTC 历史数据的样本数太少并且若单纯考虑前几次周期其实很可能陷入「未来数据泄漏」的陷阱中


身处 2021 年 4 月(第一顶)的人,不会知道当时的 MVRV 数值,其实就是那一轮周期的最高点,因为他只能看到 13、17 年的数据;


同理,在 2021 年第二顶出现的时候,MVRV 数值更是处于极低的位置,如果第一顶不逃,那自然不可能根据第二顶的数据去逃顶,如此便会错失 2021 年逃顶的最佳时机。



2️⃣ AVIV


AVIV 算是修正过的、考虑更周详的 MVRV,并且相较于 MVRV,存在更明显「均值回归」的特征。


但即便如此,「峰值(高点)递减」的现象仍然很明显:



图中标记的 1、2、3、4,分别对应 13 年、17 年的顶部,以及 2021 年的两次顶部。


同样的问题,我就直接复制上面的文字了,供各位读者思考:


  • 更保守的阀值怎么设定?
  • 如果我们回到 2021 年 4 月,能看到的历史数据只有 13、17 年,
  • 保守设定后的阀值能在 21 年 4 月触发吗?
  • 用这种方式设定的阀值,能在 2021 年第二顶触发吗?
  • 如果不认为 2021 年 4 月是顶部,那 2021 年第二顶就更不可能逃顶了,对吧?



3️⃣ RUP


关于 RUP 见顶讯号的分析文章,可参考此篇文章


曾有读者询问:「同意背离的逻辑,但是否应该一并考虑 RUP 曾经到过的历史高位?」


我相信这个问题,在读者阅读至此之后,应该都能获得解答。这边我也顺便补充 RUP 的历史图表:



图中标记的 1、2、3、4,分别对应 13 年、17 年的顶部,以及 2021 年的两次顶部。


可以看到,即便是针对市值做过标准化处理的 RUP,还是存在峰值递减的现象


再来一次灵魂拷问:


  • 更保守的阀值怎么设定?
  • 如果我们回到 2021 年 4 月,能看到的历史数据只有 13、17 年,
  • 保守设定后的阀值能在 21 年 4 月触发吗?
  • 用这种方式设定的阀值,能在 2021 年第二顶触发吗?
  • 如果不认为 2021 年 4 月是顶部,那 2021 年第二顶就更不可能逃顶了,对吧?



4️⃣ Cointime Price Deviation 模型


Cointime Price Deviation 模型,是我个人设计、用以观测顶部的模型之一,相关内容可参考我专栏中的内容。



图中标记的 1、2、3、4,分别对应 13 年、17 年的顶部,以及 2021 年的两次顶部。


各位读者可以用这张图片,和前三张图片进行比较:


  • 2021 第二顶的数值,与前三次顶部的数值差距更小
  • 四次顶部的数值差距不大(但仍有递减迹象)
  • 将 BTC 逐年递减的波动率纳入考量


这也是为什么我更倾向于对数据赋予逻辑、进行加工,只有这样才能尽可能避免 overfitting、未来数据泄漏的问题。



结语


很多文字部分是重复的,核心概念我都聚集在 MVRV 那段,相信读完那段之后,后续的阅读速度会大幅提升。


本文主要是针对「Overfitting」、「避免未来数据泄漏」这两大观念进行科普与解释,同时引入 2021 年特殊的状况,作为我的讲解范例。


本文全程硬核,内容稍嫌深涩,希望对你有帮助。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

貝格先生
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开