### 組合分割 為了應用CPCV我們討論一種稱為"組合分割( Combinatorial Splits)"的高級分割方法。 假設我們有 T 個觀察值,並且我們將這些觀察值劃分成 N 個群組。每個群組(除了最後一個)有 ⌊T/N⌋ 個觀察值,其中 ⌊.⌋ 是向下取整函數。最後一個群組的大小則是 T - ⌊T/N⌋(N - 1)。 現在,假設我們想要從這 N 個群組中選擇 k 個群組作為測試集。那麼,我們能夠以多少種不同的方式來進行這樣的分割呢?答案是組合數學中的 $\binom{N}{N - k}$,或者可以用公式 $\frac{\prod_{i=0}^{k-1} (N - i)}{k!}$來計算。 它實際上有一個很實用的應用:反向測試路徑,記為 $\phi[N, k]$。這個數字告訴我們,在給定的 N 和 k 下,有多少種不同的"路徑"可以用於反向測試。 要計算這個數字,我們使用公式 $\phi[N, k] = k \binom{N}{N - k} = \frac{\prod_{i=1}^{k-1} (N - i)}{(k - 1)!}$。 實務上,我們通常設定$k \leq \frac{N}{2}$,這樣訓練集的大小就會至少是數據的一半。隨著 N 趨近於 T(總數量的觀察值)和 k 趨近於$\frac{N}{2}$,可用於反向測試的路徑數量將增加。 ### 組合式清除交叉驗證(CPCV)反向測試演算法 我們現在將這些概念用於通過交叉驗證進行反向測試。CPCV反向測試演算法如下: 1. 把 T 個觀察值劃分成 N 個群組,不進行洗牌。其中 n = 1, ..., N - 1 的群組大小為 ⌊T∕N⌋,第 N 個群組的大小為 T - ⌊T∕N⌋ (N - 1)。 2. 計算所有可能的訓練/測試分割,其中每個分割的訓練集由 N - k 個群組組成,測試集由 k 個群組組成。 3. 對於任何一對標籤(yi, yj),其中 yi 屬於訓練集,yj 屬於測試集,應用 PurgedKFold 類來清除 yi,如果 yi 橫跨用於確定標籤 yj 的期間。如果一些測試樣本早於一些訓練樣本,這個類也會應用封鎖。 4. 在 $\binom{N}{N - k}$ 個訓練集上適用分類器,並在相應的 $\binom{N}{N - k}$ 個測試集上產生預測。 5. 計算 $\phi[N, k]$ 反向測試路徑。您可以從每條路徑計算一個夏普比率(Sharpe Ratio),並從中得出策略的夏普比率的經驗分佈(而不是像 WF 或 CV 那樣的單一夏普比率)。 ### 舉幾個例子 對於$k = 1$,我們將獲得 $\phi[N, 1] = 1$ 條路徑,此時 CPCV 降為 CV。因此,對於 $k > 1$,CPCV 可以被理解為 CV 的一種泛化。 對於 $k = 2$,我們將獲得 $\phi[N, 2] = N - 1$ 條路徑。這是一個特別有趣的情況,因為在對大部分的數據進行訓練時,$\theta = 1 - \frac{2}{N}$,我們幾乎可以生成與群組數 $N - 1$ 一樣多的反向測試路徑。一個簡單的經驗法則是將數據劃分成 $N = \phi + 1$個群組,其中 $\phi$ 是我們目標的路徑數量,然後形成$\binom{N}{N - 2}$個組合。極限情況下,我們可以將一個群組指定給每個觀察值,$N = T$,並生成$\phi[T, 2] = T - 1$條路徑,同時在每個組合中以$\theta = 1 - \frac{2}{T}$的數據部分來訓練分類器。 如果需要更多的路徑,我們可以增加$k \rightarrow \frac{N}{2}$,但如前所述,這將會以使用更少數據集部分進行訓練為代價。實際上,通常$k = 2$就足夠生成所需的$\phi$條路徑,方法是設定$N = \phi + 1 \leq T$。 ### 如何用組合式淨化交叉驗證 (CPCV) 避免回測過度擬合 如果你有一堆隨機數字,這些數字基本上是常態分布的(也就是說,大部分數字集中在中間),你可以用一個數學公式來估算這些數字中最多的一個大概是多少。這在數學和金融領域有很多應用。 現在,假設有個研究人員在市場上測了很多策略。即使這些策略實際上沒有真正的優勢(也就是說,他們表現得像隨機數字),我們還是會發現一個看似表現很好的策略。 通常的回測方式(WF回測)有個問題:它會過度依賴少數幾個數據點,導致結果非常不穩定。這會讓研究人員選擇錯誤的最佳策略,即使那個策略實際上並不優越。 因此,我們需要更好的模型評估方法,像是[FWER](https://blog.csdn.net/shengchaohua163/article/details/86738462)、偽陽性率(FDR)和[回測過度擬合機率(PBO)](https://zhuanlan.zhihu.com/p/47440419),強烈建議要看一下這幾個連結討論。 交叉驗證(CV回測)嘗試解決這個問題,它會在多個數據集上訓練和測試策略。但這還不夠,因為它仍然只從一條“路徑”(也就是一組特定的數據)來評估每個策略。 這就是組合式淨化交叉驗證(CPCV)派上用場的地方。它不僅僅從一條路徑來評估,而是考慮多條路徑,從而更全面地了解策略的表現。 CPCV的優點是它會減少錯誤地選擇表面上好但實際上不好的策略的風險。當你有足夠多的“路徑”或數據集時,CPCV能讓你更準確地估計一個策略的真實表現。 研究或評估投資策略,使用CPCV會是一個好主意,因為它可以幫你更準確地找出真正有用的策略,並避免因為過度擬合而做出錯誤的選擇。 這樣,我們就能減少不準確結果。這對解決回測過度擬合,也就是金融統計學中最重要的未解問題,具有重要意義。