M/01 · Random Matrix Theory(隨機矩陣理論)
策略相關性矩陣的特徵譜
以 Marchenko–Pastur 理論與平行分析作為策略族群主成分的雜訊基準。
數學原理
假設你觀測到一個 N × T 的標準化報酬矩陣 X(N 個策略各自記錄於 T 根 K 棒上,每一列為零均值、單位變異數)。樣本相關性矩陣為
若 X 的各列為獨立的 N(0, 1),亦即不存在真實結構,則在 N, T → ∞ 且固定比值 q = N/T 的聯合極限下,C 的經驗特徵值分布會收斂到一個定義於有限支撐 [λ₋, λ₊] 上的確定性密度:
對標準化資料而言 σ² = 1。區間 [λ₋, λ₊] 即為主體(bulk)。任何落在主體之外的特徵值都無法僅以樣本規模雜訊解釋,它是真實結構的候選者。在 q = 0.1 時,λ₊ ≈ 1.73;在 q = 0.2 時,λ₊ ≈ 2.09;在 q = 0.5 時,λ₊ ≈ 2.91。主體會隨 q 增大而變寬,因為每個維度的觀測值愈少,樣本相關性就愈嘈雜。
以平行分析作為非參數虛無
MP 假設各欄為高斯且同分布。真實的策略報酬同時違反這兩者。平行分析(Horn 1965)以一個完全由資料驅動的虛無取而代之:取 X,在時間上獨立地置換每一列,再重新計算特徵值。重複 B = 1000 次,並記錄每次重抽中的最大特徵值。該分布的第 99 百分位即為主體的非參數上界:
在時間上置換會保留每一列的邊際分布(因此重尾報酬仍維持重尾),但會破壞跨列的相依性。一個同時超過 MP 的 λ₊ 且超過 PA 第 99 百分位的特徵值,即為穩健訊號。
實例演算
取 N = 60 個策略,T = 300 根 K 棒,q = 0.2。植入單一個相關群集:60 列中有 10 列載荷於一個共同因子上,群集內相關性 ρ = 0.4。其餘 50 列為獨立的 N(0,1)。
- MP 主體:λ₊ = (1 + √0.2)² ≈ 2.087,λ₋ ≈ 0.106。
- 來自植入群集的理論領先特徵值 ≈ k · ρ + (1−ρ) ≈ 10 · 0.4 + 0.6 = 4.6。
- 其餘 59 個特徵值應落在 [λ₋, λ₊] 之內。
下方的互動式示範會在你每次移動滑桿時重新計算這一切,主體邊界標記 λ₊ 會隨 q 移動,任何超過它的特徵值都會以琥珀色標示。將群集大小降到零,你便只會看到主體。
Demo: Marchenko–Pastur eigenspectrum
Generate an N×T strategy returns matrix with a planted correlated cluster. Eigenvalues outside the MP bulk are signal.
Solid curve: MP density ρ_MP(λ) for q=0.200. Bars: empirical histogram of 60 sample-correlation eigenvalues. Bars in amber are above the bulk edge λ₊=2.094, these are the signal eigenvalues.
圖表
為何這對系統性策略至關重要
一個 q = N/T = 0.2 的策略族群(譬如在 T = 30,000 根共同歷史 K 棒上的 N = 6,000 個策略),純粹因為樣本規模雜訊,就會在其經驗相關性矩陣中呈現數個表面上的因子。沿這些方向去分散的投組並不會分散任何東西,它分散的是雜訊。MP 邊界是針對此一失效模式最廉價的非參數防護。在本機構的生產流程中,這項檢查會在任何群集分析或因子分解之前先行執行。
在數學上等價的陳述:一個無結構相關性矩陣的領先特徵向量,其參與比(participation ratio)是 q 的已知函數。我們的 M/01 實作同時回報主體上界,以及領先特徵向量相對其雜訊分布的參與比。
可重現性
DaruFinance / strategy-rmt
Python · 開源參考實作
最小調用
import numpy as np
from strategy_rmt import mp_bounds, parallel_analysis
# X: N x T returns matrix (rows = strategies, cols = bars)
N, T = X.shape
C = np.corrcoef(X)
eigs = np.linalg.eigvalsh(C)
lo, hi = mp_bounds(N, T, sigma2=1.0) # (1 - sqrt(q))^2, (1 + sqrt(q))^2
signal = eigs[eigs > hi]
# Optional: parallel analysis null
pa_threshold = parallel_analysis(X, n_perm=1000, q=0.99)
robust_signal = eigs[eigs > pa_threshold]
參考文獻
- [1]Marchenko, V. A. & Pastur, L. A. (1967). Distribution of eigenvalues for some sets of random matrices. Mat. Sb. (N.S.) 72(114):4, 507–536.
- [2]Laloux, L., Cizeau, P., Bouchaud, J.-P., & Potters, M. (1999). Noise dressing of financial correlation matrices. Physical Review Letters 83(7), 1467–1470.
- [3]Plerou, V., Gopikrishnan, P., Rosenow, B., et al. (2002). Random matrix approach to cross correlations in financial data. Physical Review E 65, 066126.
- [4]Bouchaud, J.-P. & Potters, M. (2009). Financial Applications of Random Matrix Theory: a short review. in The Oxford Handbook of Random Matrix Theory.

