加密貨幣回測為什麼特別容易騙人:選擇偏誤與多重測試的重災區

同樣是 Sharpe 1.5,在山寨幣上跑出來的可信度低一個量級。本文用有效樣本、試驗預算、相關性折算三張表,算出加密市場把選擇偏誤與多重測試放大了多少。

同一支策略,在標普 500 成分股上跑出年化 Sharpe 1.5,跟在一籃子山寨幣上跑出年化 Sharpe 1.5,可信度不在同一個級別。差距不在策略設計,在你手上那段歷史能負擔幾次嘗試。

加密貨幣回測特別會騙人,原因不是這個市場比較隨機,也不是做量化的人比較不嚴謹。真正的原因是:決定一個回測可不可信的四個輸入,在加密市場同時被推到最壞的一邊。有效樣本更短、試驗次數更多、試驗之間更相關、樣本宇宙更殘缺。四個變數往同一個方向走的時候,誤判機率不是加起來,是乘起來。

機制層的東西這裡不重複。多重測試為什麼在數學上必然生出假訊號、選擇偏誤怎麼把雜訊變現成一支具體策略,選擇偏誤與多重測試那篇拆過。本文只處理一件事:把「加密市場是重災區」這句常識,換算成你可以自己重算的數字,然後給出對應的紀律。

加密貨幣回測的可信度由四個輸入決定,這裡四個同時最差

先把要拆的東西攤開。任何一套多重測試校正,不管你用 Bonferroni、SPA 還是 Deflated Sharpe,吃的都是同一組輸入。這四個輸入決定了同一個 Sharpe 值該被打幾折。

輸入 它決定什麼 美股大型股 加密市場
有效樣本 T_eff t 值的分母,樣本越短、雜訊佔比越高 數十年、十幾個完整景氣循環 BTC 約十幾年、3 到 4 個週期;多數山寨 1 到 2 年
試驗次數 N 純雜訊能撈到多高的成績 資料授權貴、清洗門檻高,掃描量受限 全歷史 OHLCV 免費開放 API,掃描量沒有上限
試驗間相關 ρ N 裡面有幾個是真的獨立 產業與因子分散,ρ 中等 幾乎全是 BTC beta,壓力期常在 0.8 以上
宇宙完整性 存活者偏誤有多重 下市有制度紀錄,資料商多半保留 死亡率高、下架無統一紀錄、ticker 會被重用

這張表是本文其餘部分的目錄。四段各拆一列,最後一段講這個論點在哪裡會過頭。

有效樣本:24/7 的資料看起來更多,能用的更少

加密市場全年無休,一年 365 根日線,美股 252 根。單看根數,你的樣本多了 45%。這是整個問題裡最有欺騙性的一個數字。

回測的統計力道不來自資料的行數,來自資料裡有幾個彼此獨立的觀察。一支靠週期輪動賺錢的策略,它真正的樣本數是市場經歷過幾次週期,不是走過幾根 K 棒。你在 2021 到 2024 的資料上看到策略「連續四年有效」,如果這四年只涵蓋一次完整的漲跌循環,你手上的樣本數是 1,不是 1460。

把量級標出來。比特幣從 2013 年算起,結構真的不同的市場環境大概是:2013 的散戶泡沫、2017 的 ICO 週期、2018 到 2019 的熊市、2020 到 2021 的流動性洪水與 DeFi、2022 的槓桿清算連環爆、2023 之後的 ETF 與機構化。掰著手指數,四到六個。山寨幣多半只趕上其中一到兩個。

從數學看更直接。年化 Sharpe 的 t 值大約是 Sharpe 乘以樣本年數的平方根。

有效樣本年數 t = 2 需要的年化 Sharpe t = 3 需要的年化 Sharpe
1 2.00 3.00
2 1.41 2.12
3 1.15 1.73
5 0.89 1.34
12 0.58 0.87

讀法:一個只有兩年歷史的標的,你要它通過 Harvey、Liu 與 Zhu 主張的 t>3 門檻,年化 Sharpe 得先做到 2.12。這個數字在扣掉手續費、滑價與資金費率之後,多數策略根本到不了。反過來說,如果你的兩年回測真的跑出 Sharpe 2.1 以上,比較合理的第一反應是去找資料錯誤或前視偏誤,不是去加倉。

試驗預算:先算你買得起幾次嘗試

有效樣本短,直接壓縮的是你能做幾次嘗試而不至於必然過擬合。Bailey 等人的最短回測長度給了一個粗略但好用的上界:MinBTL 約等於 2·ln(N) 除以目標 Sharpe 的平方。把它倒過來解 N,就是你的試驗預算

有效樣本 T_eff(年) 目標 Sharpe 1.0 的試驗預算 目標 Sharpe 1.5 的試驗預算
1 2 次 3 次
2 3 次 9 次
3 4 次 29 次
5 12 次 277 次
8 55 次 8,100 次
12 403 次 729,000 次

這張表的重點不在最後兩列,在於 T_eff 該填什麼。如果你的策略靠的是週期轉折,比特幣的 T_eff 是 3 到 4,不是 12,你的預算就落在幾次到幾十次之間。任何一個五個參數各掃十格的網格,第一輪就是十萬次,超出預算三到四個數量級。這也是為什麼「我只是隨便掃一下」這句話在加密市場的代價,比在美股大得多。順帶一提,這個上界是寬鬆版,論文的精確版用期望最大值算,門檻更緊。

有一個誠實的分界要講清楚:被短歷史殺死的主要是週期級與宏觀級策略。做微結構、做資金費率套利、做造市的人,相關的時間尺度是分鐘與小時,一年就能累積幾十萬個獨立事件,有效樣本反而比很多股票策略還充足。判斷自己踩在哪一邊的方法很簡單:你的策略平均持倉多久,一年能產生幾筆真正獨立的進出。

試驗次數:你算的是自己的 N,加密貨幣回測面對的是市場的 N

多數人估試驗次數的時候,只算自己跑過幾組參數。這個數字幾乎一定嚴重低估,而在加密市場低估的幅度大到荒謬。

原因是資料的取得成本。美股要拿到乾淨的 point-in-time 資料,要付授權費、要處理股票分割與股利再投資、要處理下市紀錄,這些成本本身就是一道篩子,把大部分的隨手掃描擋在外面。加密市場相反:任何一家主要交易所都提供免費的全歷史 K 線 API,開源回測框架滿地都是,TradingView 上的策略腳本可以一鍵複製再改參數。門檻趨近於零。

結果是全世界幾萬到幾十萬個人,同時對著同一組公開的 BTC/USDT 日線跑最佳化。市場層級的試驗次數,是所有人試驗數的總和。這個數字沒有任何個人能誠實計數。

市場層級的嘗試次數 N 純雜訊的期望最大 t 值 三年樣本對應的年化 Sharpe
100 2.56 1.48
1,000 3.27 1.89
10,000 3.87 2.24
100,000 4.40 2.54
1,000,000 4.88 2.82

最後一列的讀法值得停一下。如果全網對同一段資料做過一百萬次搜尋,那麼「三年回測 Sharpe 2.8」這個成績,是純雜訊在這個搜尋規模下的期望產出。不是罕見,是預期值。你在論壇上看到一支三年 Sharpe 接近 3 的策略,它可信的程度跟丟一百萬次硬幣之後有人連二十正面差不多。

更麻煩的是社群層的篩選。你會看到那支策略,正是因為它贏了。幾萬個人各自 data mining,只有結果最漂亮的那幾個發文,賠錢的那幾萬個沒有人寫。你以為自己在複製一個被驗證過的 edge,實際上是在承接一次規模你看不見的選擇偏誤的末端。這一層懲罰無法計算,只能用一個原則處理:任何從公開來源撿來的策略,預設它的真實 Sharpe 接近零,除非你能自己重建它的經濟假設。

還有一批隱形的乘數,多數人根本沒把它們算進 N。同一支策略在八家交易所的資料上各跑一次、換三種報價幣(USDT、USDC、BTC)、換四個時間框架,這就是九十六次試驗。但報告上只會出現一行:「本策略在幣安 BTC/USDT 4 小時線上的表現」。你選了勝出的那個組合,那九十五次沒有被記錄,也沒有被懲罰。

把這幾條算進自己的研究流程之後,通常會發現候選池空掉一大半。這個過程實際怎麼落地,Lab 社群裡討論得比較細。

存活者偏誤:這裡的死亡率是另一個量級

傳統股市也有下市,但加密市場的標的死亡率是另一個層級的東西。每一輪週期結束,都會埋掉一大批歸零、停止開發、被交易所摘牌的代幣。確切的死亡率取決於你怎麼定義「死」,也取決於你用哪一家資料商的宇宙,但幾家主流來源的統計都落在同一個量級:一個完整週期下來,超過一半的標的不再有有意義的交易量。

問題在於,這批屍體不在你今天的清單上。

用一個具體的算術把代價標出來。假設你在 2025 年拿「當前市值前一百大」回測一支三年期的輪動策略。回測期起點的真實宇宙裡,有六十支活到今天、平均漲了 150%,有四十支實質歸零、平均剩下 5%。

  • 用今天的清單回測:只看得到那六十支,平均報酬 +150%
  • 用當時真實的宇宙回測:0.6 × 2.5 + 0.4 × 0.05 = 1.52,平均報酬 +52%

同一段期間、同一套邏輯,差了 98 個百分點。而且更糟的是第二層效果:你的選幣規則在回測裡看起來很會避開歸零幣,其實只是因為歸零幣從來沒有進過候選池。你以為驗證了風控,實際上什麼都沒驗證到。

加密市場還有三個傳統市場沒有的髒東西,都會讓 point-in-time 宇宙更難重建。

Ticker 重用。 同一個代號在不同時期屬於不同專案,資料商如果只用 symbol 當主鍵,會把兩段不相干的價格序列接成一條。

代幣遷移與面額重訂。 換鏈、換合約、1:1 換發、分叉後改名(LUNA 變成 LUNC 是最有名的一次),這些事件在資料上長得跟股票分割很像,但沒有統一的公司行動資料庫替你處理。

下架沒有統一紀錄。 交易所摘牌的公告散落在各自的公告頁,沒有像美股那樣的集中申報。要重建「2022 年 3 月那天,這家交易所上面到底有哪些交易對」,你得自己存快照。

三件事的共通結論是:宇宙的完整性要在資料層解決,不能靠回測層補。這部分屬於資料層的紀律。核心動作只有一個:每天把當下真實存在的交易對清單存下來,包含後來會死掉的那些。今天沒存,三年後花再多錢也買不回來。

相關性:一百個標的的驗證,實際只有 1.2 個

這一段是四個輸入裡最少人談、但殺傷力最大的一個。

常見的自我驗證動作是這樣:一個訊號在 BTC 上有效,於是拿去 ETH、SOL、BNB 等三十個標的上再跑一次,發現二十五個都有效,於是宣布「跨標的穩健性通過」。這個推論的前提是三十個標的提供三十份獨立證據。在加密市場,這個前提錯得離譜。

山寨幣本質上是 BTC 的槓桿 beta。Liu、Tsyvinski 與 Wu 在 Common Risk Factors in Cryptocurrency 裡發現,整個加密資產橫斷面的報酬,用市場、規模、動能三個因子就解釋掉絕大部分。其中市場因子的解釋力遠遠壓過另外兩個。翻成白話:這個市場的橫斷面差異,比傳統股市小得多。壓力期更誇張,跌起來的時候幾乎所有幣種對 BTC 的相關係數都會往 0.85 以上靠。

把相關性折算成「實際有幾份獨立證據」,用等相關的有效獨立數公式:N_eff = N ÷ (1 + (N−1)·ρ)。

你驗證的標的數 N ρ = 0.3 ρ = 0.6 ρ = 0.85
5 2.27 1.47 1.14
10 2.70 1.56 1.16
30 3.09 1.63 1.17
100 3.26 1.66 1.17

看直欄,不要看橫列。每一欄往下走都很快撞到天花板,而那個天花板就是 1/ρ。ρ = 0.85 的時候,上限是 1.18。意思是:不管你拿五個幣還是一百個幣去驗證,你拿到的獨立證據永遠不會超過大約 1.2 份。加標的不會增加你的信心,只會增加你的計算時間。

這件事有兩個方向,要分開處理,混在一起會得到完全相反的結論。

懲罰面:相關性讓校正變鬆。 你掃過的一千組參數如果彼此高度相關,真正的獨立試驗數遠小於一千,Bonferroni 那種假設獨立的校正會懲罰過度。這時候該用的是有效獨立數,或能吃進相關結構的方法,例如區塊 bootstrap 配 SPA 或 StepM。選型對照在回測校正工具那篇。

驗證面:相關性讓證據變薄。 你以為的三十份跨標的確認,實際只有一到兩份。這個方向不會被任何校正工具自動修好,因為工具不知道你把相關的驗證當成獨立的驗證在數。

第二個方向才是加密市場真正的坑。同一件事在美股沒那麼嚴重,因為產業之間的分散度高,跑三十支股票確實能拿到比較多的獨立資訊。

順著同一條邏輯,還有一個直接的推論:加密策略的正確虛無假設是「單純長期持有 BTC」或一個市值加權指數,不是零。這個市場過去十年的 beta 本身就非常大,任何一支多頭偏向的策略在回測期都會贏過零。用零當基準等於送給自己一個免費的勝利。換成 BTC buy-and-hold 之後,很多「年化 80%」的策略會直接變成負 alpha。

資料層:你可能在對著不存在的成交量做最佳化

前面四個輸入談的都是統計結構。加密市場還有一個傳統市場程度輕很多的問題:原始資料本身是髒的,而校正工具不會檢查資料。

最有名的一個案例是成交量。Bitwise 在 2019 年向美國證管會提交的分析報告裡指出,當時全球回報的比特幣現貨成交量中,約 95% 是造假或非經濟性的洗單。真實的量集中在少數幾家受監管的交易所。這是 2019 年的樣本,之後監管與資料商的過濾都有改善,但方向性的教訓沒變:任何以成交量為輸入的訊號(量價背離、放量突破、成交量加權的動能),在未過濾的資料上做最佳化,你調的是造假流程的參數,不是市場行為的參數。

同一類問題還有幾個。

價格取哪一家。 同一時刻不同交易所的報價有差,用指數價、標記價還是某一家的成交價,會改變回測結果。而「哪一家的資料讓策略最好看」這個選擇,如果是事後決定的,它就是一次沒有被記錄的試驗。

鏈上資料的回滾與歸屬。 鏈重組會讓已經寫進資料庫的交易消失,地址標籤的歸屬本身是統計推估而非事實。用這類資料做出來的訊號,可能是在對著標籤供應商的模型誤差做最佳化。細節在鏈重組與鏈上數據那篇。

永續合約的資金費率結構改過很多次。 各家交易所的計費頻率、上下限、指數組成都調整過。跨越規則改版的回測,等於把兩個不同的遊戲接在一起算。

這一層有一個特別惡劣的性質:髒資料製造出來的假 alpha,經過 Deflated Sharpe 或 SPA 之後,會變成一個有統計背書的假 alpha,而且更難被質疑。校正工具處理的是「這個成績是不是運氣」,它不處理「這個成績是不是來自假資料」。

這個論點在哪裡會過頭

把「加密市場是重災區」推到底,會推出一個錯誤的結論:這個市場不能做量化。這個結論站不住,理由有四個。

真實的無效率也更大。 流動性分散在幾十家交易所、散戶佔比高、機構參與度不均、現貨與衍生品之間長期存在結構性基差。這些都是真的定價缺口。統計門檻更高跟報酬空間更大是同時存在的,正確的推論是證據標準要提高,不是退出。

時間尺度決定嚴重程度。 前面說過,短歷史殺的是週期級策略。做微結構與高頻的人,有效樣本充足,這篇文章裡最兇的那幾張表對他們的約束力小很多。真正該對號入座的是「用日線做因子輪動」跟「拿宏觀變數擇時」這兩類。

鏈上資料是真正的新資訊源。 傳統市場沒有辦法看到全市場的持倉成本分布與轉帳行為。這一層的資料髒,但它提供的是股市根本不存在的觀察角度,這是加密市場獨有的正面條件,也是唯一能直接觀察持有者行為的資料層。

過度校正也是一種錯誤。 加密市場歷史短、檢定力天生偏低,嚴格校正之下「什麼都不顯著」是常態,不是故障。如果你的反應是不斷放寬門檻直到有東西通過,那是換個形式做選擇偏誤。正確的反應是縮小搜尋空間:先寫下經濟假設再碰資料,讓事前理由替你付掉一部分懲罰。搜尋空間從 1000 縮到 20,門檻就鬆了兩個數量級,這比任何統計技巧都有效。

還有一件事這篇文章管不到。上面所有的討論都假設未來的資料生成過程跟樣本期間是同一個。加密市場的結構半衰期特別短:造市商換人、保證金規則改版、ETF 把新的資金曲線接進來、監管框架改寫參與者組成。這類斷裂不在任何顯著性檢定的射程內,通過校正的策略照樣會因為它死掉。這條線在市場結構性風險那篇拆過。

加密貨幣回測的最低紀律:八條清單

把上面的分析收成可以今天執行的動作。

  1. 先估 T_eff,不是 T。 週期級策略填週期數,事件級策略填事件數,微結構策略才填年數。填完再查試驗預算表,決定這個題目值不值得開。
  2. 每天存一份交易對快照。 包含當天真實掛牌、後來會下架的全部標的。用交易所 ID 加合約地址當主鍵,不要用 ticker。
  3. 把交易所、報價幣、時間框架都算進 N。 這三個維度的每一種組合都是一次試驗,包含你看一眼就丟的。
  4. 驗證用有效獨立數,不用標的數。 跑三十個幣之前先算 ρ,把 N_eff 寫進研究紀錄。ρ 高到 N_eff 不到 2 的時候,這個驗證不構成證據。
  5. 基準用 BTC buy-and-hold,不用零。 多頭偏向的策略贏過零沒有資訊量。
  6. 成交量類訊號先過濾資料源。 只用有真實流動性的交易所,或改用鏈上結算量、期貨未平倉這類比較難造假的量能代理。
  7. 社群來源的策略預設 Sharpe 為零。 除非你能自己寫出它為什麼應該存在的經濟機制,否則它只是一次你看不見的大規模搜尋的倖存者。
  8. 保險庫資料切一個完整時代,不是最後 20%。 加密市場的 regime 邊界很銳利,按比例切很容易切出一段同質的資料,起不到樣本外的作用。

清單裡最貴的是第二條,因為它沒有事後補救的辦法。其餘七條都可以從今天開始做。

結論

收攏成五句話。

  1. 加密市場放大選擇偏誤的方式,是四個輸入同時惡化:有效樣本更短、試驗次數更多、試驗更相關、宇宙更殘缺。這四件事是相乘的,不是相加。
  2. 有效樣本要用週期數或事件數估,不是用日線根數。週期級策略在比特幣上的 T_eff 是 3 到 4,對應的試驗預算是幾次到幾十次,不是幾萬次。
  3. 真正在定價的 N 是市場層級的總和。一百萬次搜尋規模下,三年 Sharpe 2.8 是純雜訊的期望產出,不是罕見成績。
  4. 跨標的驗證的獨立證據上限是 1/ρ。ρ 到 0.85 的時候,一百個幣只值 1.2 份證據,加標的不會增加信心。
  5. 結論不是遠離加密市場,是這個市場的證據門檻要訂得比股市高,而通過門檻之後的報酬空間也確實比股市大。

判斷一個加密策略可不可信,最有效的問題不是「回測績效多少」,是三個更無聊的問題:你的有效樣本是幾個、你試了幾次、你怎麼選的。這三個答案給不出來的策略,績效多漂亮都只是一個未知規模搜尋的最大值。

我每週會把這類驗證框架跟實際市場數據的交叉檢驗寫進電子報,包括流動性條件、衍生品結構與鏈上籌碼的例行審視。想替自己的研究流程多加一層濾網的,可以訂閱追蹤。

個人頭像照片
AD.Trader Lab

AD.Trader Lab 創辦人 | 量化交易員 專注於在充滿雜訊的市場中,尋找數學上的必然性。AD.Trader Lab 實驗室主理人,帶你用數據看透漲跌背後的真相。

每日更新 · 免費

每日選幣清單

我每天在 Telegram 發一份選幣名單——標的、為什麼選它、我自己有沒有進場。

  • 每日選幣名單,附上選它的理由
  • 新文章與研究上架,第一時間通知
  • 討論區:有問題可以直接問我
免費加入 Telegram

340+ 人已經在頻道裡

已經在交易了?用我的連結註冊 OKX,手續費終身退 20% 月成交 20 萬 U,一年約退你 NT$6,000 — 交易越多退越多