σμ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.4·~50 Min.Mittelstufe

Minimieren und Nullstellensuche

Position in der SkillModul 1 von 3 · Thema 4 von 6
1.4 Minimieren und Nullstellensuche
—Lab-Punkte— / 100XP gesamt—Serie—

Zwei Aufgaben: den tiefsten Punkt finden, finden, wo eine Kurve null kreuzt

scipy.optimize löst zwei Arten von Aufgaben. Die erste ist das Minimieren einer Funktion f(x)f(x)f(x), also die Eingabe mit dem kleinsten Ergebnis zu finden. Man ruft minimize(f, x0) auf, wobei x0 Ihre Startvermutung ist. Das Verfahren BFGS folgt der Steigung von fff bergab. Nelder-Mead braucht keine Steigung und vergleicht nur Werte. SLSQP akzeptiert auch Schranken und Nebenbedingungen, etwa Gewichte, die sich zu 1 summieren. Das Ergebnis ist nur ein lokales Minimum, der Talboden, bei dem Sie begonnen haben, und ein anderes x0 kann ein anderes Ergebnis liefern. Prüfen Sie immer res.success.

Die zweite Aufgabe ist die Nullstellensuche: g(x)=0g(x)=0g(x)=0 lösen. brentq(g, a, b) braucht eine Einschließung, zwei Punkte mit entgegengesetzten Vorzeichen von ggg, und findet dann sicher eine Nullstelle durch wiederholtes Halbieren. Nach nnn Halbierungen ist das Intervall (b−a)/2n(b-a)/2^n(b−a)/2n breit. newton(g, x0, fprime) nutzt die Steigung von ggg und ist viel schneller, braucht aber einen guten Start und kann weit wegspringen, wenn die Steigung fast flach ist. In der Finanzwelt ist die Rendite bis zur Fälligkeit einer Anleihe eine Nullstelle: der Zins yyy, der die Preisformel der Anleihe gleich ihrem Marktpreis macht. Ein Newton-Schritt ist yneu=y−g(y)/g′(y)y_{\text{neu}}=y-g(y)/g'(y)yneu​=y−g(y)/g′(y).

ynew=y−g(y)g′(y),g(y)=51+y+105(1+y)2−98,width after n halvings=b−a2ny_{\text{new}}=y-\frac{g(y)}{g'(y)},\qquad g(y)=\frac{5}{1+y}+\frac{105}{(1+y)^{2}}-98,\qquad \text{width after }n\text{ halvings}=\frac{b-a}{2^{n}}ynew​=y−g′(y)g(y)​,g(y)=1+y5​+(1+y)2105​−98,width after n halvings=2nb−a​(1)
Die Rendite einer zweijährigen AnleiheEine Anleihe zahlt 555 nach einem Jahr und 105105105 nach zwei Jahren und kostet 989898. Start bei y=6%y=6\%y=6%. Die Preisformel gibt 98,1798{,}1798,17, also g=0,17g=0{,}17g=0,17. Die Steigung ist g′=−5/1,062−210/1,063=−180,8g'=-5/1{,}06^{2}-210/1{,}06^{3}=-180{,}8g′=−5/1,062−210/1,063=−180,8. Ein Newton-Schritt liefert y=0,06−0,17/(−180,8)=6,092%y=0{,}06-0{,}17/(-180{,}8)=6{,}092\%y=0,06−0,17/(−180,8)=6,092%, und brentq auf [0;0,5][0;0{,}5][0;0,5] bestätigt die Nullstelle 6,0923%6{,}0923\%6,0923%. Damit die Bisektion auf [0;1][0;1][0;1] auf 0,0010{,}0010,001 genau ist, braucht man 2n≥10002^{n}\ge10002n≥1000, also n=10n=10n=10 Halbierungen. Für ein Minimum: Zwei Anlagen mit Volatilitäten 202020 und 101010 und Korrelation 0,20{,}20,2 haben Kovarianz 404040, das Minimum-Varianz-Gewicht der ersten ist also (100−40)/(400+100−80)=0,143(100-40)/(400+100-80)=0{,}143(100−40)/(400+100−80)=0,143. Bei echten Daten haben SPY und TLT über 5 4045\,4045404 Tage seit Februar 2005 Volatilitäten von 19,0%19{,}0\%19,0% und 14,6%14{,}6\%14,6% pro Jahr und eine Korrelation von −0,30-0{,}30−0,30. Das Minimum-Varianz-Gewicht in SPY ist 40%40\%40% bei einer Volatilität von 9,7%9{,}7\%9,7%. Bei einer Funktion mit zwei Tälern, etwa x4−3x2+xx^{4}-3x^{2}+xx4−3x2+x, stoppt minimize ab x0=2x_0=2x0​=2 bei 1,131{,}131,13 und ab x0=−2x_0=-2x0​=−2 bei −1,30-1{,}30−1,30, dem tieferen.
  • Minimieren oder lösen: minimize findet einen tiefen Punkt, brentq und newton finden, wo eine Funktion null ist.
  • Eine Einschließung ist eine Garantie: brentq konvergiert immer, wenn die Vorzeichen verschieden sind, newton ist schneller, braucht aber einen guten Start.
  • Ein Minimum kann lokal sein: mehrere Startpunkte probieren und res.success lesen, bevor man res.x traut.

Lab: Was bewertet wird

  • Ein Newton-Schritt15 Pkt.
  • Bisektions-Halbierungen10 Pkt.
  • Ein Minimum-Varianz-Gewicht15 Pkt.
  • Das richtige Werkzeug für jede Aufgabe15 Pkt.
  • Ein Ablauf für implizite Volatilität10 Pkt.
  • Ein möglicherweise lokales Minimum10 Pkt.
  • Warum eine Einschließung und warum Newton scheitern kann25 Pkt.
0/ 7 beantwortet
Aufgaben
1Numerische Antwort15 Pkt.Nicht beantwortet

Für die Anleihe oben gilt bei y=0,06y=0{,}06y=0,06: g=0,1666g=0{,}1666g=0,1666 und g′=−180,77g'=-180{,}77g′=−180,77. Wie lautet die neue Schätzung y−g/g′y-g/g'y−g/g′ in Prozent? Drei Dezimalstellen.

y=y =y=akzeptiert: ± 0.003
2Numerische Antwort10 Pkt.Nicht beantwortet

Sie schließen eine Nullstelle in [0;1][0;1][0;1] ein. Wie viele Halbierungen nnn braucht es, damit das Intervall höchstens 0,0010{,}0010,001 breit ist, also 2n≥10002^{n}\ge10002n≥1000?

n=n =n=akzeptiert: ± 0.01
3Numerische Antwort15 Pkt.Nicht beantwortet

Zwei Anlagen haben Volatilitäten 202020 und 101010 und Kovarianz 404040. Das varianzminimierende Gewicht der ersten ist w=(σb2−c)/(σa2+σb2−2c)w=(\sigma_b^{2}-c)/(\sigma_a^{2}+\sigma_b^{2}-2c)w=(σb2​−c)/(σa2​+σb2​−2c). Wie groß ist www? Drei Dezimalstellen.

w=w =w=akzeptiert: ± 0.002
4Zuordnen15 Pkt.Nicht beantwortet

Ordnen Sie jedem Werkzeug die Situation zu, in der es am besten passt.

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

brentq
newton
minimize (SLSQP)
minimize (Nelder-Mead)
5Schritte ordnen10 Pkt.Nicht beantwortet

Bringen Sie die Schritte zur Bestimmung einer impliziten Volatilität aus einem Optionspreis in die richtige Reihenfolge.

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

  1. 1Die Option mit dem Ergebnis neu bewerten, um es zu prüfen
  2. 2brentq auf der Einschließung aufrufen
  3. 3Eine niedrige und eine hohe Volatilität wählen, deren Fehler verschiedene Vorzeichen haben
  4. 4Den Preisfehler als Funktion der Volatilität schreiben
6Auswahl10 Pkt.Nicht beantwortet

minimize, bei x0=2x_0=2x0​=2 gestartet, lieferte auf einer Kurve mit zwei Tälern x=1,13x=1{,}13x=1,13 mit success=True. Sie vermuten ein tieferes Tal. Was ist der beste nächste Schritt?

7In Worten erklären25 Pkt.Nicht beantwortet

Erklären Sie in ein bis zwei Sätzen, warum brentq zwei Punkte mit entgegengesetzten Vorzeichen verlangt und warum das Newton-Verfahren trotz höherer Geschwindigkeit scheitern kann.

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