σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours SciPy›Module 3 · Matrices, signaux et structure›Sujet 3.1·~45 minIntermédiaire

L'essentiel de l'algèbre linéaire dans scipy.linalg

Position dans le parcoursModule 3 sur 3 · Sujet 1 sur 5
3.1 L'essentiel de l'algèbre linéaire dans scipy.linalg
—Score du lab— / 100XP total—Série—

Les matrices, mécanique des portefeuilles

Un problème de portefeuille est un problème de matrices. La matrice de covariance Σ\SigmaΣ contient les variances et les co-mouvements des actifs, et presque toute tâche demande de faire quelque chose avec elle. scipy.linalg.solve(A, b) résout Ax=bA\mathbf x=\mathbf bAx=b pour l'inconnue x\mathbf xx. Il ne faut pas calculer l'inverse inv(A) puis multiplier : la résolution directe fait moins de travail et perd moins de précision. La factorisation de Cholesky, linalg.cholesky(S, lower=True), découpe une matrice de covariance en Σ=LL⊤\Sigma=LL^{\top}Σ=LL⊤, où LLL est triangulaire inférieure, c'est-à-dire avec des zéros au-dessus de la diagonale. Si z\mathbf zz est un vecteur de nombres normaux standard indépendants, alors LzL\mathbf zLz a pour covariance Σ\SigmaΣ, et c'est ainsi qu'on simule des rendements corrélés.

Les valeurs propres de Σ\SigmaΣ disent combien de sources de risque indépendantes il y a vraiment. linalg.eigvalsh(S) les renvoie pour une matrice symétrique, de la plus petite à la plus grande. Pour deux actifs de corrélation ρ\rhoρ, la matrice de corrélation a pour valeurs propres 1+ρ1+\rho1+ρ et 1−ρ1-\rho1−ρ, donc des actifs très corrélés ont une grande valeur propre et une toute petite. Le rapport de la plus grande à la plus petite valeur propre est le conditionnement. Un conditionnement élevé signifie que la matrice est presque singulière, c'est-à-dire presque impossible à inverser, et qu'un petit changement des données peut faire beaucoup varier la solution. Les optimiseurs qui prennent l'inverse de Σ\SigmaΣ sont sensibles à cela.

Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmax⁡λmin⁡A\mathbf x=\mathbf b\ \Rightarrow\ \mathbf x=\text{solve}(A,\mathbf b),\qquad \Sigma=LL^{\top},\quad \mathbf r=L\mathbf z,\qquad \kappa(\Sigma)=\frac{\lambda_{\max}}{\lambda_{\min}}Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmin​λmax​​(1)
Deux actifs à la mainPrenons Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​). Son facteur de Cholesky est L=(2012)L=\begin{pmatrix}2&0\\1&\sqrt2\end{pmatrix}L=(21​02​​), car LL⊤LL^{\top}LL⊤ donne 444, 222, 222 et 1+2=31+2=31+2=3. Pour des tirages indépendants z=(1;1)z=(1;1)z=(1;1), le tirage corrélé est Lz=(2; 1+2)=(2; 2,414)Lz=(2;\,1+\sqrt2)=(2;\,2{,}414)Lz=(2;1+2​)=(2;2,414). Pour résoudre (2113)x=(35)\begin{pmatrix}2&1\\1&3\end{pmatrix}\mathbf x=\begin{pmatrix}3\\5\end{pmatrix}(21​13​)x=(35​), on élimine et on trouve x=(0,8; 1,4)\mathbf x=(0{,}8;\,1{,}4)x=(0,8;1,4). Une matrice de corrélation avec ρ=0,9\rho=0{,}9ρ=0,9 a pour valeurs propres 1,91{,}91,9 et 0,10{,}10,1, donc le premier facteur porte 1,9/2=95%1{,}9/2=95\%1,9/2=95% de la variance totale. Une matrice de valeurs propres 111 et 333 a un conditionnement de 333. Sur données réelles, SPY, QQQ et TLT sur 5 4045\,4045404 jours ont une corrélation de 0,920{,}920,92 entre SPY et QQQ et d'environ −0,3-0{,}3−0,3 entre chacun d'eux et TLT. La matrice de corrélation a pour valeurs propres 0,080{,}080,08, 0,860{,}860,86 et 2,062{,}062,06, donc un facteur porte 69%69\%69% de la variance, et le conditionnement est 262626.
  • Résoudre, ne pas inverser : solve(A, b) est plus rapide et plus précis que inv(A) @ b.
  • Cholesky fabrique la corrélation : multipliez des normales indépendantes par LLL pour obtenir des rendements de covariance Σ\SigmaΣ.
  • Surveiller le conditionnement : des actifs très corrélés rendent Σ\SigmaΣ presque singulière et les solutions instables.

Lab : ce qui est noté

  • Le facteur de Cholesky20 pts
  • Résoudre un système10 pts
  • Un conditionnement10 pts
  • La part de variance d'un facteur10 pts
  • À quoi sert chaque routine15 pts
  • Simuler des rendements corrélés10 pts
  • Pourquoi ne pas inverser25 pts
0/ 7 traités
Exercices
1Matrice · vecteur20 ptsSans réponse

Trouvez la matrice triangulaire inférieure LLL telle que LL⊤=Σ=(4223)LL^{\top}=\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}LL⊤=Σ=(42​23​). Saisissez LLL (utilisez 1,41421{,}41421,4142 pour 2\sqrt22​).

L=L =L=
2Réponse numérique10 ptsSans réponse

Résolvez 2x1+x2=32x_1+x_2=32x1​+x2​=3 et x1+3x2=5x_1+3x_2=5x1​+3x2​=5. Que vaut x2x_2x2​ ? Donnez une décimale.

x=x =x=accepté : ± 0.02
3Réponse numérique10 ptsSans réponse

Une matrice symétrique a pour valeurs propres 111 et 333. Quel est son conditionnement, la plus grande valeur propre divisée par la plus petite ?

k=k =k=accepté : ± 0.01
4Réponse numérique10 ptsSans réponse

Deux actifs de corrélation 0,90{,}90,9 ont pour valeurs propres de la matrice de corrélation 1,91{,}91,9 et 0,10{,}10,1. Quel pourcentage de la variance totale le premier facteur porte-t-il ?

s=s =s=accepté : ± 0.5
5Associer15 ptsSans réponse

Associez chaque routine de scipy.linalg à son rôle dans le travail sur les portefeuilles.

Choisissez le partenaire de chaque élément de gauche.

solve
cholesky
eigvalsh
lstsq
6Remettre les étapes dans l'ordre10 ptsSans réponse

Mettez dans l'ordre les étapes de simulation de rendements quotidiens corrélés.

Faites glisser pour réordonner, ou placez le focus sur un élément, Espace pour le soulever, les flèches pour le déplacer et Espace pour le déposer.

  1. 1Vérifier que la covariance empirique est proche de la cible
  2. 2Multiplier les tirages normaux par L
  3. 3Estimer la matrice de covariance à partir de l'historique
  4. 4Tirer des nombres normaux standard indépendants
  5. 5La factoriser par Cholesky
7Expliquer avec des mots25 ptsSans réponse

En une ou deux phrases, expliquez pourquoi solve(A, b) est préférable à inv(A) @ b, et ce qu'un grand conditionnement signale.

Mode mathsSaisie au clavier ou en LaTeXExercice 1 sur 7 · Ctrl ⏎ pour vérifier

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub