σμ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 AcademyRoadmapsSkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
RoadmapsSkills
AO
+1,2 Tsd. Lernende
Anmelden
  • 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 AcademyRoadmapsSkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
RoadmapsSkills
AO
+1,2 Tsd. Lernende
Anmelden
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
SciPy-Skill›Modul 3 · Matrizen, Signale und Struktur›Thema 3.2·~55 Min.Mittelstufe

Korrelierte Monte-Carlo-Simulation mit Cholesky und VaR

Position in der SkillModul 3 von 3 · Thema 2 von 10
3.2 Korrelierte Monte-Carlo-Simulation mit Cholesky und VaR
—Lab-Punkte— / 100XP gesamt—Serie—

Von unabhängigem Rauschen zu korrelierten Anlagen

Ein Zufallszahlengenerator liefert unabhängige Ziehungen. Anlagen sind korreliert, eine Portfoliosimulation braucht also Ziehungen mit der richtigen Kovarianzmatrix Σ. Die Cholesky-Zerlegung findet eine untere Dreiecksmatrix L mit LLᵀ=Σ; ist dann z ein Vektor unabhängiger Standardnormalen, hat Lz genau die Kovarianz L I Lᵀ=Σ. In NumPy kommen die Ziehungen als Zeilen, man berechnet also z @ L.T für ein Array z der Form (n, d). scipy.linalg.cholesky(cov, lower=True) führt die Zerlegung aus und löst einen Fehler aus, wenn die Matrix nicht positiv definit ist, was nützlich ist: Es ist der Alarm, dass Ihre Kovarianzmatrix ein Problem hat. Mit np.random.default_rng(seed) initialisiert, ist das Experiment wiederholbar.

Mit dem Simulator lassen sich Risikozahlen berechnen. Die simulierte Portfoliorendite jeder Ziehung ist draws @ w, und der Ein-Tages-Value-at-Risk zum Niveau α ist minus das α-Quantil dieser Renditen (np.quantile). Bei normalen Ziehungen muss er mit der Varianz-Kovarianz-Formel -(wᵀμ+z_α√(wᵀΣw)) übereinstimmen, und bei zwölf Anlagen tut er das: 2,07% per Simulation und 2,08% per Formel, gegen 2,33% per Historie, weil echte Renditen dickere Ränder haben als jedes Normalmodell. Geschätzte Kovarianzmatrizen können auch scheitern: Setzt man die Korrelation zweier Anlagen auf unmögliche 1,2, wird der kleinste Eigenwert negativ (etwa -6×10⁻⁵), und Cholesky lehnt die Matrix ab. Die Standardreparatur nutzt scipy.linalg.eigh: jeden Eigenwert unter einer kleinen Untergrenze auf diese anheben, die Matrix neu aufbauen und symmetrisieren. Das Ergebnis ist positiv definit und weicht vom Original nur um etwa 3×10⁻⁵ ab.

  • Cholesky macht aus Rauschen Korrelation: z @ L.T hat die Kovarianz cov, wenn cov = L @ L.T.
  • Simulation und Formel sollten bei normalen Ziehungen übereinstimmen: Die Lücke zur Historie sind die Kosten dicker Ränder.
  • Eine gescheiterte Zerlegung ist eine Information: Eine nicht positiv definite Matrix repariert man, indem man ihre kleinen oder negativen Eigenwerte anhebt.

Lab: Was bewertet wird

  • Der Cholesky-Faktor10 Pkt.
  • Korrelierte Ziehungen20 Pkt.
  • Monte-Carlo-Value-at-Risk25 Pkt.
  • Der parametrische Value-at-Risk15 Pkt.
  • Eine Kovarianzmatrix reparieren15 Pkt.
  • Die Zwölf-Anlagen-Studie15 Pkt.
Explorer · lab-sp-19
▾ lab-sp-19
▾ data
…
bash · im Browser
learner@quantcraft:~/lab-sp-19$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-sp-19 wird auf die Startdateien zurückgesetzt und das Terminal geleert. Ihre aktuelle Lösung geht verloren – das lässt sich nicht rückgängig machen.

Wird zurückgesetzt
  • main.py → Startcode
  • Terminal-Verlauf und Testausgabe
  • Nicht eingereichte Änderungen
Bleibt erhalten
  • Beste Lab-Punktzahl
  • Ihre XP und Ihre Serie
  • Vorlesungsfortschritt und Notizen

Melde dich an, um deinen Code auszuführen.

Alle Lektionen kannst du kostenlos lesen. Erstelle ein Konto oder melde dich an, um Code auszuführen, Tests zu starten und dieses Lab abzugeben.

  • IDE im Browser mit Bash-Terminal — nichts zu installieren
  • Sofortige Bewertung, XP und dein Platz auf der Skill
Konto erstellenAnmelden
ODER
Weiter mit GitHub