σμ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.8·~45 minIntermedio

Agrupar activos por correlación

Posición en la rutaMódulo 3 de 3 · Tema 8 de 10
3.8 Agrupar activos por correlación
—Puntuación del lab— / 100XP total—Racha—

Dejar que las correlaciones dibujen los grupos

El agrupamiento jerárquico parte de una distancia entre cada par de activos. Una correlación no es una distancia, pero dᵢⱼ=√(1/2(1-ρᵢⱼ)) sí lo es: vale 0 para ρ=1, cerca de 0,71 para ρ=0 y 1 para ρ=-1, y cumple la desigualdad triangular. squareform(d, checks=False) convierte la matriz cuadrada en la lista condensada de n(n-1)/2 distancias que espera scipy.cluster.hierarchy.linkage(y, method='average'). El resultado Z es un árbol escrito en n-1 filas [izquierda, derecha, altura, tamaño]: en cada paso se fusionan los dos grupos más cercanos y la distancia entre dos grupos es el promedio de las distancias entre sus miembros.

Dos funciones leen el árbol. hierarchy.leaves_list(Z) da el orden de las hojas en el que los activos parecidos son vecinos, lo que reordena una matriz de correlación en bloques visibles. hierarchy.fcluster(Z, k, criterion='maxclust') corta el árbol en como máximo k grupos y devuelve una etiqueta por activo. Con doce acciones y ETF en 1.500 días, sin ninguna información sectorial, salen cinco grupos: tecnología (AAPL, MSFT, NVDA), bancos (JPM, BAC, GS), energía (XOM, CVX), salud (JNJ, PFE) y bonos (TLT, IEF). hierarchy.cophenet(Z, y) mide la fidelidad del árbol: correlaciona las distancias originales con las que implica el árbol y aquí da 0,96. Un valor cercano a 1 indica un buen resumen; uno bajo, que la estructura no es realmente jerárquica.

  • Una correlación no es una distancia: use √(1/2(1-ρ)) y luego squareform(..., checks=False).
  • leaves_list ordena, fcluster corta: uno da vecinos, el otro grupos.
  • La correlación cofenética cercana a 1 significa que el árbol conserva las distancias; compruébela antes de confiar en los grupos.

Lab: qué se califica

  • Distancia de correlación15 pts
  • El árbol de enlace promedio15 pts
  • El orden de las hojas15 pts
  • Cortar el árbol20 pts
  • La correlación cofenética15 pts
  • El estudio de doce activos20 pts
Explorador · lab-sp-22
▾ lab-sp-22
▾ data
…
bash · en el navegador
learner@quantcraft:~/lab-sp-22$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-sp-22 vuelve a los archivos iniciales y se limpia el terminal. Tu solución actual se perderá: no se puede deshacer.

Se restablecerá
  • main.py → código inicial
  • Historial del terminal y salida de pruebas
  • Cambios sin enviar
Se conservará
  • Mejor puntuación del lab
  • Tu XP y tu racha
  • Progreso de la lección y notas

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