σμ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 AcademyHojas de rutaRutas
Ctrl K
AO
+1,2 k estudiantes
Iniciar sesiónUnirse ↗
Hojas de rutaRutas
AO
+1,2 k estudiantes
Iniciar sesión
  • 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 AcademyHojas de rutaRutas
Ctrl K
AO
+1,2 k estudiantes
Iniciar sesiónUnirse ↗
Hojas de rutaRutas
AO
+1,2 k estudiantes
Iniciar sesión
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Ruta de SciPy›Módulo 3 · Matrices, señales y estructura›Tema 3.1·~45 minIntermedio

Lo esencial del álgebra lineal en scipy.linalg

Posición en la rutaMódulo 3 de 3 · Tema 1 de 5
3.1 Lo esencial del álgebra lineal en scipy.linalg
—Puntuación del lab— / 100XP total—Racha—

Las matrices, la maquinaria de las carteras

Un problema de carteras es un problema de matrices. La matriz de covarianzas Σ\SigmaΣ contiene las varianzas y los co-movimientos de los activos, y casi toda tarea pide hacer algo con ella. scipy.linalg.solve(A, b) resuelve Ax=bA\mathbf x=\mathbf bAx=b para la incógnita x\mathbf xx. No se debe calcular la inversa inv(A) y multiplicar: la resolución directa hace menos trabajo y pierde menos precisión. La factorización de Cholesky, linalg.cholesky(S, lower=True), descompone una matriz de covarianzas como Σ=LL⊤\Sigma=LL^{\top}Σ=LL⊤, donde LLL es triangular inferior, es decir, con ceros sobre la diagonal. Si z\mathbf zz es un vector de números normales estándar independientes, entonces LzL\mathbf zLz tiene covarianza Σ\SigmaΣ, y así se simulan rendimientos correlacionados.

Los valores propios de Σ\SigmaΣ dicen cuántas fuentes independientes de riesgo hay en realidad. linalg.eigvalsh(S) los devuelve para una matriz simétrica, del menor al mayor. Para dos activos con correlación ρ\rhoρ, la matriz de correlación tiene valores propios 1+ρ1+\rho1+ρ y 1−ρ1-\rho1−ρ, así que activos muy correlacionados tienen un valor propio grande y uno diminuto. El cociente entre el mayor y el menor es el número de condición. Un número de condición grande significa que la matriz es casi singular, es decir, casi imposible de invertir, y un pequeño cambio en los datos puede mover mucho el resultado. Los optimizadores que toman la inversa de Σ\SigmaΣ son sensibles justo a esto.

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)
Dos activos a manoTomemos Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​). Su factor de Cholesky es L=(2012)L=\begin{pmatrix}2&0\\1&\sqrt2\end{pmatrix}L=(21​02​​), porque LL⊤LL^{\top}LL⊤ da 444, 222, 222 y 1+2=31+2=31+2=3. Para sorteos independientes z=(1;1)z=(1;1)z=(1;1), el sorteo correlacionado es Lz=(2; 1+2)=(2; 2,414)Lz=(2;\,1+\sqrt2)=(2;\,2{,}414)Lz=(2;1+2​)=(2;2,414). Para resolver (2113)x=(35)\begin{pmatrix}2&1\\1&3\end{pmatrix}\mathbf x=\begin{pmatrix}3\\5\end{pmatrix}(21​13​)x=(35​) se elimina y se halla x=(0,8; 1,4)\mathbf x=(0{,}8;\,1{,}4)x=(0,8;1,4). Una matriz de correlación con ρ=0,9\rho=0{,}9ρ=0,9 tiene valores propios 1,91{,}91,9 y 0,10{,}10,1, así que el primer factor lleva 1,9/2=95%1{,}9/2=95\%1,9/2=95% de la varianza total. Una matriz con valores propios 111 y 333 tiene número de condición 333. Con datos reales, SPY, QQQ y TLT en 5 4045\,4045404 días tienen una correlación de 0,920{,}920,92 entre SPY y QQQ y de unos −0,3-0{,}3−0,3 entre cada uno y TLT. La matriz de correlación tiene valores propios 0,080{,}080,08, 0,860{,}860,86 y 2,062{,}062,06, así que un factor lleva el 69%69\%69% de la varianza, y el número de condición es 262626.
  • Resolver, no invertir: solve(A, b) es más rápido y preciso que inv(A) @ b.
  • Cholesky fabrica correlación: multiplique normales independientes por LLL para obtener rendimientos con covarianza Σ\SigmaΣ.
  • Vigilar el número de condición: activos muy correlacionados hacen Σ\SigmaΣ casi singular y las soluciones inestables.

Lab: qué se califica

  • El factor de Cholesky20 pts
  • Resolver un sistema10 pts
  • Un número de condición10 pts
  • La parte de varianza de un factor10 pts
  • Para qué sirve cada rutina15 pts
  • Simular rendimientos correlacionados10 pts
  • Por qué no invertir25 pts
0/ 7 respondidos
Ejercicios
1Matriz · vector20 ptsSin responder

Halle la matriz triangular inferior LLL con LL⊤=Σ=(4223)LL^{\top}=\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}LL⊤=Σ=(42​23​). Introduzca LLL (use 1,41421{,}41421,4142 para 2\sqrt22​).

L=L =L=
2Respuesta numérica10 ptsSin responder

Resuelva 2x1+x2=32x_1+x_2=32x1​+x2​=3 y x1+3x2=5x_1+3x_2=5x1​+3x2​=5. ¿Cuánto vale x2x_2x2​? Dé un decimal.

x=x =x=aceptado: ± 0.02
3Respuesta numérica10 ptsSin responder

Una matriz simétrica tiene valores propios 111 y 333. ¿Cuál es su número de condición, el mayor valor propio dividido por el menor?

k=k =k=aceptado: ± 0.01
4Respuesta numérica10 ptsSin responder

Dos activos con correlación 0,90{,}90,9 tienen valores propios de la matriz de correlación 1,91{,}91,9 y 0,10{,}10,1. ¿Qué porcentaje de la varianza total lleva el primer factor?

s=s =s=aceptado: ± 0.5
5Emparejar15 ptsSin responder

Empareje cada rutina de scipy.linalg con su tarea en el trabajo con carteras.

Elige la pareja de cada elemento de la izquierda.

solve
cholesky
eigvalsh
lstsq
6Ordenar los pasos10 ptsSin responder

Ordene los pasos para simular rendimientos diarios correlacionados.

Arrastra para reordenar, o enfoca un elemento, pulsa Espacio para levantarlo, las flechas para moverlo y Espacio para soltarlo.

  1. 1Comprobar que la covarianza muestral se acerca al objetivo
  2. 2Multiplicar los sorteos normales por L
  3. 3Estimar la matriz de covarianzas a partir del historial
  4. 4Sortear números normales estándar independientes
  5. 5Factorizarla con Cholesky
7Explicar con palabras25 ptsSin responder

En una o dos frases, explique por qué se prefiere solve(A, b) a inv(A) @ b y de qué avisa un número de condición grande.

Modo matemáticasEntrada por teclado o LaTeXEjercicio 1 de 7 · Ctrl ⏎ para comprobar

Inicia sesión para ejecutar tu código.

Todas las clases se pueden leer gratis. Crea una cuenta o inicia sesión para ejecutar código, lanzar las pruebas y enviar este lab.

  • IDE en el navegador con terminal bash — sin instalar nada
  • Corrección instantánea, XP y tu lugar en la ruta
Crear una cuentaIniciar sesión
O
Continuar con GitHub