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

Portfolios mit Nebenbedingungen per minimize

Position in der SkillModul 1 von 3 · Thema 5 von 8
1.5 Portfolios mit Nebenbedingungen per minimize
—Lab-Punkte— / 100XP gesamt—Serie—

Ein Optimierer ist eine Funktion plus Regeln

scipy.optimize.minimize(fun, x0, method='SLSQP', bounds=..., constraints=...) findet den Vektor, der fun am kleinsten macht. Man gibt drei Arten von Information. Das Ziel fun(w) liefert eine zu minimierende Zahl: Für ein Minimum-Varianz-Portfolio ist es w @ cov @ w, und um etwas zu maximieren, minimiert man sein Negatives. Die Schranken sind eine Liste von Paaren (unten, oben), eines je Gewicht: (0, cap) heißt keine Leerverkäufe und keine Position über dem Limit. Die Nebenbedingungen sind Dictionaries: {'type': 'eq', 'fun': lambda w: w.sum() - 1} erzwingt die Summe eins, denn eine eq-Funktion muss null sein, eine ineq-Funktion dagegen mindestens null. Auch der Startpunkt x0 zählt: Gleichgewichte sind ein vernünftiger, zulässiger Start.

Zwei Details entscheiden, ob die Antwort stimmt. Erstens die Skala: Tagesvarianzen sind Zahlen wie 0,0001, und SLSQP hält an, wenn sich das Ziel um weniger als die Toleranz ftol (Standard 1e-6) ändert; mit rohen Tageswerten kann es also am Startpunkt stehen bleiben, ohne sich zu bewegen. Annualisieren Sie die Eingaben (mal 252), übergeben Sie options={'ftol': 1e-12, 'maxiter': 500} und prüfen Sie immer result.success und ob die Gewichte die Regeln einhalten. Zweitens die Formulierung: Das Maximieren der Sharpe-Ratio ist ein Quotient, also minimieren Sie -(w @ mu) / sqrt(w @ cov @ w); Risikoparität verlangt gleiche Risikoanteile wᵢ(Σw)ᵢ/ wᵀΣw, also minimieren Sie die quadrierten Abstände zu 1/n; und eine effiziente Grenze ist ein Minimum-Varianz-Problem je Zielrendite, mit einer zweiten eq-Nebenbedingung w @ mu - Ziel.

Was die echten Daten sagenNehmen Sie zehn Aktien, den Versorger DUK und den Gold-ETF GLD über die letzten 2.500 Tage, mit höchstens 25 % je Anlage. Gleichgewichte haben eine Volatilität von 14,6%. Das Minimum-Varianz-Portfolio senkt sie auf 11,9% mit 25% Gold, 18% JNJ und 14% KO, ohne AAPL und HD. Das Maximum-Sharpe-Portfolio verdient 21,3% im Jahr bei 14,3% Volatilität, eine Sharpe-Ratio von 1,48, gestützt auf Gold, WMT und CAT: eine Zahl, die die letzten zehn Jahre spiegelt, nicht die nächsten zehn. Risikoparität hält zwischen 5,8% und 19,6% je Anlage, Gold am meisten, und jede Anlage trägt 8,3% des Risikos.
  • Skala und Toleranz: Annualisieren Sie die Eingaben und verschärfen Sie ftol, sonst bleibt SLSQP dort stehen, wo es begann.
  • Antwort prüfen: Die Gewichte müssen die Summe eins ergeben und die Schranken einhalten; sehen Sie result.success an.
  • Ein Werkzeug, vier Probleme: Minimum-Varianz, negative Sharpe-Ratio, gleiche Risikoanteile und ein Problem je Zielrendite sind alles minimize-Aufrufe mit anderen Zielen und Nebenbedingungen.

Lab: Was bewertet wird

  • Jahreseingaben8 Pkt.
  • Rendite und Risiko eines Portfolios8 Pkt.
  • Minimale Varianz mit Limit18 Pkt.
  • Maximale Sharpe-Ratio18 Pkt.
  • Risikobeiträge10 Pkt.
  • Risikoparität16 Pkt.
  • Eine Grenze Punkt für Punkt10 Pkt.
  • Drei Portfolios12 Pkt.
Explorer · lab-sp-14
▾ lab-sp-14
▾ data
…
bash · im Browser
learner@quantcraft:~/lab-sp-14$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

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