Du bruit indépendant aux actifs corrélés
Un générateur de nombres aléatoires donne des tirages indépendants. Les actifs sont corrélés, donc simuler un portefeuille demande des tirages ayant la bonne matrice de covariance Σ. La factorisation de Cholesky trouve une matrice triangulaire inférieure L avec LLᵀ=Σ ; si alors z est un vecteur de normales standard indépendantes, Lz a exactement la covariance L I Lᵀ=Σ. Avec NumPy les tirages arrivent en lignes, donc on calcule z @ L.T pour un tableau z de forme (n, d). scipy.linalg.cholesky(cov, lower=True) fait la factorisation et lève une erreur si la matrice n'est pas définie positive, ce qui est utile : c'est l'alarme qui signale un problème dans votre matrice de covariance. Initialisez le générateur avec np.random.default_rng(seed) et l'expérience est reproductible.
Avec le simulateur, on calcule des chiffres de risque. Le rendement simulé du portefeuille pour chaque tirage est draws @ w, et la valeur en risque à un jour au niveau α est moins le quantile d'ordre α de ces rendements (np.quantile). Pour des tirages normaux, elle doit concorder avec la formule variance–covariance -(wᵀμ+z_α√(wᵀΣw)), et pour douze actifs c'est le cas : 2,07% par simulation et 2,08% par la formule, contre 2,33% par l'historique, car les rendements réels ont des queues plus épaisses que tout modèle normal. Les matrices de covariance estimées peuvent aussi échouer : si l'on fixe la corrélation de deux actifs à un impossible 1,2, la plus petite valeur propre devient négative (environ -6×10⁻⁵) et Cholesky refuse la matrice. La réparation standard utilise scipy.linalg.eigh : remonter toute valeur propre sous un petit plancher jusqu'au plancher, reconstruire la matrice et la symétriser. Le résultat est défini positif et ne diffère de l'original que d'environ 3×10⁻⁵.
- Cholesky transforme le bruit en corrélation :
z @ L.Ta pour covariancecovquandcov = L @ L.T. - Simulation et formule doivent concorder pour des tirages normaux : l'écart avec l'historique est le coût des queues épaisses.
- Une factorisation qui échoue est une information : réparez une matrice non définie positive en relevant ses petites valeurs propres négatives.
Lab : ce qui est noté
- Le facteur de Cholesky10 pts
- Tirages corrélés20 pts
- Valeur en risque Monte Carlo25 pts
- La valeur en risque paramétrique15 pts
- Réparer une matrice de covariance15 pts
- L'étude des douze actifs15 pts