研究評論 · 樣本加權 · 研究 10
Sample Uniqueness & the Sequential Bootstrap
重疊的 triple-barrier 標籤共享未來報酬,因此一列並非獨立觀測,我們衡量這對你的樣本量高估得有多嚴重,確認 sequential bootstrap 能還原 sample uniqueness,並追問修正這一點是否真的有助於模型
當你用 triple-barrier 為一根 K 棒貼標籤時,第 t 根 K 棒的標籤是由直到第一道屏障被觸及為止整段區間的價格路徑所決定的。兩個區間重疊的標籤被部分相同的未來報酬所驅動,因此它們並不獨立,而支撐 bootstrapping、bagging 與樣本量計數的「一列一觀測」假設是錯的。López de Prado 以 concurrency、平均 sample uniqueness 與 effective sample size 來衡量這一點,並提出 sequential bootstrap來抽取較不冗餘的樣本。我們在三個市場的真實 K 棒上完整重現了這一切,然後追問那個真正要緊的問題:這項修正是改善了模型的泛化,還是只改善了它的帳面?下方的互動演示讓你看到 effective sample size 隨標籤重疊而崩落。
Advances in Financial ML,第 4 章
López de Prado (2018) · sample weights & uniqueness
程式碼與資料
lopez-de-prado-work-review / projects / 15
the claim
López de Prado 的主張
- 一個 triple-barrier 標籤在一段區間上解析,因此區間重疊的標籤共享未來報酬,並非 IID。把每一列當作一個獨立觀測會高估你所掌握的資訊,並使 bootstrapping、bagging 與樣本量計數過擬合。
- Concurrency(一根 K 棒上有多少標籤存活)、平均 sample uniqueness(一個標籤生命期內 1/concurrency 的平均)與 effective sample size(uniqueness 的總和,遠低於列數)量化了這個問題。Sequential bootstrap 偏好與已抽取列重疊較少的列來抽樣,因此 bagging 模型在較不冗餘、較獨特的資料上訓練。
our result
我們的發現
- 每個市場的重疊都很嚴重:平均 sample uniqueness 為 0.44(加密貨幣)、0.41(股票)與 0.41(外匯)。每個標的中位數約 15,000 個標籤,只值約 6,000–6,600 個真正獨立的觀測,effective N 約為原始計數的 41–44%。
- Sequential bootstrap 在全部 42 個標的中(42/42)都提高了抽取樣本的 uniqueness(中位數提升約 +0.016 至 +0.018)。這個機制主張普遍重現;在此重疊水準下,絕對提升幅度不大。
- 誠實的裁決:這些修正縮小了樣本內對樣本外的過擬合落差(40/42 個標的),並穩定了 feature importance(34/42),完全如理論所預測,但它們並未改善樣本外(out-of-sample)的判別力(樸素 bagging 在全部 42 個的 log-loss 上勝出,AUC 約 0.62 樸素 vs 約 0.56 修正後)。這是一種穩健性處理,而非績效優勢;是一個方法論結果,而非賺錢結果。
三行說清結果
重疊 · 42 個標的
effective N 約為列數的 41–44%
在 27 個加密貨幣永續、7 個美股 ETF 與 8 個外匯主要貨幣對(各約 20,000 根 K 棒)中,平均 sample uniqueness 依市場為 0.44 / 0.41 / 0.41。中位數約 15,000 個重疊標籤只承載約 6,000–6,600 個真正獨立的觀測。一個把列當作 IID 計數的工作流程,會假設比實際存在的多出一倍以上的資訊。
Sequential bootstrap · 42/42
bootstrap 主張處處重現
在全部 42 個標的的每一個中,sequential bootstrap 樣本的平均 sample uniqueness 都高於標準 IID bootstrap,中位數提升約 +0.016 至 +0.018。機制完全如所宣稱;提升幅度不大,是因為在平均 concurrency 接近 2.3 時,可移除的冗餘就只有那麼多。每個 kernel(concurrency、uniqueness、序列抽取、CUSUM、權重)都經逐位元相同驗證,對照一個獨立參考。
過擬合 ↓,AUC ↓
穩健性,而非績效
這些修正在樣本層面做到了理論所說的,過擬合落差在 40/42 個標的中縮小,feature importance 的穩定性在 34/42 中改善,但原始的樣本外判別力略差:樸素 bagging 在全部 42 個的 OOS log-loss 較低且 AUC 較高(約 0.62 vs 約 0.56)。在這個單一序列的貼標問題上,修正用一點訊號換取了誠實。方法論結果,無可交易的組合。
觀看 effective sample size 崩落
拖動平均標籤跨距。隨著標籤存活更久,它們重疊得更多,concurrency 上升,平均 sample uniqueness 下降,而 effective sample size 跌到遠低於原始列數。第二個分頁將 sequential bootstrap 與標準 IID bootstrap 對比。曲線是固定於真實多市場運行的示意封閉解。
互動演示的重點是:非獨立並非邊角案例,它是任何按區間解析之標籤的通常狀態,並隨標籤解析所需時間平滑地放大。在現實的操作點(在 CUSUM 事件時鐘上平均跨距約 3 根 K 棒)平均 concurrency 約 2.3、平均 sample uniqueness 約 0.44,因此 effective sample size 不到列數的一半。把屏障加寬、把持有拉長,uniqueness 會單調地趨向零,正如劑量反應圖所示。這是對一種資訊核算效應的機制示意,並非可交易的訊號。
互動演示,重疊、uniqueness 與 sequential bootstrap
拖動標籤水平距以沿時間軸拉伸每個 triple-barrier 跨距。重疊的跨距共享未來報酬,因此每個標籤的 uniqueness 權重(其生命期內 1/concurrency 的平均)下降。接著一次抽取一個標籤組成 bootstrap 樣本:sequential 抽取會避開與已持有樣本重疊的標籤,因此其平均 uniqueness 升到樸素 IID bootstrap 之上。對一種資訊核算效應的機制示意,並非可交易的訊號。
一個 triple-barrier 標籤在首次觸及前存活多少根 K 棒;更寬的屏障與更長的持有會把它往上推
平均 sample uniqueness 是一個標籤生命期內 1/concurrency 的平均:一個大多時候獨自存活的標籤得分接近 1,一個被重疊掩埋的標籤得分接近 0。把所有標籤的 uniqueness 相加,得到 effective sample size,真正獨立觀測的數量,它遠低於原始列數。把列當作獨立來計數,會高估你實際掌握的資訊量。
重疊嚴重且 effective sample size 崩落
在三個市場的每個標的中,平均 sample uniqueness 都落在 0.40 到 0.49 之間。標籤的資訊含量大約是原始列數所暗示的 41 到 44 個百分點。一個把 15,000 個重疊標籤當作 15,000 個獨立觀測的樸素工作流程,會假設比實際存在的多出一倍以上的資訊。
Effective sample size 是各標籤平均 sample uniqueness 的總和,每個標的中位數約 15,000 個標籤只值約 6,000–6,600 個真正獨立的觀測。這個效應在股票與外匯中比在加密貨幣中略差,與它們略高的平均 concurrency 一致。
你一半的樣本被重複計算
將 effective sample size 對樸素列數作圖,使成本變得具體:每個市場都落在對角線的約 41 到 44 個百分點。一個中位數約 15,000 個標籤的標的只承載約 6,000–6,600 個獨立觀測。股票與外匯略低於加密貨幣,與它們略高的平均 concurrency 一致。任何把列當作 IID 計數的樣本量、信賴區間或 bootstrap 計算,誤差都超過兩倍。
更寬的屏障讓情況更糟
重疊是由區間長度所驅動。加寬屏障會拉長持有區間、提高 concurrency,並把平均 sample uniqueness 在每個市場中 單調地往下推:把屏障寬度加倍大約讓 uniqueness 減半(≈0.44 → ≈0.20),再加倍一次則把它砍到 ≈0.07。無論標籤設計如何,教訓都一樣,一個標籤解析所需時間越長,它就越不獨立。
Sequential bootstrap 如所宣稱地提高 uniqueness
在全部 42 個標的(42/42),無一例外,sequential bootstrap 樣本的平均 sample uniqueness 都高於標準 IID bootstrap 樣本。以 uniqueness 計,中位數提升約 +0.016 至 +0.018。這個機制主張乾淨且普遍地重現。此處提升的絕對幅度不大,是因為在平均 concurrency 接近 2.3 時可移除的冗餘就只有那麼多,但方向從不失誤。
它對模型有幫助嗎?穩健性,而非判別力
這裡的結果比教科書更有意思。修正後的 ensemble,按平均 uniqueness 縮放的 sequential bootstrap bags、以報酬歸因加權的樹,在樣本層面確實做到了理論所說的。樣本內對樣本外的 log-loss 落差在 42 個中的 40 個標的中縮小,而跨 fold 的 feature importance 穩定性在 42 個中的 34 個中改善。模型的泛化更接近它的訓練方式,且自我解釋更可重現。
但原始的樣本外判別力略 差:樸素 bagging 在全部 42 個標的中都有較低的樣本外 log-loss,且平均 AUC 較高(約 0.62 樸素對 0.56 修正後)。較小、按 uniqueness 縮放、重新加權的 bags 看到較少的有效資料,因此修正後的 ensemble 捕捉到的訊號略少。在這個單一序列、弱訊號的貼標問題上,修正是一種穩健性與誠實處理,而非免費的績效提升。
而模型的自我解釋趨於穩定
穩健性故事的後半段是可重現性。Feature importance 的跨 fold 等級相關性在 42 個中的 34 個標的中因修正而更高,在加密貨幣與外匯中最為顯著,因此模型對於它為何做出其預測的說法在各 fold 間更穩定。移除冗餘、被重複計算的觀測,可阻止少數重複列主導一份重要性排名。這與過擬合落差是同一個教訓:修正買到的是誠實與穩定,而非額外的判別力。
從 uniqueness 到 deflation:誠實的 false-discovery 懲罰
下游的模型效益較為微妙,但 sample uniqueness 有一項明確且可量化的回報,它修正了你餵入 顯著性檢定的樣本數。一個 Sharpe ratio 的信賴度取決於其背後 獨立觀測值的數量。若你餵入原始的列數,等於宣稱握有超過實際兩倍的證據,於是檢定統計量、其標準誤、以及任何多重檢定的 deflation 全都會偏向過於樂觀。
將每觀測 Sharpe 固定在 0.025,並維持 selection trials 不變,下表兩欄之間唯一變動的就是樣本數。把約 15,000 個重疊標籤當作獨立,會使 Sharpe 顯著性統計量被高估約 1.50× 至 1.57×,並以相同倍數放大 Sharpe 標準誤。Deflated Sharpe Ratio 下降約 0.07,足以把一個臨界策略從可接受推向勉強。改用 effective sample size,即標籤 uniqueness 的總和,約為 N 的 41 至 44 個百分點,才是誠實的計數。
這就是從標籤化章節通往 deflation 章節的橋樑:uniqueness 對於 trial 計數與 false-discovery 控制至關重要,而非對原始的 out-of-sample 準確度。在此水準下,要通過 95% 機率性 Sharpe 的最短 track record 長度為 ≈4,331 個獨立觀測值,這是一道固定門檻,因此一段在列數上看似足夠長的紀錄,在誠實計數下仍可能不足。
| 市場 | N(nominal) | N(effective) | SE inflation | DSR(nominal) | DSR(effective) | DSR 下降 |
|---|---|---|---|---|---|---|
| 加密貨幣 | 14,986 | 6,639 | 1.50× | 0.720 | 0.651 | −0.069 |
| 股票 | 14,742 | 6,111 | 1.55× | 0.718 | 0.645 | −0.073 |
| 外匯 | 14,892 | 6,070 | 1.57× | 0.719 | 0.645 | −0.075 |
每觀測 Sharpe 固定在 0.025;selection trials 與 trial-Sharpe 變異數維持不變,常態分配報酬,nominal 與 effective 兩欄之間僅樣本數變動。SE inflation 是 Sharpe 標準誤在 nominal 計數對 effective 計數的比值(與顯著性統計量的高估幅度相同);DSR drop 是改用誠實 effective 計數時 Deflated Sharpe Ratio 的下降量。
各市場與各標的明細
數字,依市場與依標的
| 市場 | 標的數 | N 中位數 | uniqueness | effective N | effN / N | 序列提升 | 樸素落差 | 修正後落差 |
|---|---|---|---|---|---|---|---|---|
| 加密貨幣 | 27 | 14,986 | 0.443 | 6,645 | 44.3% | +0.016 | 0.0111 | 0.0071 |
| 股票 | 7 | 14,742 | 0.415 | 6,114 | 41.5% | +0.018 | 0.0163 | 0.0107 |
| 外匯 | 8 | 14,892 | 0.408 | 6,048 | 40.8% | +0.017 | 0.0116 | 0.0080 |
各市場中位數。平均 sample uniqueness 依構造等於 effective-N 比率(effN = Σ uniqueness)。Sequential bootstrap 提升是(序列 − 標準)抽取樣本 uniqueness 的中位數;過擬合落差是樣本內對樣本外 log-loss 落差的中位數,樸素 vs 修正後。
| 市場 | 標的 | uniqueness | effective N | concurrency | 序列提升 | AUC 樸素 | AUC 修正後 |
|---|---|---|---|---|---|---|---|
| 加密貨幣 | BTCUSDT | 0.450 | 6,795 | 2.27 | +0.014 | 0.607 | 0.557 |
| 加密貨幣 | ETHUSDT | 0.452 | 6,770 | 2.25 | +0.015 | 0.613 | 0.568 |
| 加密貨幣 | SOLUSDT | 0.447 | 6,766 | 2.29 | +0.016 | 0.615 | 0.565 |
| 股票 | SPY | 0.485 | 7,198 | 2.17 | +0.023 | 0.691 | 0.652 |
| 股票 | QQQ | 0.490 | 7,220 | 2.14 | +0.022 | 0.686 | 0.651 |
| 股票 | XLK | 0.399 | 5,851 | 2.74 | +0.018 | 0.590 | 0.517 |
| 外匯 | EURUSD | 0.406 | 6,030 | 2.57 | +0.015 | 0.592 | 0.532 |
| 外匯 | GBPUSD | 0.405 | 6,029 | 2.60 | +0.019 | 0.592 | 0.535 |
| 外匯 | USDJPY | 0.399 | 5,922 | 2.64 | +0.018 | 0.595 | 0.531 |
三個市場中的代表性標的(完整的各標的明細見儲存庫)。Concurrency 是一根 K 棒上存活標籤的平均數量;AUC 為樣本外,樸素 vs 修正後。
方法
- 資料,僅用真實資料,每個標的的完整可用歷史:27 個 Binance USD 保證金永續期貨(1 分鐘基礎 K 棒聚合為 dollar bars)、7 個流動的美股 ETF(SPY、QQQ、IWM、XLK、XLF、XLE、XLV;常規交易時段的 dollar bars),以及 8 個外匯主要貨幣對(tick bars,因為現貨外匯沒有成交量)。每個標的被縮減到約 20,000 根 K 棒,使各市場在共同基準上比較。
- 事件以對稱 CUSUM 濾波器抽樣(每當自上一事件以來的累積絕對 log 報酬越過一個按波動率縮放的閾值時,便觸發一個標籤)。每個事件以使用完整盤中 high/low,絕不僅用收盤價,的 triple-barrier 貼標,因此首次觸及區間 [t0, t1] 是真實的持有跨距。二元標籤是首次觸及時按方向帶號的毛報酬是否為正。
- 一切皆為因果:第 t0 根 K 棒的標籤向前在時間中解析,但以其真實區間歸屬於 t0,而 t0 處的每個 feature 只使用 t0 當時或之前可得的資訊。
- 資訊核算:concurrency c_t 是第 t 根 K 棒上存活標籤的數量;一個標籤的平均 sample uniqueness 是其區間內 1/c_t 的平均;effective sample size 是所有標籤平均 sample uniqueness 的總和。屏障寬度掃描加寬屏障並重新衡量 uniqueness 與 concurrency。
- 模型問題:在帶 embargo 的 purged k-fold cross-validation 下使用 bagging 決策樹,因此沒有訓練標籤洩漏進測試 fold。樸素 = 標準 IID bagging、全尺寸 bags、無加權樹。修正 = 每個 bag 由 sequential bootstrap 抽取、bag 大小按平均 sample uniqueness 縮放,且樹以報酬歸因樣本權重加權。我們評分樣本外 log-loss 與 AUC、樣本內對樣本外 log-loss 落差,以及跨 fold 的 feature importance 穩定性。
- 驗證:concurrency 掃描、平均 sample uniqueness 掃描、CUSUM 濾波器與 sequential bootstrap 抽取皆以 Numba 編譯,且各自對照一個獨立的純 Python 參考為逐位元相同(最大 |Δ| = 0)。Sequential bootstrap 採用一種增量公式,精確重現教科書二次版本的抽取序列,同時將記憶體峰值維持在 3 GB 以下;兩個封閉解合成檢查(不相交的單位區間 → uniqueness 1;N 個相同區間 → uniqueness 1/N)驗證該估計量,且絕不作為結果報告。
備註與誠實評估
這是一項 方法論的貢獻,而非「標籤加權賺錢」的結果,且全篇都如此框定。資訊核算效應是真實的,且處處重現:重疊標籤所承載的獨立資訊不到其計數所暗示的一半,而 sequential bootstrap 可靠地提高 sample uniqueness。下游模型的好處則更為微妙,值得明白地說。非-IID 修正減少了過擬合並穩定了 feature importance,但在這個單一序列方向貼標問題上,它們並未改善樣本外判別力;它們略微降低了它。這些修正最好理解為一種穩健性與誠實處理,而非績效推進器。本研究量化了一種資訊核算效應及其後果,並不宣稱有可交易的優勢。
可重現性
concurrency 與 uniqueness 掃描、CUSUM 濾波器、sequential bootstrap、bagging ensemble 比較、圖表與驗證框架都收錄於 project 15(隸屬於 lopez-de-prado-work-review)。本頁的互動演示是自包含的:uniqueness、effective-N 與 sequential bootstrap 關係的封閉解已編碼於元件之中並固定於該運行的錨點,因此它所闡明的機制在每次載入時都精確重現。
引用
參考文獻
此處所評論方法的主要來源:
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. (Chapter 4, “Sample Weights”, and Chapter 7, “Cross-Validation in Finance”.)
- López de Prado, M. (2020). Machine Learning for Asset Managers. Cambridge Elements in Quantitative Finance.
- Breiman, L. (1996). Bagging Predictors. Machine Learning, 24(2), 123–140.
- Politis, D. N., & Romano, J. P. (1994). The Stationary Bootstrap. Journal of the American Statistical Association, 89(428), 1303–1313.
另見
關於多重檢定 deflation 的姊妹研究是 Backtest Overfitting & the Deflated Sharpe Ratio,因果圖的批評是 Causal Factor Investing,選擇紀律的主題貫穿 The edge is in the process,而更廣泛的工作匯集於 Research。

