σμ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
  • 日本語
  • 中文
Hidden Markov Models-Skill›Modul 3 · Regime an den Märkten›Thema 3.4·~1 Std. 40 Min.Fortgeschritten

Abschlussprojekt: ein Regime-Detektor für Hausse Baisse und Krise auf Indexdaten

Position in der SkillModul 3 von 3 · Thema 4 von 4
3.4 Abschlussprojekt: ein Regime-Detektor für Hausse Baisse und Krise auf Indexdaten
—Lab-Punkte— / 100XP gesamt—Serie—

Ein Regime-Detektor, den Sie selbst bauen

In diesem Abschlussprojekt bauen Sie ein Hidden-Markov-Modell nur mit NumPy und lassen es auf zwanzig Jahren SPY laufen. Das Modell sagt, dass der Markt an jedem Tag in einem von drei verborgenen Regimen ist, ruhig, normal oder stürmisch, die Sie nie sehen. Jedes Regime hat eigene typische Rendite und Volatilität, und das Regime von morgen hängt über eine Übergangsmatrix A nur vom heutigen ab. Der Vorwärtsdurchlauf macht aus den Renditen an jedem Tag eine Wahrscheinlichkeit je Regime. Ein Rückwärtsdurchlauf fügt hinzu, was die späteren Tage sagen. Viterbi findet den einen wahrscheinlichsten Pfad. Baum-Welch wiederholt diese Schritte, um die Regimezahlen aus den Daten zu lernen.

αₜ=((αₜ₋₁A)·Bₜ)/cₜ, βₜ=(A (Bₜ₊₁·βₜ₊₁))/(cₜ₊₁), γₜ=(αₜ·βₜ)/(Σ(αₜ·βₜ)), log L=Σₜlog cₜ

Alles ist skaliert. Teilt man die Vorwärtszahlen jedes Tages durch ihre Summe cₜ, schrumpfen sie über Tausende Tage nicht auf null, und die Summe der log cₜ ist genau die Log-Likelihood. Viterbi arbeitet aus demselben Grund mit Logarithmen. Im Baum-Welch-Schritt dienen die geglätteten Wahrscheinlichkeiten γ als Gewichte: Mittelwert und Volatilität jedes Regimes sind der gewichtete Mittelwert und die gewichtete Streuung der Renditen, und die Übergangszählungen stammen aus der Wahrscheinlichkeit, an jedem Tag von i nach j zu wechseln. Jede Runde kann die Log-Likelihood nur erhöhen, ein guter Test für Ihren Code. In der letzten Funktion handeln Sie mit den angepassten Regimen: Ein Signal sagt die Krisenwahrscheinlichkeit vom Vortag voraus (ehrlich), das andere liest sie aus den geglätteten Wahrscheinlichkeiten (Look-ahead).

Was die echten Daten sagenAuf den 5 404 SPY-Renditen seit 2005 finden vierzig Runden von einem groben Start aus drei Regime mit annualisierten Volatilitäten von etwa 8%, 19% und 51%. Ihre jährlichen Mittel liegen bei etwa +30%, -1% und -73%, und jedes Regime ist sehr zäh: Es bleibt an etwa 96% bis 97% der Tage bestehen. Die Log-Likelihood steigt von etwa 17 544 auf 17 803. Entlang des Viterbi-Pfads verbringt der Markt etwa 52% der Tage im ruhigen, 41% im normalen und 6% im Krisenregime. Nur investiert zu bleiben, solange die Krisenwahrscheinlichkeit unter einhalb liegt, ergibt eine annualisierte Sharpe-Ratio von 0,52 für Buy-and-Hold, 0,66 für das ehrliche gefilterte Signal und 1,12 für das geglättete. Diese letzte Lücke ist die Look-ahead-Falle in Aktion.
  • Jeden Schritt skalieren: durch die Tagessumme teilen und die Logarithmen addieren, sonst laufen Tausende Tage gegen null.
  • Mit Brute Force prüfen: Für wenige Tage lassen sich alle Zustandspfade auflisten und vergleichen. Die Log-Likelihood darf von Runde zu Runde nie fallen.
  • Nur ehrliche Signale: Morgen aus den heutigen gefilterten Wahrscheinlichkeiten vorhersagen. Geglättete schmeicheln dem Backtest.
Vereinfachungen, die man kennen sollteRenditen innerhalb eines Regimes werden als normal und unabhängig behandelt, was dicke Ränder ignoriert. Die Zahl der Regime ist auf drei festgelegt. Das Modell wird einmal auf der ganzen Stichprobe angepasst, sodass selbst das ehrliche gefilterte Signal Zahlen nutzt, die aus der Zukunft gelernt wurden. Ein strenger Test passt nur auf Vergangenheit neu an und berücksichtigt Handelskosten. Die Schwelle von einhalb ist nicht optimiert.

Lab: Was bewertet wird

  • Emissionswahrscheinlichkeiten10 Pkt.
  • Der Vorwärtsalgorithmus20 Pkt.
  • Der Rückwärtsalgorithmus10 Pkt.
  • Das Glätten5 Pkt.
  • Die Viterbi-Dekodierung15 Pkt.
  • Die Baum-Welch-Anpassung25 Pkt.
  • Die Regime-Studie15 Pkt.
Explorer · lab-hm-10
▾ lab-hm-10
▾ data
…
bash · im Browser
learner@quantcraft:~/lab-hm-10$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-hm-10 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