研究評述 · López de Prado · 標籤化與交叉驗證
標籤化與交叉驗證
你如何標籤、如何驗證,會製造出幻影優勢,或將其消解。三項橫跨多市場、計入成本、以 DSR 把關的研究,談如何把兩者都做對。
每一個金融機器學習結果的上游都坐著兩個決定:你如何把原始價格轉成可學習的目標(標籤),以及你如何留出資料來給模型評分(交叉驗證)。做錯了,回測就會製造出從不存在的優勢;做對了,許多表面優勢便會消解。本頁在同樣三個真實、完全計入成本的市場,加密、美股與外匯,共 42 個工具,上重現了 López de Prado 的三種方法,並以一把誠實的尺規 Deflated Sharpe Ratio (DSR) 來衡量。下方的互動探索器讓你親眼看見標準 k-fold 如何洩漏,並明白為何單一回測切分幾乎沒有意義。
Advances in Financial ML,第 3 & 7 章
López de Prado (2018) · labeling & cross-validation
程式碼與資料,三項重現
github.com/DaruFinance/lopez-de-prado-work-review · 專案 03 / 04 / 05
交叉驗證
the claim
López de Prado 的主張
標準 k-fold 假設觀測為 IID,但金融標籤是由一段未來 bar 的窗口構成,因此重疊的標籤會共享資訊。把測試 fold 放在序列中段,鄰近的訓練點就會伸進去,模型在答案上受訓,分數被樂觀地偏高。他的修正:purge 掉重疊的標籤、在測試 fold 之後 embargo 一段區帶,並使用 Combinatorial Purged CV (CPCV) 取得 out-of-sample 路徑的完整分布。
our result
我們的發現
在合理的模型下,洩漏是真實且方向正確的,但很小,即使重疊很大也低於 2pp,並在 AUC(而非準確率)上清楚可見。我們把 LdP 隱含陳述的一條規律明確化:膨脹隨 H/fold 大小變動,因此短視窗標籤套在長歷史的股票上幾乎不洩漏。更大的教訓出自 CPCV:out-of-sample 路徑分布橫跨約 15pp,約為洩漏偏差的 50 倍,單切分回測只是一次近乎無意義的抽樣。
triple-barrier 與 meta-labeling
the claim
López de Prado 的主張
以一個按波動率縮放的下注先觸及三道障壁中的哪一道(止盈/止損/最長持有)來標籤。接著是 meta-labeling:主模型固定方向,次級分類器預測下注是否獲利,決定是否行動與下注規模,提升 precision,把高 recall、低 precision 的主模型轉化為可交易之物。
our result
我們的發現
meta-labeling 確實如他所言,它提升 precision 與原始 profit factor,在 38/42 個工具上見效,並把一個因成本而虧損的主模型推向損益兩平。但套在一個普通的 EMA 交叉主模型上,它是 precision 過濾器,不是 alpha 來源:42 個工具中 0 個越過 DSR > 0.95。過濾器只能集中已存在的優勢。
trend-scanning 標籤
the claim
López de Prado 的主張
固定持有期是武斷的,且丟棄了資訊。對每個觀測,取統計上最顯著的局部前瞻趨勢之符號,在一段前瞻期區帶上最大化 OLS 斜率 t 值,並把該顯著性作為樣本權重,讓資料挑出趨勢最清楚之處。
our result
我們的發現
在 profit factor 上是溫和而真實的改進(在 28/42 上勝過 fixed-horizon,p=0.022),但經緊縮後不顯著,DSR>0.95 的存活者基本打平(19 對 18)。可轉移的效應是前瞻期區帶,而非標籤器本身:短的 (5,30)-bar 視窗到處崩潰,而 (10,60)/(20,120) 站得住。triple-barrier 的 meta 疊加在此並未增添任何緊縮後的價值。
三項研究,三句話
交叉驗證
標準 k-fold 會洩漏;purge 可消除
因為重疊的標籤共享未來 bar,普通 k-fold 會樂觀地給同一個金融 ML 模型評分。此偏差出現在準確率看不見的 AUC 上,並隨 H/fold 大小之比縮放,在短歷史的加密上高達 +1.69 pp AUC,在長歷史的股票上則平坦。Purged k-fold + embargo 可消除它。而 CPCV 揭示更深的問題:其 out-of-sample 分布橫跨約 15 pp,約為洩漏偏差的 50 倍,因此一次切分只是一個武斷的點。
meta-labeling
一個 precision 過濾器,不是 alpha
一個決定是否對主訊號行動的次級模型,在 38/42 個工具上提升原始 profit factor、在 39/42 上提升 DSR,正是 López de Prado 所述的 precision 提升。但不論主模型或 meta 變體,42 個中 0 個越過 DSR>0.95。meta-labeling 只能集中主模型已有的優勢;在一個普通交叉上,沒有東西可集中成緊縮後的勝利。
trend-scanning
優勢在於視野,不在標籤器
由資料挑選的趨勢標籤在 profit factor 上勝過 fixed-horizon,於 28/42 個工具見效(符號檢定 p=0.022),但在真正重要的指標上不然:DSR>0.95 的存活者為 19(trend-scan)對 18(固定)對 19(triple-barrier),打平。真正重要的是前瞻期區帶:短的 (5,30)-bar 視窗到處崩潰;(10,60)/(20,120) 在三個市場都站得住。
共同的紀律
三項研究都建立在同一基礎上:真實的 1 分鐘資料轉為資訊驅動 bar(加密與股票用 dollar bar,外匯用 tick bar),每一次部位變動都計入成本(加密 7 bp,股票 2 bp/真實點差,外匯 1 bp/真實點差),每一個前瞻物件都限縮在標籤之內,每一個次級模型都在 purged k-fold 下訓練以免重疊標籤洩漏,而每一項裁決都在誠實計數試驗後讀自 Deflated Sharpe Ratio,絕不取單一回測數字。
標準 k-fold 在金融上會洩漏,而單一切分幾乎沒有意義
金融標籤是由一段未來 bar 的窗口構成,因此窗口重疊的兩個標籤會共享資訊。把測試 fold 放在序列中段,鄰近的訓練點就會伸進去,模型在答案上受訓,交叉驗證分數因而被樂觀地偏高。
López de Prado 的修正:purge 掉每一個其標籤窗口與測試 fold 重疊的訓練觀測,在其後緊接著 embargo 一小段區帶,並使用 CPCV 取得整個 out-of-sample 路徑分布,而非僅僅一條。
這次重現證實了全部三項主張,並使其中一項更鋒利。洩漏是真實的,但小而隱微,在典型視野下只有幾個十分之一百分點,這正是它危險之處:它能熬過天真的健全性檢查。它在使用完整預測機率的 AUC 上可見,而在準確率上幾乎不可見,因為後者的 fold 間雜訊(±0.5–1 pp)會淹沒它。請用平滑、以機率為基礎的指標做洩漏稽核,而非以閾值為界的指標。
超出教科書的貢獻是這條縮放律: 洩漏幅度隨 H/fold 大小之比變動,而非僅隨 H。 一個測試 fold 只在其兩側邊界各一段寬約 H 的區帶內被汙染,因此被汙染比例約為 2H/(n/k)。短歷史的加密與外匯(fold ≈ 1.4k bar)洩漏顯著,大重疊時 AUC 膨脹升至 +1.69 pp(加密)與 +1.07 pp(外匯),而長歷史股票(fold ≈ 7k bar)保持平坦:即使 H=150 也僅佔一個 fold 約 2%。股票並非免疫;是其長歷史把邊界比例壓得極小。永遠要 purge,它免費且正確,但要預期修正幅度會隨 H/fold 大小縮放。
看它洩漏
此探索器編碼了本研究實測的 AUC 膨脹網格。滑動標籤重疊 H,讀取各資產類別的洩漏減去 purge 後的差距;下方面板顯示 BTCUSDT 的 CPCV out-of-sample 雲圖,對照那個佯裝成回測的單一切分。
Demo, k-fold 洩漏探索器
滑動標籤重疊 H,兩個相鄰標籤共享的未來 bar 數,並觀察標準 k-fold 相對一個 purge + embargo 的切分,如何樂觀地給同一模型評分。差距是真實的,並隨 H/fold 大小之比增長:在短歷史的加密與外匯上飆升,在長歷史的股票上保持平坦。
膨脹是洩漏的標準 k-fold 相對乾淨的 purge + embargo 切分多報的 AUC,單位為百分點(實測,取自本研究的網格)。當切分被正確 purge 時,洩漏即在源頭被移除:「乾淨」的讀數才是誠實的。
At H=50 標準 k-fold 把加密多評了 +0.53 pp 的 AUC,外匯多評了 +0.45 pp,而股票基本保持平坦(-0.47 pp),同一條 H/fold 大小律,而非市場免疫。且無論洩漏如何,下方的 CPCV 雲圖橫跨約 15 pp 的 out-of-sample 準確率:一次切分只是一個武斷的點,約為洩漏偏差的 50 倍。
| AUC 膨脹(pp)· H = | 1 | 5 | 10 | 25 | 50 | 100 | 150 |
|---|---|---|---|---|---|---|---|
| crypto | 0.03 | 0.24 | 0.19 | 0.21 | 0.53 | 0.36 | 1.69 |
| equity | 0.02 | 0.04 | -0.01 | -0.09 | -0.47 | -0.46 | -0.03 |
| forex | 0.12 | 0.17 | -0.00 | 0.27 | 0.45 | 1.07 | 0.85 |
AUC 膨脹 = 洩漏的標準 k-fold − purge+embargo,單位為百分點,對各市場工具取平均。正值=洩漏的切分把同一模型評得過高。加密與外匯隨 H 上升;股票依 H/fold 大小律保持平坦。一旦標籤已正確 purge,embargo 即為一個次要的二階保險,保持在約 1%。
程式碼與資料
lopez-de-prado-work-review / projects / 04_cross_validation
一個把輸家救到損益兩平的 precision 過濾器,但永遠救不到緊縮後的優勢
主訊號固定每一筆下注的方向(此處為結構性 EMA 交叉)。triple-barrier 標籤,止盈、止損與一道最長持有的垂直線,依完整 intrabar OHLC 的首次觸及計分,給出已實現結果。次級分類器接著預測 P(下注獲利)並決定 是否行動與多大規模;它可以否決與定量,但絕不翻轉方向。
López de Prado 的主張是,這能把一個高 recall、低 precision 的主模型轉化為可交易之物。確實如此,在 42 個工具上實測,precision 提升真實且近乎普遍。
meta 層做的正如教科書所言:它把已行動下注中獲利的比例提升到無條件比率之上,在 38/42 個工具上提升 profit factor、在 39/42 上提升 DSR,並把 PF>1 的工具數約略翻倍(從 12 到 24)。權益曲線即是寫照:主模型因成本持續失血,而 meta 線藉由否決壞下注保持近乎平坦。
然而42 個工具中 0 個越過 DSR>0.95,主模型或 meta 變體皆然。這個讀數正是本研究的重點:「相對一個爛主模型的原始改進」與「熬過緊縮」是不同的尺規,而只有後者算數。meta-labeling 是一個 precision 過濾器,不是 alpha 來源。它只能保留主模型已提出之下注中較好的子集;若那些下注在計入成本後不帶真實優勢,而流動市場上的普通 EMA 交叉並不帶,就沒有東西可集中成緊縮後的勝利。單項最佳結果(SPY,meta DSR 0.76)僅建立在 6 筆已行動交易上,被標記為小樣本偽影,選擇留下可見而非隱藏。股票最為接近(最高的 precision 提升,meta DSR 中位數 0.095),但仍未達標。
| 市場 | PF 主→meta | SR 主→meta | DSR 主→meta | DSR>0.95 | PBO |
|---|---|---|---|---|---|
| 加密(27 永續) | 0.92 → 1.03 | −0.61 → +0.24 | 0.000 → 0.017 | 0 | 0.41 |
| 美股(7 ETF) | 0.75 → 1.03 | −0.68 → +0.31 | 0.000 → 0.095 | 0 | 0.38 |
| 外匯(8 主要) | 0.85 → 0.94 | −1.13 → −0.27 | 0.000 → 0.000 | 0 | 0.19 |
依市場的中位數,已扣成本;SR 已年化;DSR 為焦點。meta 在各處提升 PF 與 SR,但 DSR>0.95 的存活者數在每個市場皆為 0, precision 過濾器沒有真實優勢可供集中。
修正:對一個已有優勢的 primary 做 meta-labeling
上面的結論,“一個 precision 過濾器,不是 alpha”,是在一個無優勢的 primary 上量測的:一個扣除成本後沒有既定優勢的普通 EMA 交叉。這正是 López de Prado 所告誡的情形。他的 meta-labeling 有一個明示的前提條件:primary 必須 已經具有優勢(高 recall、平庸 的 precision),而 secondary 的工作是藉由否決其最差的下注來提升 precision。過濾 器只能集中已存在的優勢;在一個非優勢上,沒有東西可集中。因此上面那個全面的零結果 是關於 primary 的陳述,而非關於方法本身。
為了按規格測試此方法,我們以一個已驗證的結構性 order-flow / open-interest 優勢取代了普通交叉 ,一個封閉、預先驗證的策略,透過其已驗證的引擎以唯讀方式重用,並重跑了完全相同的 裝置:triple-barrier 結果、在因果 features 上的樹狀 secondary、purged walk-forward、逐筆成交成本、以 DSR 為焦點。唯一改變的,正是真正重要的那一點: primary 現在帶有真實優勢。
在前提條件滿足下,secondary 是放大優勢,而非拯救一個輸家。在一個聚焦的兩配對樣本上,profit factor 從 1.26 升至 1.79,每筆 P&L 中位由樣本外的47 升至 148 bp,已扣逐筆成交成本。閘門保留了優勢下注的 64% 並否決低信心的尾部,把獲利下注率由 53.0% 提升至 63.6%,正是教科書所述的 precision 提升,現在作用於確實帶有優勢的下注上,因此顯現在 P&L 中,而不僅是 混淆矩陣中。
緊縮後的指標也朝正確方向移動:DSR 由 0.64 升至 0.78。但它仍低於本計畫 0.95 的發表門檻。這是一個聚焦的兩配對示範;重點是 該修正的 方向與機制,它推翻了全面的“不是 alpha”主張,而非 一座新的通過緊縮的獎盃。此提升在兩個配對上個別皆成立(PF 1.32→1.49 與 1.23→1.96)。
| 臂(OOS,2 配對) | 交易數 | PF | 每筆 bp | 年化 SR | DSR |
|---|---|---|---|---|---|
| primary(僅優勢) | 166 | 1.26 | 47.3 | 10.3 | 0.636 |
| meta(閘門+依 p 定規模) | 107 | 1.79 | 148.1 | 20.5 | 0.778 |
樣本外,已扣逐筆成交成本,兩配對樣本。一旦 primary 有真實優勢,PF 與每筆 P&L 即急升;DSR 由 0.636→0.778 上升,但未越過 0.95 門檻。焦點是在同一緊縮下 primary 對比 meta 的比較,而非 DSR 的絕對水準。
但在規模上被沖淡
兩配對的量級無法在廣度下存活。把同一個前提滿足的 meta 閘門套用於6 個封閉的結構性優勢 × 26 個 perp 配對(156 個配置中有 154 個 產生了交易)並誠實地計入試驗族,提升大致被沖淡。Profit factor 中位僅由 0.967→0.986(中位提升 +0.02,相對兩配對樣本的 +0.53),而每筆 P&L 中位由 −5.9→−1.2 bp(中位提升 +4.7 bp,相對 +100 bp)。修正的方向廣泛存活;但 其量級的焦點數字並不能類推。
而且在規模上沒有任何配置越過緊縮。154 個 meta 閘門配置中只有1 個越過 DSR>0.95(最佳單一 sleeve:某配對上的 funding squeeze,meta DSR 0.983);各 sleeve 的 meta DSR 中位僅 0.1。把這些閘門 sleeve 匯聚為一個弱相關的 meta 策略,相對於實際搜尋過的 156 個配置的離散度做緊縮,得到 匯聚後的 DSR 為 0.0(基準 0.35、匯聚 PF 0.98、14,725 筆樣本外 交易)。它未越過 0.95 門檻。
誠實的綜述:全面的“不是 alpha”主張是關於無優勢的 primary 的陳述,而非關於 meta-labeling。在 López de Prado 的前提條件 滿足下,此機制是真實且具方向性的,在一個聚焦樣本上,secondary 確實放大了一個已有優勢的 primary,把每筆 P&L 大致增為三倍,並把 profit factor 由 1.26 提升至 1.79。
然而它無法在規模加上緊縮下作為可交易優勢存活:聚焦的量級無法 類推到 156 個配置,而匯聚的 meta 策略緊縮至零。修正後的解讀正是 López de Prado 實際所作的,並把前提條件還原到句首:meta-labeling 改善你已經擁有的優勢;它 無法製造一個你沒有的優勢,而在方向上改善一個優勢,並不等同於在規模上越過緊縮 門檻。
程式碼與資料
lopez-de-prado-work-review / projects / 03_meta_labeling
一個略好的標籤,但優勢在於視野,不在標籤器
trend-scanning 不採固定持有期,而是在一段區帶內的每個前瞻窗口上對時間迴歸對數價格,並以統計上最顯著的局部趨勢之符號為每個觀測標籤,即在各視野上最大化的 OLS 斜率 t 值。資料挑出趨勢最清楚的視野,而該顯著性成為樣本權重。
正面對決:在餵入同一個相同的次級模型時,這是否比它本該勝過的 fixed-horizon 標籤器,以及比 triple-barrier 的 meta 疊加,構成更好的監督式目標?
trend-scanning 在 profit factor 上是溫和而真實的改進:在 28/42 個工具上勝過 fixed-horizon(符號檢定 p=0.022)。由資料挑選的視野是貨真價實的,勝出的 L* 介於 24–111 bar,且追隨區帶而非貼著邊角。但在真正重要的指標上是打平: DSR>0.95 的存活者為 19(trend-scan)對 18(fixed-horizon),而 trend-scan 的 DSR 勝率(21/42,p=0.56)並不顯著。triple-barrier 的 meta 疊加在此未增添任何緊縮後價值,且在 DSR 上顯著更差(p=0.9995),其對稱障壁幾乎從不被觸及,於是 meta 模型約 97% 的時間都在行動,只是徒增試驗的離散度。
可轉移的發現是這條穩健性曲線: 優勢取決於一段夠長的前瞻窗口,而非標籤器。 (10,60) 與 (20,120) 區帶在三個市場都穩健地強勁(DSR 中位數 0.83–1.00,PF>1);短的 (5,30) 區帶崩潰,股票跌到 DSR 0/PF 0.79,加密腰斬,因為短窗口被微結構雜訊與每次換手成本所主導。(值得標註的一則技術說明:在這些高事件數下,每個工具的 DSR 飽和到 {0,1},因此誠實的摘要是存活者數與符號檢定,而非 DSR 中位數。)
| 市場 | PF 固定→TS | SR_年化(TS) | DSR 固定→TS | DSR>0.95 固定/TS | PBO(TS) |
|---|---|---|---|---|---|
| 加密(27 永續) | 1.22 → 1.36 | 4.88 | 0.508 → 0.376 | 11 / 12 | 0.46 |
| 美股(7 ETF) | 1.86 → 1.89 | 4.03 | 0.004 → 0.340 | 3 / 3 | 0.06 |
| 外匯(8 主要) | 1.50 → 1.46 | 7.99 | 0.753 → 0.853 | 4 / 4 | 0.47 |
依市場的中位數(深化跑批),已扣真實成本;SR 已年化。trend-scan 在 PF 上勝過 fixed-horizon,但 DSR>0.95 的存活者數基本打平(全部 42 個中 19 對 18)。
| trend-scan DSR · 前瞻區帶 | (5,30) | (10,60) | (20,120) |
|---|---|---|---|
| 加密 | 0.497 | 0.833 | 0.882 |
| 美股 | 0.000 | 0.981 | 1.000 |
| 外匯 | 0.972 | 0.997 | 1.000 |
trend-scan DSR 在各區帶內就其三次分位試驗加以緊縮。短的 (5,30) 區帶崩潰;較寬的區帶在三個市場都站得住,優勢在於視野長度,不在標籤器。
程式碼與資料
lopez-de-prado-work-review / projects / 05_trend_scanning
貫穿的主線
三項研究,一個教訓。你如何驗證決定了你能否誠實地看見一個結果:標準 k-fold 悄悄抬高分數,而即使一個乾淨的單一切分,也只是來自一個橫跨其所修正洩漏約 50 倍之分布的一次抽樣。你如何標籤決定了有什麼優勢可找:一個否決壞下注的 precision 過濾器,或一個更聰明的趨勢視野,兩者在原始數字上都是真實改進,卻都不足以憑己之力製造出緊縮後的優勢。
共同的主線是那把尺規。在三類資產的 42 個工具上,完全計入成本且控制洩漏,這些方法做的正是文獻所言,然後 Deflated Sharpe Ratio 把大部分表面收益消解殆盡。「改善了回測」與「熬過緊縮」之間的這道落差,正是把標籤化與交叉驗證做對的全部意義所在。
方法概要
- 真實的 1 分鐘資料 → 資訊驅動 bar(加密/股票於常規時段用 dollar bar,外匯用 tick bar);每個工具約 20k bar。
- 每一次部位變動都計入成本(加密 7 bp;股票/外匯用按時段的點差 + 佣金真實層或 2 bp/1 bp);triple-barrier 掃描使用完整 intrabar OHLC,絕不僅用收盤。
- 僅用因果特徵;唯一的前瞻物件是標籤。次級模型在帶 1% embargo 的 purged k-fold 下訓練,使重疊標籤無法洩漏。
- 裁決在誠實計數試驗後讀自 Deflated Sharpe Ratio,並以 PBO 與有效 N 作為輔助的緊縮診斷,絕不取單一回測數字。
- 熱迴圈(標籤建構、triple-barrier 首次觸及、多視野 OLS-t 掃描)以 Numba kernel 實作,並對照獨立參照驗證為位元相同;模型擬合(正確地)仍是瓶頸。
引用
參考文獻
此處重現之方法的主要來源:
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Ch. 3 (labeling & meta-labeling), Ch. 4 (sample weights), Ch. 7 (cross-validation in finance) and Ch. 12 (backtesting through cross-validation / CPCV).
- López de Prado, M. (2020). Machine Learning for Asset Managers. Cambridge University Press. Ch. 5 (trend-scanning labels).
- Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality. Journal of Portfolio Management, 40(5).
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4).
另見
這些研究共用在 Backtest Overfitting & the Deflated Sharpe Ratio 中發展的 Deflated-Sharpe 把關,以及來自 Information-Driven Bars 的資訊驅動 bar。更廣泛的成果見於 Research。

