當我們回測一套策略、檢視一組指標時,是否真的站在當下?本文從「未來數據洩漏」與「過度擬合」兩大陷阱切入,剖析 2021 年雙頂對鏈上分析的致命考驗。
(前情提要:續命行情:以鏈上數據剖析最詭異的 2021 年雙頂 )
(背景補充:鏈上數據學堂(一):你知道全市場的 BTC 平均成本是多少嗎? )
Key Points:
- 談「未來數據洩漏(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 年第二頂:對於多數指標而言最大的考驗
講完無聊的理論觀念,接著我們來聊實戰。
以下,我將拿出三個鏈上數據指標,以及一個我個人開發的模型,為各位讀者進行講解:
1. MVRV
相信稍微研究過鏈上數據分析的讀者,一定都聽過 MVRV,我之前的文章也有針對這個指標做過詳細的教學( 鏈上數據學堂(一):你知道全市場的 BTC 平均成本是多少嗎?)。
如上圖,這是 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 年第二頂就更不可能逃頂了,對吧?
RUP(Relative Unrealized Profit)
之前我也詳細介紹過 RUP 這個鏈上數據,有興趣的讀者可以參考以下兩篇文章的內容:
鏈上數據學堂(九):市場晴雨表 RUPL(I)- 數據介紹 & 抄底應用
鏈上數據學堂(十):市場晴雨表 RUPL(II)- 最強頂部訊號 & 歷史週期頂部詳細分析
曾有讀者詢問:「可以理解 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 模型,是我個人設計並用以觀察頂部的模型之一,詳細的內容可參考先前的貼文(鏈上數據學堂(七):一套嶄新、ARK 參與研究的 BTC 神奇定價方法論(II) )。
圖中標記的 1、2、3、4,分別對應 13 年、17 年的頂部,以及 2021 年的兩次頂部。
各位讀者可以用這張圖片,和前三張圖片進行比較:
- 2021 第二頂的數值,與前三次頂部的數值差距更小
- 四次頂部的數值差距不大(但仍有遞減跡象)
- 將 BTC 逐年遞減的波動率納入考量
這也是為什麼我更傾向於對數據賦予邏輯、進行加工,只有這樣才能盡可能避免 overfitting、未來數據洩漏的問題。
結語
本文主要是針對「Overfitting」、「避免未來數據洩漏」這兩大觀念進行科普與解釋,同時引入 2021 年特殊的狀況,作為我的講解範例。
本文全程硬核,內容稍嫌深澀,希望對各位讀者有幫助,感謝你的閱讀。