σμ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 1 · Anpassen und finden›Thema 1.6·~50 Min.Mittelstufe

Kleinste Quadrate und Kurvenanpassung

Position in der SkillModul 1 von 3 · Thema 6 von 6
1.6 Kleinste Quadrate und Kurvenanpassung
—Lab-Punkte— / 100XP gesamt—Serie—

Eine Kurve anpassen, indem man die Fehler verkleinert

Viele Modelle sind Kurven mit wenigen Parametern, und Anpassen heißt, die Parameter zu wählen, bei denen die Kurve nah an den Daten liegt. scipy.optimize.least_squares(fun, x0) tut das. Sie schreiben fun(p), das den Vektor der Residuen liefert, eines je Datenpunkt, wobei ein Residuum der Modellwert minus der Datenwert ist. Die Funktion minimiert dann die Kosten 12∑ri2\tfrac12\sum r_i^221​∑ri2​. Sie startet bei Ihrer Vermutung x0 und geht Schritte mit der Jacobi-Matrix JJJ, der Tabelle, wie sich jedes Residuum ändert, wenn sich jeder Parameter ändert. Ein Gauss-Newton-Schritt löst J⊤J δ=−J⊤rJ^{\top}J\,\delta=-J^{\top}rJ⊤Jδ=−J⊤r und verschiebt die Parameter um δ\deltaδ. Bei einem in den Parametern linearen Modell trifft ein einziger Schritt die Lösung. bounds=(unten, oben) hält Parameter in einem sinnvollen Bereich. curve_fit ist eine freundlichere Hülle, die das Modell f(x,Parameter)f(x,\text{Parameter})f(x,Parameter) direkt nimmt.

Quadrierte Fehler lassen einen wilden Punkt dominieren: Ein Residuum von 101010 zählt 100100100. Ein robuster Verlust wächst bei großen Residuen langsamer. Mit loss='soft_l1' und f_scale=1 ist die Strafe ρ(z)=2(1+z−1)\rho(z)=2(\sqrt{1+z}-1)ρ(z)=2(1+z​−1), wobei zzz das quadrierte Residuum ist. Die Anpassung von Zinskurven ist der klassische Einsatz. Die Nelson-Siegel-Kurve ist y(τ)=β0+β11−e−τ/λτ/λ+β2(1−e−τ/λτ/λ−e−τ/λ)y(\tau)=\beta_0+\beta_1\frac{1-e^{-\tau/\lambda}}{\tau/\lambda}+\beta_2\Big(\frac{1-e^{-\tau/\lambda}}{\tau/\lambda}-e^{-\tau/\lambda}\Big)y(τ)=β0​+β1​τ/λ1−e−τ/λ​+β2​(τ/λ1−e−τ/λ​−e−τ/λ). Sie hat ein langfristiges Niveau β0\beta_0β0​, eine Steigung β1\beta_1β1​, einen Buckel β2\beta_2β2​ und eine Abklinglänge λ\lambdaλ in Jahren, und vier Zahlen beschreiben die ganze Kurve. Nach der Anpassung wird das Rauschniveau durch s=SSE/(n−p)s=\sqrt{\mathrm{SSE}/(n-p)}s=SSE/(n−p)​ geschätzt, mit nnn Punkten und ppp Parametern.

δ=−(J⊤J)−1J⊤r,cost=12∑ri2,ρ(z)=2(1+z−1),s=SSEn−p\delta=-(J^{\top}J)^{-1}J^{\top}r,\qquad \text{cost}=\tfrac12\sum r_i^{2},\qquad \rho(z)=2(\sqrt{1+z}-1),\qquad s=\sqrt{\frac{\mathrm{SSE}}{n-p}}δ=−(J⊤J)−1J⊤r,cost=21​∑ri2​,ρ(z)=2(1+z​−1),s=n−pSSE​​(1)
Eine Gerade durch den UrsprungPassen Sie y=a xy=a\,xy=ax an die Punkte (1;2,1)(1;2{,}1)(1;2,1), (2;3,9)(2;3{,}9)(2;3,9) und (3;6,2)(3;6{,}2)(3;6,2) an. Start bei a=1a=1a=1. Die Residuen sind r=ax−y=(−1,1;−1,9;−3,2)r=ax-y=(-1{,}1;-1{,}9;-3{,}2)r=ax−y=(−1,1;−1,9;−3,2) und die Jacobi-Matrix ist J=x=(1;2;3)J=x=(1;2;3)J=x=(1;2;3). Dann ist J⊤r=−14,5J^{\top}r=-14{,}5J⊤r=−14,5 und J⊤J=14J^{\top}J=14J⊤J=14, also δ=14,5/14=1,036\delta=14{,}5/14=1{,}036δ=14,5/14=1,036 und der neue Wert a=2,036a=2{,}036a=2,036. Das ist schon die Lösung, weil das Modell in aaa linear ist. Die Residuen an der Lösung sind 0,0640{,}0640,064, −0,171-0{,}171−0,171 und 0,0930{,}0930,093, die Kosten also 0,02110{,}02110,0211. Ein Residuum von 101010 kostet 100100100 mit Quadraten, aber nur ρ=18,10\rho=18{,}10ρ=18,10 mit soft_l1. Bei echten Daten hat eine mit least_squares an die zehn Treasury-Renditen vom 9. Oktober 2026 (3 Monate bis 30 Jahre) angepasste Nelson-Siegel-Kurve ein Niveau von 5,75%5{,}75\%5,75%, eine Steigung von −1,52-1{,}52−1,52 (die Kurve steigt mit der Laufzeit) und λ=2,7\lambda=2{,}7λ=2,7 Jahre und verfehlt die notierten Renditen im Mittel nur um 7,37{,}37,3 Basispunkte, im schlechtesten Fall um 131313. Vier Parameter an 101010 Punkte mit SSE=0,54\mathrm{SSE}=0{,}54SSE=0,54 anzupassen, lässt n−p=6n-p=6n−p=6 Freiheitsgrade und s=0,54/6=0,30s=\sqrt{0{,}54/6}=0{,}30s=0,54/6​=0,30.
  • Residuen hinein, Parameter heraus: fun(p) liefert Modell minus Daten, und least_squares verkleinert die Quadratsumme.
  • Robuster Verlust für Ausreißer: soft_l1 verhindert, dass ein wilder Punkt die ganze Kurve mitzieht.
  • Vier Zahlen für eine Kurve: Nelson-Siegel fasst eine Zinskurve durch Niveau, Steigung, Buckel und Abklinglänge zusammen.

Lab: Was bewertet wird

  • Eine Steigung durch den Ursprung10 Pkt.
  • Ein Gauss-Newton-Schritt15 Pkt.
  • Eine robuste Strafe15 Pkt.
  • Das Rauschniveau nach einer Anpassung10 Pkt.
  • Die Argumente von least_squares10 Pkt.
  • Ein Kurvenanpassungs-Ablauf10 Pkt.
  • Warum ein robuster Verlust30 Pkt.
0/ 7 beantwortet
Aufgaben
1Numerische Antwort10 Pkt.Nicht beantwortet

Für y=a xy=a\,xy=ax ist das beste aaa gleich ∑xiyi/∑xi2\sum x_iy_i/\sum x_i^{2}∑xi​yi​/∑xi2​. Mit x=(1;2;3)x=(1;2;3)x=(1;2;3) und y=(2,1;3,9;6,2)y=(2{,}1;3{,}9;6{,}2)y=(2,1;3,9;6,2): Wie groß ist aaa? Drei Dezimalstellen.

a=a =a=akzeptiert: ± 0.003
2Numerische Antwort15 Pkt.Nicht beantwortet

Start bei a=1a=1a=1. Die Residuen sind r=(−1,1;−1,9;−3,2)r=(-1{,}1;-1{,}9;-3{,}2)r=(−1,1;−1,9;−3,2) und J=(1;2;3)J=(1;2;3)J=(1;2;3), mit J⊤r=−14,5J^{\top}r=-14{,}5J⊤r=−14,5 und J⊤J=14J^{\top}J=14J⊤J=14. Wie groß ist der Schritt δ=−J⊤r/J⊤J\delta=-J^{\top}r/J^{\top}Jδ=−J⊤r/J⊤J? Drei Dezimalstellen.

d=d =d=akzeptiert: ± 0.003
3Numerische Antwort15 Pkt.Nicht beantwortet

Ein Residuum von 101010 hat das Quadrat z=100z=100z=100. Mit soft_l1 und f_scale=1 ist die Strafe ρ(z)=2(1+z−1)\rho(z)=2(\sqrt{1+z}-1)ρ(z)=2(1+z​−1). Wie groß ist ρ\rhoρ? Zwei Dezimalstellen.

rho=rho =rho=akzeptiert: ± 0.05
4Numerische Antwort10 Pkt.Nicht beantwortet

Eine Kurve mit p=4p=4p=4 Parametern wird an n=10n=10n=10 Punkte angepasst, und die Quadratsumme der Residuen ist SSE=0,54\mathrm{SSE}=0{,}54SSE=0,54. Wie groß ist s=SSE/(n−p)s=\sqrt{\mathrm{SSE}/(n-p)}s=SSE/(n−p)​? Zwei Dezimalstellen.

s=s =s=akzeptiert: ± 0.005
5Zuordnen10 Pkt.Nicht beantwortet

Ordnen Sie jedem Argument seine Aufgabe zu.

Wähle den Partner für jedes Element links.

fun
x0
bounds
loss
6Schritte ordnen10 Pkt.Nicht beantwortet

Bringen Sie die Schritte beim Anpassen einer Zinskurve in die richtige Reihenfolge.

Zum Umsortieren ziehen, oder ein Element fokussieren, mit Leertaste anheben, mit Pfeiltasten bewegen und mit Leertaste ablegen.

  1. 1Residuen und Erfolgsflag ansehen
  2. 2least_squares mit Start und Schranken aufrufen
  3. 3Das Modell wählen, hier Nelson-Siegel
  4. 4Eine Funktion schreiben, die Modell minus Daten liefert
7In Worten erklären30 Pkt.Nicht beantwortet

Eine schlechte Notierung liegt weit von den anderen neun Renditen. Erklären Sie in ein bis zwei Sätzen, warum eine gewöhnliche Kleinste-Quadrate-Anpassung zu ihr gezogen wird und warum soft_l1 hilft.

Mathe-ModusEingabe per Tastatur oder LaTeXAufgabe 1 von 7 · Strg ⏎ zum Prüfen

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