σμ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ᵀμ = μ*∫Σ∂∞λ
σμ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 AcademySkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
Skills
AO
+1,2 Tsd. Lernende
Anmelden
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python-Skill›Modul 4 · Bewertung von Anleihen und Optionen›Thema 4.10·~45 Min.Mittelstufe

Gamma

Position in der SkillModul 4 von 11 · Thema 10 von 16
4.10 Gamma
—Lab-Punkte— / 100XP gesamt—Serie—

Delta ist nicht konstant

Eine Delta-Absicherung ist nur für einen Augenblick exakt. Sobald sich die Aktie bewegt, ändert sich das Delta der Option und die Absicherung stimmt nicht mehr. Gamma ist die Änderungsrate des Deltas mit der Aktie: Gamma = d(Delta)/dS, die zweite Ableitung des Preises. Ein Long-Call oder -Put hat positives Gamma. In Black-Scholes ist es pdf(d1) / (S * sigma * sqrt(T)), für Calls und Puts gleich, wobei pdf die Dichte der Glocke ist. Ein hohes Gamma bedeutet, dass die Absicherung schnell veraltet und oft angepasst werden muss.

import math

def norm_pdf(x):
    return math.exp(-0.5 * x * x) / math.sqrt(2 * math.pi)

def d1(spot, strike, rate, sigma, t):
    return (math.log(spot / strike) + (rate + 0.5 * sigma ** 2) * t) / (sigma * math.sqrt(t))

def gamma(spot, strike, rate, sigma, t):
    return norm_pdf(d1(spot, strike, rate, sigma, t)) / (spot * sigma * math.sqrt(t))

for spot in (80, 90, 100, 110, 120):
    print(spot, round(gamma(spot, 100, 0.05, 0.2, 1), 5))
# 80 0.0186
# 90 0.02182
# 100 0.01876
# 110 0.01289
# 120 0.0075      gamma peaks near the strike and fades far from it

Gamma wächst vor Verfall

Bei einer At-the-money-Option steigt Gamma vor Verfall stark an: 0,019 mit einem Jahr Restlaufzeit, 0,039 mit drei Monaten, 0,141 mit einer Woche. Kurz vor Verfall ist die Option fast ein Münzwurf zwischen wertlos und dem vollen Wert der Bewegung, sodass Delta in einem winzigen Preisbereich von 0 auf 1 springt. Deshalb schlafen Händler, die kurz vor Verfall Optionen verkauft haben (Short Gamma), schlecht: Die Absicherung braucht ständige Anpassung, und ein Sprung schmerzt. Gamma lässt sich für jedes Modell auch über die zweite Differenz (f(S + h) - 2 f(S) + f(S - h)) / h² schätzen, exakt für eine Parabel.

for t in (1, 0.25, 0.02):
    print(t, round(gamma(100, 100, 0.05, 0.2, t), 5))
# 1 0.01876
# 0.25 0.03929
# 0.02 0.14087      a week before expiry the at-the-money gamma is 7 times larger

def numerical_gamma(price_function, spot, bump):
    return (price_function(spot + bump) - 2 * price_function(spot) + price_function(spot - bump)) / bump ** 2

price = lambda s: bs_call(s, 100, 0.05, 0.2, 1)               # bs_call as in the previous topic
print(round(numerical_gamma(price, 100, 0.5), 5))             # 0.01876   the same as the formula

Was Gamma einbringt

Weil sich Delta mit der Aktie ändert, gewinnt eine Long-Option mehr, als Delta allein vorhersagt, in welche Richtung sich die Aktie auch bewegt. Ein Anstieg um 5 $ hebt Delta von 0,637 auf 0,637 + 0,01876 * 5 = 0,731. Der Gewinn einer Bewegung ist Delta * Bewegung + 0,5 * Gamma * Bewegung²: Der zweite Term ist der Gamma-Gewinn einer Long-Option (ein Verlust bei einer Short-Option). Er wächst mit dem Quadrat der Bewegung, große Bewegungen in beide Richtungen begünstigen also die Long-Gamma-Seite. Dieser Gewinn ist nicht gratis: Der Inhaber bezahlt ihn über die Prämie und den Zeitwertverfall.

g = gamma(100, 100, 0.05, 0.2, 1)
delta = call_delta(100, 100, 0.05, 0.2, 1)                     # as in the delta topic
print(round(delta, 4), round(delta + g * 5, 4))                 # 0.6368 0.7306   the delta after a $5 rise
print(round(call_delta(105, 100, 0.05, 0.2, 1), 4))             # 0.7237          the exact delta at 105 (gamma is a first-order guide)

move = 5
true_gain = bs_call(105, 100, 0.05, 0.2, 1) - bs_call(100, 100, 0.05, 0.2, 1)
print(round(true_gain - delta * move, 4), round(0.5 * g * move ** 2, 4))   # 0.2232 0.2345   what delta missed, and what gamma explains
# Dollar gamma: how many dollars of stock the delta hedge changes for a 1% move of the stock at 100
print(round(g * 100 ** 2 / 100, 3))      # 1.876
Long Gamma ist nicht gratisDer Gamma-Gewinn hat einen Preis: den Zeitwertverfall der Option (Theta). Eine Option, die man hält, während die Aktie nirgendwohin läuft, verliert jeden Tag an Wert. Ob Long Gamma sich lohnt, hängt davon ab, ob sich die Aktie tatsächlich so stark bewegt wie die zur Bewertung der Option verwendete Volatilität; die Balance zwischen Gamma und Theta ist der Zielkonflikt im Kern des Optionshandels.
  • Gamma = pdf(d1) / (S * sigma * sqrt(T)), zweite Ableitung des Preises; für Calls und Puts gleich, am größten nahe Strike und Verfall.
  • Numerisches Gamma (f(S + h) - 2 f(S) + f(S - h)) / h²; Delta nach einer Bewegung Delta + Gamma * Bewegung.
  • Eine Bewegung bringt Delta * Bewegung + 0,5 * Gamma * Bewegung²: Eine Long-Option gewinnt bei großen Bewegungen in beide Richtungen und bezahlt das mit Zeitwertverfall.

Als Nächstes: Vega, die Sensitivität zur Volatilität, der Input, den niemand direkt beobachten kann.

Lab: Was bewertet wird

  • Mit gamma messen, wie schnell sich Delta ändert25 Pkt.
  • Mit numerical_gamma die Krümmung jedes Preises messen25 Pkt.
  • Mit delta_after_move das Delta nach einer Bewegung aktualisieren25 Pkt.
  • Mit gamma_pnl den Nutzen der Krümmung beziffern25 Pkt.
Explorer · lab-75-1
▾ lab-75-1
…
bash · im Browser
learner@quantcraft:~/lab-75-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-75-1 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