M/01 · Théorie des matrices aléatoires
Spectre de valeurs propres de la matrice de corrélation des stratégies
Théorie de Marchenko–Pastur et analyse parallèle comme plancher de bruit pour les composantes principales d'une population de stratégies.
Les mathématiques
Supposez que vous observiez une matrice N × T de rendements standardisés X (chacune des N stratégies enregistrée sur T barres, chaque ligne de moyenne nulle et de variance unitaire). La matrice de corrélation empirique est
Si les lignes de X sont N(0, 1) indépendantes, c'est-à-dire qu'il n'y a aucune structure réelle, alors dans la limite conjointe N, T → ∞ avec un ratio fixe q = N/T, la distribution empirique des valeurs propres de C converge vers une densité déterministe sur un support fini [λ₋, λ₊] :
Pour des données standardisées σ² = 1. L'intervalle [λ₋, λ₊] est le bulk. Toute valeur propre hors du bulk ne peut être expliquée par le seul bruit de taille d'échantillon, c'est une candidate à une structure réelle. À q = 0,1, λ₊ ≈ 1,73 ; à q = 0,2, λ₊ ≈ 2,09 ; à q = 0,5, λ₊ ≈ 2,91. Le bulk s'élargit à mesure que q croît parce que, avec moins d'observations par dimension, les corrélations empiriques deviennent plus bruitées.
L'analyse parallèle comme nul non paramétrique
MP suppose des colonnes gaussiennes et identiquement distribuées. Les rendements réels de stratégies violent ces deux conditions. L'analyse parallèle (Horn 1965) substitue un nul entièrement piloté par les données : prenez X, permutez indépendamment chaque ligne dans le temps, recalculez les valeurs propres. Répétez B = 1000 fois et enregistrez la valeur propre maximale à chaque réplique. Le 99ᵉ percentile de cette distribution est une borne supérieure non paramétrique pour le bulk :
Permuter dans le temps préserve la distribution marginale de chaque ligne (de sorte que les rendements à queues lourdes restent à queues lourdes) mais détruit la dépendance entre lignes. Une valeur propre qui dépasse à la fois λ₊ du MP et le 99ᵉ percentile de la PA est un signal robuste.
Exemple travaillé
Prenez N = 60 stratégies, T = 300 barres, q = 0,2. Plantez un unique cluster corrélé : 10 des 60 lignes chargent un facteur commun avec une corrélation intra-cluster ρ = 0,4. Les 50 autres sont N(0,1) indépendantes.
- Bulk MP : λ₊ = (1 + √0,2)² ≈ 2,087, λ₋ ≈ 0,106.
- Valeur propre dominante théorique du cluster planté ≈ k · ρ + (1−ρ) ≈ 10 · 0,4 + 0,6 = 4,6.
- Les 59 valeurs propres restantes devraient tomber à l'intérieur de [λ₋, λ₊].
La démo interactive ci-dessous recalcule tout cela chaque fois que vous déplacez un curseur, le marqueur du bord du bulk λ₊ se déplace avec q, et toute valeur propre qui le dépasse est mise en évidence en ambre. Réduisez la taille du cluster à zéro et il ne reste que le bulk.
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.
Figures
Pourquoi c'est important pour les stratégies systématiques
Une population de stratégies à q = N/T = 0,2 (disons N = 6 000 stratégies sur T = 30 000 barres d'historique commun) présentera plusieurs facteurs apparents dans sa matrice de corrélation empirique purement par bruit de taille d'échantillon. Construire un portefeuille qui diversifie selon ces directions ne diversifiera rien, il diversifiera du bruit. La borne MP est la garde non paramétrique la moins coûteuse contre ce mode de défaillance. Dans le pipeline de production du cabinet, cette vérification est exécutée avant tout clustering ou décomposition en facteurs.
Énoncé mathématiquement équivalent : le vecteur propre dominant d'une matrice de corrélation sans structure a un ratio de participation qui est une fonction connue de q. Notre implémentation M/01 rapporte à la fois la borne supérieure du bulk et le ratio de participation du vecteur propre dominant contre sa distribution nulle.
Reproductibilité
DaruFinance / strategy-rmt
Python · implémentation de référence open-source
Invocation minimale
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]
Références
- [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.

