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 stockDelta 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 formulaAbsichern 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]- Call-Delta
N(d1)in (0, 1); Put-DeltaN(d1) - 1in (-1, 0): das Aktienäquivalent einer Option. - Numerisches Delta
(f(S + h) - f(S - h)) / (2h)funktioniert für jedes Bewertungsmodell; halten Siehklein, aber über dem Rundungsrauschen. - Absicherungsaktien =
-Kontrakte * Multiplikator * Deltamacht 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_deltadie Sensitivität eines Calls zur Aktie messen25 Pkt. - Mit
put_deltadas Delta des Puts ableiten25 Pkt. - Mit
numerical_deltaden Preis anstoßen, um Delta zu messen25 Pkt. - Mit
hedge_sharesdie Position neutralisieren25 Pkt.