σμ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.5·~1 Std. 30 Min.Fortgeschritten

Abschlussprojekt: eine Nelson-Siegel-Zinskurve und ein Volatilitäts-Smile kalibrieren

Position in der SkillModul 3 von 3 · Thema 5 von 5
3.5 Abschlussprojekt: eine Nelson-Siegel-Zinskurve und ein Volatilitäts-Smile kalibrieren
—Lab-Punkte— / 100XP gesamt—Serie—

Vier Zahlen für eine ganze Kurve

Der Markt notiert US-Treasury-Renditen bei zehn Laufzeiten von 3 Monaten bis 30 Jahren, aber eine Bank braucht einen Zins für jedes Datum. In diesem Abschlussprojekt beschreiben Sie die ganze Kurve mit den vier Zahlen des Nelson-Siegel-Modells: einem langfristigen Niveau β₀, einer Steigung β₁, einem Buckel β₂ und einer Abklinglänge λ in Jahren. Sie kalibrieren sie mit scipy.optimize.least_squares an die Notierungen, starten von mehreren Werten für λ, weil die Kurve darin nicht linear ist, und behalten die Anpassung mit den niedrigsten Kosten. Aus der angepassten Kurve lesen Sie einen Terminzins ab und integrieren die Kurve der momentanen Terminzinsen mit integrate.quad, um einen Diskontfaktor D(T)=e^(-A/100) zu erhalten, wobei A die Fläche unter der Terminkurve in Prozent ist.

Dieselbe Kurve bewertet eine Anleihe. Jede Zahlung wird mit der Rendite ihrer eigenen Laufzeit diskontiert, P=Σcᵢ e^(-y(tᵢ)tᵢ/100), und die Rendite bis zur Fälligkeit ist der eine Zins, der den Preis wieder ergibt, gefunden mit optimize.brentq. Optionen funktionieren genauso: Die implizite Volatilität ist die Nullstelle von bs_call(σ)-Preis, wieder mit brentq gefunden. Echte Optionsnotierungen gehören nicht zu den gemeinsamen Daten, daher testen Sie das Smile an Preisen, die Sie mit der gegebenen Funktion bs_call selbst erzeugen, und passen das Smile σ(m)=a+b m+c m² in der Log-Moneyness m=ln(K/S) nach kleinsten Quadraten an. Jede Funktion wird mit Zufallseingaben gegen eine unabhängige Referenz bewertet, und der letzte Test führt Ihre gesamte Studie auf der echten Treasury-Datei aus.

y(τ)=β₀+β₁g+β₂ (g-e^(-x)), x=τ/λ, g=(1-e^(-x))/x, D(T)=e^(-A/100)
Was die echte Kurve sagtAm 9. Oktober 2026 werden die zehn notierten Renditen von einer Kurve mit β₀=5,75%, β₁=-1,52, β₂≈0 und λ=2,7 Jahren getroffen, mit einem mittleren Fehler von 7,3 Basispunkten. Der Terminzins zwischen 5 und 10 Jahren beträgt 5,64%, der 10-Jahres-Diskontfaktor 0,586 und eine 5-%-Jahreskupon-Anleihe über 10 Jahre kostet 96,70, eine Rendite von 5,29%. Am 31. März 2020, mitten in der Marktpanik, lag das Niveau bei 1,87%, der Anpassungsfehler bei nur 1,7 Basispunkten, der 5-bis-10-Jahres-Terminzins bei 1,02%, der 10-Jahres-Diskontfaktor bei 0,931 und dieselbe Anleihe rentierte mit 0,67%.
  • Von mehreren Starts kalibrieren: Die Abklinglänge macht die Anpassung nichtlinear, ein einzelner Start kann bei einer schlechten Kurve stoppen.
  • Mit einem zweiten Weg prüfen: Der Diskontfaktor aus der integrierten Terminkurve muss dem aus der Rendite entsprechen.
  • Nullstellen bewerten den Markt: Eine Rendite bis zur Fälligkeit und eine implizite Volatilität sind beide mit brentq auf einem Preisfehler gefundene Nullstellen.

Lab: Was bewertet wird

  • Die notierte Kurve eines Tages5 Pkt.
  • Die Nelson-Siegel-Rendite10 Pkt.
  • Die Kurve kalibrieren15 Pkt.
  • Ein Terminzins10 Pkt.
  • Ein Diskontfaktor aus Terminzinsen10 Pkt.
  • Ein Anleihepreis aus der Kurve10 Pkt.
  • Eine Rendite bis zur Fälligkeit10 Pkt.
  • Eine implizite Volatilität10 Pkt.
  • Ein quadratisches Smile10 Pkt.
  • Die gesamte Kalibrierung10 Pkt.
Explorer · lab-sp-11
▾ lab-sp-11
▾ data
…
bash · im Browser
learner@quantcraft:~/lab-sp-11$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-sp-11 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