σμ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.9·~45 Min.Mittelstufe

Delta

Position in der SkillModul 4 von 11 · Thema 9 von 16
4.9 Delta
—Lab-Punkte— / 100XP gesamt—Serie—

Die Sensitivität zur Aktie

Ein Händler mit Optionen muss wissen, was mit dem Konto passiert, wenn sich die Aktie bewegt. Delta ist die Antwort: die Änderung des Optionspreises je Einheit Aktienbewegung, dC/dS. Ein Call hat ein Delta zwischen 0 und 1, ein Put zwischen -1 und 0. Im Black-Scholes-Modell ist das Call-Delta einfach N(d1) und das Put-Delta N(d1) - 1. Ein einjähriger At-the-money-Call mit Delta 0,64 gewinnt etwa 64 Cent, wenn die Aktie um einen Dollar steigt. Delta wird auch als grobe Wahrscheinlichkeit gelesen, dass die Option im Geld endet.

import math

def norm_cdf(x):
    return 0.5 * (1 + math.erf(x / math.sqrt(2)))

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

def call_delta(spot, strike, rate, sigma, t):
    return norm_cdf(d1(spot, strike, rate, sigma, t))

for spot in (80, 90, 100, 110, 120):
    delta = call_delta(spot, 100, 0.05, 0.2, 1)
    print(spot, round(delta, 4), round(delta - 1, 4))      # the call delta and the put delta
# 80 0.2219 -0.7781
# 90 0.4298 -0.5702
# 100 0.6368 -0.3632
# 110 0.7958 -0.2042
# 120 0.8965 -0.1035     deep in the money: the call moves almost one for one with the stock

Delta durch Anstoßen messen

Eine geschlossene Formel gibt es nur für einfache Optionen. Für jedes Bewertungsmodell kann man Delta numerisch schätzen: Bewerten Sie die Option mit etwas höherer und etwas niedrigerer Aktie und teilen Sie durch den Abstand. Die zentrale Differenz (f(S + h) - f(S - h)) / (2h) ist genauer als die einseitige und für eine Parabel exakt. Dieselbe Funktion funktioniert für einen Monte-Carlo-Preis oder einen Binomialbaum, dieses „Anstoßen und neu bewerten“ ist also der universelle Weg zu Sensitivitäten. Wählen Sie h klein, aber nicht so klein, dass Rundungsrauschen dominiert (1 % des Kurses ist ein üblicher Start).

def bs_call(spot, strike, rate, sigma, t):
    d_1 = d1(spot, strike, rate, sigma, t)
    return spot * norm_cdf(d_1) - strike * math.exp(-rate * t) * norm_cdf(d_1 - sigma * math.sqrt(t))

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

price = lambda s: bs_call(s, 100, 0.05, 0.2, 1)          # any function of the spot price will do
print(round(numerical_delta(price, 100, 0.01), 6))        # 0.636831
print(round(call_delta(100, 100, 0.05, 0.2, 1), 6))       # 0.636831   the same as the formula

Absichern mit Delta

Delta macht aus einer Optionsposition eine äquivalente Aktienposition. Ein Call-Kontrakt auf 100 Aktien mit Delta 0,64 verhält sich bei kleinen Bewegungen wie 64 gehaltene Aktien. Um das Exposure zu beseitigen, nehmen Sie die Gegenposition ein: Bei 10 Long-Call-Kontrakten verkaufen Sie 10 * 100 * 0,6368 = 637 Aktien. Das abgesicherte Buch ist delta-neutral: Eine kleine Aktienbewegung lässt seinen Wert fast unverändert. Die Absicherung stimmt nur für den aktuellen Kurs und muss angepasst werden, wenn sich Aktie und Delta bewegen. Wie oft man umschichtet, ist ein Abwägen zwischen Risiko und Handelskosten.

def hedge_shares(contracts, delta, multiplier=100):
    return -contracts * multiplier * delta

delta = call_delta(100, 100, 0.05, 0.2, 1)
print(round(hedge_shares(10, delta), 1))            # -636.8   long 10 call contracts: sell about 637 shares
print(round(hedge_shares(-10, delta), 1))           # 636.8    short 10 call contracts: buy about 637 shares

# After a $1 move the options gain about delta * 1 each and the shares lose about the same
print(round(bs_call(101, 100, 0.05, 0.2, 1) - bs_call(100, 100, 0.05, 0.2, 1), 4))    # 0.6461   close to delta, not exactly
# Delta as expiry approaches: at the money it stays near 0.5, in the money it goes to 1, out of the money to 0
for t in (1, 0.25, 0.02):
    print(t, [round(call_delta(spot, 100, 0.05, 0.2, t), 4) for spot in (90, 100, 110)])
# 1 [0.4298, 0.6368, 0.7958]
# 0.25 [0.1898, 0.5695, 0.8704]
# 0.02 [0.0001, 0.5197, 0.9997]
Delta ändert sich, und die Absicherung verfälltDelta ist nur der Effekt erster Ordnung. Der Call mit Delta 0,64 bei 100 hat bei 110 ein Delta von 0,80 und bei 90 von 0,43, eine bei 100 gesetzte Absicherung stimmt nach einer großen Bewegung also nicht mehr, und Delta driftet auch mit der Zeit (das Delta einer Out-of-the-money-Option schmilzt vor Verfall gegen 0). Die Geschwindigkeit, mit der sich Delta ändert, ist die nächste Sensitivität: Gamma.
  • Call-Delta N(d1) in (0, 1); Put-Delta N(d1) - 1 in (-1, 0): das Aktienäquivalent einer Option.
  • Numerisches Delta (f(S + h) - f(S - h)) / (2h) funktioniert für jedes Bewertungsmodell; halten Sie h klein, aber über dem Rundungsrauschen.
  • Absicherungsaktien = -Kontrakte * Multiplikator * Delta macht das Buch für kleine Bewegungen delta-neutral; schichten Sie um, wenn sich Delta ändert.

Als Nächstes: Gamma, die Sensitivität von Delta selbst, die zeigt, wie schnell eine Absicherung veraltet.

Lab: Was bewertet wird

  • Mit call_delta die Sensitivität eines Calls zur Aktie messen25 Pkt.
  • Mit put_delta das Delta des Puts ableiten25 Pkt.
  • Mit numerical_delta den Preis anstoßen, um Delta zu messen25 Pkt.
  • Mit hedge_shares die Position neutralisieren25 Pkt.
Explorer · lab-74-1
▾ lab-74-1
…
bash · im Browser
learner@quantcraft:~/lab-74-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-74-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