← 返回文章列表
July 9, 2026
5 分鐘閱讀

誠實的負面結果:數萬次回測、五大主流幣,沒有穩健優勢

誠實的負面結果:數萬次回測、五大主流幣,沒有穩健優勢
#演算法交易
#回測
#過擬合
#折損夏普比率
#PBO
#負面結果
#驗證
🎯
Part 9 of 9 · Collection
Backtesting Without Fooling Yourself

"回測無幻覺"系列文章。

我們不想要的那個結果

這個系列已經用了好幾篇文章來打造捕捉謊言的儀器:前視偏差靠一根 K 線的洩漏憑空製造出夏普比率 15,Deflated Sharpe Ratio 給搜尋選出的贏家定價,回測過擬合機率給搜尋本身定價。那些文章在某種意義上都是彩排。這一篇是正式演出:我們把整套儀器對準一個我們真心想拿去交易的策略族,讓它給出它生來就該給出的裁決——哪怕這個裁決是"不行"。

先把誠實的結局擺在前面。我們在五個主流幣上跑了數萬次回測,覆蓋雙時間框架和三時間框架配置,去尋找一個穩健的優勢。**我們沒有找到。**不是"我們找到了一個小優勢,然後縮減了倉位"。我們找到的是沒有任何東西能扛過與這套機器的接觸——沒有一個配置既能在多個品種上同時盈利,又能在多重檢驗校正之下站得住腳。這不是實驗的失敗。這正是實驗的成功。

最誘人的部分——足以讓一支儀器不夠完備的團隊投入資本的部分——在於樸素的讀數看起來真的很好:

階段 我們看到的 它實際是什麼
單品種搜尋(ETHUSDT,雙時間框架) 樣本外測試 +16.35%,未觸碰的留出視窗 +2.62% 誘人的贏家
Deflated Sharpe,約 37,000 次試驗 DSR = 0.00 噪聲中的最優
跨品種,5 個主流幣,雙時間框架 DSR 0.24 / PBO 0.264 不通過
跨品種,5 個主流幣,三時間框架 DSR 0.14 / PBO 0.327 不通過

請像我們第一次讀它那樣去讀第一行:一個移動平均線交叉策略,在 ETHUSDT 上沿著雙時間框架網格調參,在搜尋期間從未見過的資料上打出 +16.35%,又在我們完全隔離的第二個視窗上守住了正的 +2.62%。如果你停在這裡——絕大多數公開發表的回測都停在這裡——你就會把它上線。這篇文章餘下的部分,就是那套告訴我們不要上線的機器,以及它為什麼是對的。

第一幕——誘人的贏家

一座泛著紅橙色光芒、高聳誘人的樣本內權益高峰,一個移動平均線交叉贏家從數千條被丟棄的策略曲線組成的淡淡扇面中被單獨拎出——任何折損校正之前那個誘人的噪聲最優結果

這個策略族刻意選得平平無奇:Hull 移動平均線交叉,在已收盤的 K 線上求值,配一個誠實的成交模型(在第 i 根 K 線收盤時做決策,在第 i+1 根開盤時成交——本系列絕不妥協的一根 K 線紀律)。"雙時間框架"是指訊號要經過一個更慢時間框架的趨勢閘門;"三時間框架"再加一個更慢的。每多一個時間框架就多一批自由參數,而自由參數恰恰是搜尋用來兌換成表面業績的原料。

單品種研究在 ETHUSDT 上進行。協議本身已經是好的那種:滾動 walk-forward 切分(一個預熱視窗、若干個樣本內折、一個樣本外測試視窗),外加一個直到最後都禁止搜尋觸碰的留出視窗。Sobol/QMC 搜尋探索了參數空間;倖存者是 walk-forward 得分最高的那個配置,它被帶上留出視窗一次——只有一次。

倖存者看上去就像一個優勢:

  • +16.35%,在樣本外測試視窗上——這些資料只用來給配置打分,從不用來擬合它們。
  • +2.62%,在未觸碰的留出視窗上——第二道牆,也翻過去了。

這是決定一個研究流程究竟是誠實還是表演的時刻。樣本外的盈利在狹義上是真實的:數字沒有偽造,也沒有前視洩漏——我們查過。但"數字真實、沒有洩漏"是一個比"真實優勢"低得的門檻。橫在兩者之間的,正是這整個系列討論的東西:選擇。我們不是評估了一個策略、發現它賺了 16%。我們評估了海量的策略,然後彙報了其中最好那個的 16%。樣本外視窗沒有前視汙染,但它沒有躲過選擇的汙染——因為我們挑選贏家時,部分依據的就是它在那裡的表現。唯一能把這兩個故事區分開的儀器,是一臺知道我們看了多少次的儀器。

第二幕——折損:約 37,000 次試驗,DSR = 0.00

Deflated Sharpe Ratio 在計入數萬次試驗後,把一座高聳的紅橙色樣本內高峰壓塌成一條几乎歸零的翠綠色扁平柱,虛假策略定理的噪聲上限升到零上方好幾個標準差,吞沒了表面上的優勢

數一數我們看了多少次。把各個折、時間框架組合和參數網格全部算上,雙時間框架搜尋評估了量級在 37,000 個不同配置的策略。它們每一個都是從策略空間裡抽出的一簽,而搜尋保留了最大值。完整推導在 Deflated Sharpe Ratio 那篇文章裡,但這裡你只需要一個事實——虛假策略定理(False Strategy Theorem,Bailey & López de Prado):N真實優勢為零的策略,其最大夏普比率的期望隨 N 增長。在 N ≈ 30,000 時,純噪聲中的最優僅憑選擇效應就會站在零上方約四個標準差處。四西格瑪看起來像一個重大發現。它只是搜尋投下的影子。

所以正確的問題不是"贏家的夏普比率是不是正的?"——當然是正的,你挑的就是最大值。正確的問題是"贏家的夏普比率有沒有超過 37,000 個拋硬幣者裡最走運的那一個能打出的成績?"這正是 DSR 計算的東西:它把基準從零抬高到試驗次數所隱含的噪聲上限,然後報告真實夏普比率越過那條線的機率。

ETHUSDT 贏家的樣本外記錄對應約 0.19 的日頻夏普比率。單獨看,長視窗上 0.19 的日頻 SR 是一個完全體面的數字。對約 37,000 次試驗折損之後,它蒸發了:

DSR(SR^=0.19daily,  N37,000)=0.00\text{DSR}\big(\hat{SR}=0.19\,\text{daily},\; N\approx 37{,}000\big) = \mathbf{0.00}

零。不是"邊緣水平",也不是"0.4,留意一下"。DSR 說的是:考慮到我們搜尋得有多狠,0.19 的日頻夏普比率與純噪聲中的最優抽籤無法區分。樣本外的 +16.35% 和留出視窗的 +2.62%,在這個檢驗能分辨的精度之內,與一個毫無優勢、只是在 37,000 張彩票的抽獎中中了獎的策略完全一致。

有一個細節值得標註出來,因為我們不想誇大折損的力度:參數網格上相鄰的點幾乎是彼此的複製品,所以原始試驗計數會高估獨立觀察的次數。我們的閘門用的是有效試驗數——在折損之前先用 ONC(López de Prado & Lewis)按收益相關性對試驗做聚類——正是為了不因為記賬口徑的原因錯殺一個真實優勢。即便把這層校正算進去,ETHUSDT 的贏家也活不下來。當一個結果讀作 DSR 0.00 時,有效試驗數的細微差別救不了它;它深陷在噪聲之中。

故事本可以到此為止。一個品種、一次搜尋、折損歸零。但 DSR 在單一品種上不通過,會留下一個執著的最佳化者總會試圖鑽的空子:*也許 ETHUSDT 只是一個難做的品種,這個配置在別處是真的。*要堵上這個空子,你必須換一條檢驗的軸。

第三幕——決定性檢驗:穩健性存在於跨品種之間

五個主流加密品種通過一個要求全才的跨品種中位數目標函數被同時評估,分散的分品種樣本外結果裡只有一個品種在零線上方發出翠綠色的光,另外四個以紅橙色跌落零線之下——沒有跨品種穩健性

單品種搜尋即便在其他方面都完美,也有一個結構性弱點:它唯一的樣本外軸是時間。它能告訴你這個配置在 ETHUSDT 靠後的一段視窗上撐住了——但它無法告訴你,這個配置學到的是關於市場的東西,還是關於 ETHUSDT 本身的東西。對單一品種的過擬合,在一個從不離開該品種的檢驗面前是隱形的。

於是我們改了目標函數。跨品種狩獵要的不再是"在 ETHUSDT 樣本外上最好",而是全才:在許多品種上同時表現良好的配置。協議如下:

  • 五個高流動性主流幣:ETHUSDT、BTCUSDT、SOLUSDT、BNBUSDT、XRPUSDT——每個約 1.18 million 根 1 分鐘 K 線,一個共享的日曆視窗,一套共享的切分(預熱 → K 個樣本內折 → 測試 → 一個未觸碰的留出視窗)。
  • 一個穩健的目標函數:對每個配置,先在每個品種上算出 walk-forward 結果,再按跨品種中位數排序。中位數正是關鍵——一個在一個幣上驚豔、在四個幣上糟糕的配置,無法靠單個離群值買到入場券。要被選中,它至少得在大多數品種上表現中等偏上
  • 供閘門使用的組合收益矩陣:每次試驗的日收益是五個品種的等權組合(每個佔 1/S 的資金),由此得到 DSRPBO-CSCV 閘門所消費的 T×N 業績矩陣。
  • 留出視窗只被觸碰一次,且只由每種模式的穩健冠軍觸碰。

這是一個比單品種嚴格更難的檢驗,而且是刻意為之。一個配置可以靠利用某個幣的特質贏下 ETHUSDT 搜尋;它沒法用同樣的方式贏下五品種中位數搜尋。如果這個策略族裡存在穩健優勢,這就是能找到它的實驗設定。如果不存在,這也是會毫不退縮把話說明白的那個設定。

第四幕——裁決:兩種時間框架都沒過閘門

我們在兩種配置下都跑了跨品種狩獵,並對每個穩健冠軍過閘。閘門就是標準的那兩道:DSR ≥ 0.95(按有效試驗數折損)和 PBO ≤ 0.2(來自業績矩陣上的 CSCV)。這就是完整的裁決,如實呈上:

模式 DSR(有效試驗數) PBO(CSCV) 閘門:DSR ≥ 0.95 閘門:PBO ≤ 0.2 裁決
雙時間框架 0.24 0.264 不通過 不通過 無穩健優勢
三時間框架 0.14 0.327 不通過 不通過 無穩健優勢

兩種模式、兩道閘門,全部不通過。請用前幾篇文章建立的標尺來讀每一個數字,因為兩道閘門說的是不同的事情,而它們的結論一致:

  • DSR 0.24(雙)、0.14(三)。 DSR 是真實夏普比率超過搜尋所隱含噪聲上限的機率。我們要求 0.95。我們得到的是 0.24 和 0.14——在計入嘗試過的配置數量之後,這個優勢哪怕只是為的機率,也只有勉強四分之一和七分之一。加上第三個時間框架讓結果變得更差而不是更好:參數更多,擬合樣本的方式更多,能泛化的東西更少。這種反轉本身就是過擬合的指紋。

  • PBO 0.264(雙)、0.327(三)。 回憶一下關於 PBO 人人都會看錯的那個事實(完整論述在這裡):它的零假設值是 0.5,不是 1。 PBO 是樣本內贏家落到樣本外後一半的機率。可信的選擇流程接近 0;純粹的拋硬幣是 0.5。我們的 0.264 和 0.327 低於 0.5——選擇不完全是拋硬幣,裡面有一絲微弱的訊號——但都遠高於我們要求的 0.2,夠不上"選擇可靠"的標準。而且三時間框架(0.327)又一次比雙時間框架(0.264)更靠近拋硬幣線:複雜度更高,泛化更差。

這兩臺儀器是正交的——DSR 是參數化的,給贏家定價;PBO 是非參數的,給流程定價——而它們從相反的方向收斂到同一個答案。這張表無論怎麼讀,兩個策略都過不了線。開啟這整場狩獵的那個 +16.35%,沒有一個穩健的跨品種親戚。它是一個幣和一次搜尋的屬性。

第五幕——跟著冠軍走,一個品種一個品種看

聚合閘門告訴你一個策略失敗了;分品種拆解告訴你它是怎麼失敗的,而這個"怎麼"是整個研究裡最有教益的部分。拿三時間框架冠軍——五品種中位數目標函數實際加冕的那個配置——看看它在每個品種的樣本外測試視窗上做了什麼:

品種 三時間框架冠軍,樣本外測試
ETHUSDT −0.39%
BTCUSDT −0.38%
SOLUSDT +14.74%
BNBUSDT −8.58%
XRPUSDT −4.13%

整個幻覺就在這裡,五行擺得明明白白。冠軍在五個品種裡恰好只有一個盈利——SOLUSDT,一個扎眼的 +14.74%——而在另外四個上全是負的。它不是一個碰巧有短板的全才。它是一個披著組合外衣的 SOL 專才。那一個大的正收益扛起了全部業績;中位數目標函數把它排在原始 ETHUSDT 贏家之下,恰恰因為中位數拒絕被單個離群值愚弄,但即便是中位數選出的冠軍,拆開一看也幾乎完全靠一個幣撐著。

留出視窗——誰都不許對著它最佳化的那段資料——從最乾淨的視角講了同一個故事:在五個主流幣上,冠軍的留出收益只在 5 個品種中的 1 個上為正。如果這是策略族裡的真實優勢,它至少會隱隱約約地出現在不止一個品種的未觸碰資料上。它只出現在一個上。這是"學會了一個品種、而不是學會了市場"的配置的簽名。

這就是為什麼跨品種這條軸是決定性檢驗,而不只是錦上添花。單品種 DSR 已經把 ETHUSDT 折損到零。但要診斷這次失敗——證明表面優勢從一開始就沒有分佈在多個品種上,它只是搜尋在那一輪碰巧過擬合到的某個幣的屬性——靠的是五品種中位數的設計。在 ETHUSDT 搜尋裡,它屬於 ETHUSDT;在中位數狩獵裡,它遷移到了 SOLUSDT。優勢會挪窩。真實的優勢不會這樣挪窩。

為什麼負面結果才是正確的結果

一個被嚴謹確立並公開發表的負面結果,化作一座翠綠色燈塔,把一束經過驗證的接受零假設之光投向埋葬著檔案抽屜研究的黑暗海面,光束穿透一個誘人樣本內贏家逐漸消退的紅橙色光暈

值得把我們在主張什麼、沒在主張什麼說清楚,因為"我們沒找到優勢"很容易被誤讀成假意謙虛或者承認無能。兩者都不是。

我們不是在主張 HMA 交叉永遠不可能有效,不是在主張這五個幣不可預測,也不是在主張不存在任何雙/三時間框架策略。我們主張的是一件更窄也更強的事:*在這個策略族之內、在這份資料之上、在這個搜尋強度之下,不存在任何一個配置,其表面業績能扛過對嘗試次數的校正。*所有看起來像優勢的東西,都落在純噪聲最優的置信帶之內。這是一個精確、可證偽、站得住的陳述——也是正確的可發表結論。

這套機器擊敗的誘惑是巨大的,而且它在其他每個領域都有名字:檔案抽屜問題(file-drawer problem)。負面結果被埋掉;正面結果被寫成文章。在交易裡,這個激勵還要更鋒利,因為你沒有做折損校正的那個正面結果不只是一篇糟糕的論文——它是部署在噪聲之上的資本,是真金白銀付著真實手續費,去交易一張你誤當成訊號的彩票。前視偏差那篇文章展示了一次洩漏如何憑空製造出夏普比率 15;DSR 那篇文章展示了一次沒有任何洩漏的搜尋如何從純噪聲裡憑空製造出 1.63 的夏普比率。這篇文章展示的,是當這些儀器對準你自己最心愛的想法、並被要求說實話時的樣子。這套裝置——DSR、PBO/CSCV、有效試驗數聚類、跨品種選擇——存在的目的不是為你的策略祝福。它存在的目的是阻止你把噪聲中的最優當成 alpha 拿去上線,而它有效的唯一證據,就是它有時會說"不"。

一支沒有這套裝置的團隊會把那個 +16.35% 上線。他們會有一份看起來乾淨的 walk-forward、一個為正的留出視窗、檢測不到的前視洩漏,還有一個說得通的故事。他們會是錯的,而且在實盤 P&L 開始偏離之前不會知道自己錯了——那道回測與實盤的鴻溝,一個誠實的負面結果永遠不需要去解釋,因為它從未上線。一個嚴謹的"不",其價值要用你從未承受過的回撤來衡量。

溯源

這篇文章裡的每一個數字都能追溯到程式碼,而不是敘事。跨品種優勢狩獵——五品種資料載入、共享切分、跨品種中位數目標函數、餵給閘門的等權組合矩陣——位於回測器倉庫的 scripts/edge_hunt_multitf.py(提交 acd84e8)。它呼叫的統計閘門——機率化與折損後的夏普比率、最短業績記錄長度、經由 ONC 聚類的有效試驗數、以及通過 CSCV 計算的 PBO,全部對照一手文獻在 NumPy/SciPy 上從零實現,而不是黑盒庫——在 scripts/overfit_gates.py(提交 7b966e1)裡,它自帶一個自檢:在純噪聲中植入一個已知優勢,確認閘門放行優勢、拒絕噪聲。產出那個誘人 +16.35% 的單品種 ETHUSDT 研究,來自狩獵指令碼以只讀方式匯入的更早的 bench_search_multitf 測試臺。這裡沒有任何手算出來的數字;無論答案是"是"還是"否",閘門走的都是同一條程式碼路徑。

要點

  1. **我們在五個主流幣上跑了數萬次回測,覆蓋雙、三時間框架,沒有找到穩健優勢——而這正是這套機器被造出來要產出的那種結果。**一個被嚴謹確立的負面結果是一項發現,不是一次失敗。
  2. 一個看起來乾淨的樣本外數字不是優勢。 ETHUSDT 贏家打出了樣本外 +16.35%、未觸碰留出視窗 +2.62%,且沒有前視洩漏——但在數完背後約 37,000 次試驗之後,折損到 DSR 0.00。樣本外洗掉的是前視;只有折損才能洗掉選擇。
  3. **原因就是虛假策略定理。**在約 30,000 次試驗下,純噪聲中的最優僅憑選擇效應就站在零上方約四西格瑪處。0.19 的日頻夏普比率恰恰就是那張彩票的派彩。你必須拿你的贏家和噪聲上限比較,永遠不要和零比較。
  4. **穩健性存在於跨品種之間,而不只是跨時間。**按五個品種的中位數來選擇,把一個單幣幻覺變成了一個可診斷的幻覺:雙時間框架 DSR 0.24 / PBO 0.264,三時間框架 DSR 0.14 / PBO 0.327——兩者都過不了兩道閘門,且三時間框架(參數更多)在每一項指標上都比雙時間框架更差。
  5. **在信任冠軍之前先把它拆開。**三時間框架的"組合"冠軍只在 5 個品種中的 1 個上盈利(SOL +14.74%;ETH −0.39%、BTC −0.38%、BNB −8.58%、XRP −4.13%),留出視窗上也只在 5 箇中的 1 個為正。一個只活在一個品種上、重新搜尋一次就挪窩的優勢不是優勢——它是披著組合外衣的過擬合。
  6. **把負面結果發表出來。**這套反過擬合裝置——DSR、PBO/CSCV、有效試驗數、跨品種選擇——之所以值得擁有,恰恰因為它有時會告訴你"不",而紀律就是在它這麼說的時候聽它的。

我們最希望它成功的策略沒有成功。我們為抓住這一點而打造的儀器,在任何一美元冒險之前,用四種彼此獨立的方式把這件事告訴了我們。這就是整個系列的意義所在,而這一篇是這個意義兌現的地方:這套機器掙到自己身價的那一天,是它攔住你的那一天——不是它奉承你的那一天。

免責宣告:本文提供的資訊僅用於教育和參考目的,不構成財務、投資或交易建議。加密貨幣交易涉及重大損失風險。

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

緊跟市場步伐

訂閱我們的時事通訊,獲取獨家 AI 交易見解、市場分析和平台更新。

我們尊重您的隱私。您可以隨時退訂。