Jak działa delta hedging w praktyce
Analiza mechanizmu delta hedgingu w portfelu opcyjnym. Wyjaśnienie konieczności kupna i sprzedaży akcji oraz powodów, dla których częste zmiany pozycji generują koszty.
Delta hedging to sposób, w jaki dział opcyjny utrzymuje neutralność kierunkową: utrzymuje pozycję w akcjach o wielkości pozwalającej zniwelować deltę opcji, a następnie koryguje tę pozycję w miarę zmian kursu instrumentu bazowego. Portfel z krótką pozycją w opcjach kończy się kupnem akcji po wzroście kursu i ich sprzedażą po spadku. Zysk i strata działu zależą zatem od tego, jak duży dystans pokonał kurs akcji, a nie od poziomu, na którym zakończył sesję.
Czym jest delta hedging?
Delta to zmiana ceny opcji przy zmianie kursu instrumentu bazowego o 1 USD; dla opcji call przyjmuje wartości od 0 do 1, a dla opcji put od 0 do -1. Jedna opcja na akcje w USA obejmuje 100 akcji, więc pomnożenie delty przez 100 daje liczbę akcji, czyli pozycję, której w danym momencie odpowiada kontrakt. Nasz przewodnik po delcie opcji szczegółowo omawia tę konwersję.
Delta hedge polega na zajęciu przeciwstawnej pozycji w akcjach względem tej liczby. Sprzedaż jednej opcji call z deltą 0,50 oznacza, że portfel posiada ekwiwalent 50 krótkich akcji; kupno 50 akcji neutralizuje tę pozycję. Termin „zabezpieczony” ma tu wąskie znaczenie: neutralny wobec niewielkich ruchów, w danej chwili, przy danej cenie. Delta nie jest wartością stałą. Zmienia się wraz z ruchem kursu akcji i upływem czasu do wygaśnięcia kontraktu, a pozycja w akcjach musi za nią podążać.
Dlaczego zabezpieczenie nigdy nie pozostaje w miejscu
Delta w odniesieniu do cen wykonania (strike) tworzy krzywą, a nie schodki. Poniższy panel uśrednia deltę opcji call i put na SPY w zależności od odległości ceny wykonania od ceny rynkowej (spot) dla kontraktów z terminem wygaśnięcia od 25 do 35 dni w czerwcu 2026 roku.
Dokładny kod SQL dla każdej liczby
SELECT
concat(if(pct_from_spot >= 0, '+', ''), toString(pct_from_spot), '%') AS strike_vs_spot,
round(avgIf(delta, is_call), 3) AS call_delta,
round(avgIf(delta, is_put), 3) AS put_delta
FROM
(
SELECT
toInt16(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 100)) AS pct_from_spot,
lower(option_type) IN ('call', 'c') AS is_call,
lower(option_type) IN ('put', 'p') AS is_put,
delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 25 AND 35
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.05
)
GROUP BY pct_from_spot
HAVING countIf(is_call) > 0 AND countIf(is_put) > 0
ORDER BY pct_from_spotAnalizując krzywą od lewej do prawej, widać cały problem. Opcje call, których cena wykonania znajdowała się -5% od ceny spot, miały średnią deltę 0.839. Przy +5%, w tym samym oknie wygaśnięcia, średnia wyniosła 0.099. Linia opcji put jest lustrzanym odbiciem, od -0.164 przy niskich cenach wykonania do -0.864 przy wysokich. Kurs akcji poruszający się wzdłuż tej krzywej wymusza na zabezpieczającym inną liczbę akcji w każdym punkcie. Gamma to nazwa określająca stromość tej krzywej: tempo, w jakim zmienia się sama delta.
Jak duża jest każda wymuszona transakcja?
Gamma określa wielkość każdego rebalancingu. Poniższy panel przelicza ją na jednostkę, którą dział faktycznie handluje. Dla kontraktów na SPY typu at-the-money pokazuje, ile akcji 100 takich kontraktów wymusza na zabezpieczającym przy ruchu instrumentu bazowego o 1%, w podziale na czas pozostały do wygaśnięcia.
Dokładny kod SQL dla każdej liczby
SELECT
multiIf(bucket = 1, '0-2 days',
bucket = 2, '3-7 days',
bucket = 3, '8-21 days',
bucket = 4, '22-45 days',
'46-90 days') AS expiry_window,
toUInt32(round(avg(shares_per_contract) * 100)) AS hedge_shares
FROM
(
SELECT
multiIf(days_to_expiry <= 2, 1,
days_to_expiry <= 7, 2,
days_to_expiry <= 21, 3,
days_to_expiry <= 45, 4,
5) AS bucket,
toFloat64(gamma) * toFloat64(underlying_close) AS shares_per_contract
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 0 AND 90
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.01
AND date >= '2026-06-01'
AND date < '2026-07-01'
)
GROUP BY bucket
ORDER BY bucketKontrakty z 0-2 days do wygaśnięcia zmieniały zabezpieczenie o około 3429 akcji przy ruchu o 1%. Te same 100 kontraktów przy 46-90 days zmieniało je o około 587. Identyczna liczba kontraktów, identyczny instrument bazowy, drastycznie różne wolumeny wymuszonego handlu. Portfele z krótkim terminem wygaśnięcia rebalansują się intensywnie i często; portfele z dłuższym terminem wykazują dryf. Jak Greki zmieniają się w czasie śledzi to zwiększanie stromości w miarę zbliżania się do wygaśnięcia.
Pięć sesji i stojące za nimi akcje
Oto mechanizm w pełnym ujęciu na przykładzie hipotetycznej ścieżki. Ceny zostały przyjęte dla uproszczenia obliczeń, a każda delta jest podana wprost, nie modelowana. Dział sprzedaje 10 opcji call at-the-money na akcje po 100 USD za 2,00 USD za akcję i inkasuje 2000 USD (10 kontraktów, po 100 akcji każdy, 2,00 USD za akcję). Po każdej sesji zabezpiecza pozycję do zera.
- Zamknięcie 1, kurs 100,00 USD, delta 0,50. Portfel ma krótką pozycję 500 delt, więc hedge kupuje 500 akcji. Pozycja zabezpieczająca: 500 akcji long.
- Zamknięcie 2, kurs 103,00 USD, delta 0,62. Cel to 620 akcji, więc hedge dokupuje 120. 500 akcji utrzymywanych podczas wzrostu zyskało 1500 USD.
- Zamknięcie 3, kurs 99,00 USD, delta 0,44. Cel spada do 440, więc hedge sprzedaje 180. 620 akcji utrzymywanych podczas spadku straciło 2480 USD, co daje hedge'owi stratę 980 USD.
- Zamknięcie 4, kurs 102,00 USD, delta 0,58. Cel to 580, więc hedge dokupuje 140. 440 akcji zyskało 1320 USD, co daje hedge'owi zysk 340 USD.
- Zamknięcie 5, kurs 100,00 USD, delta 0,48. Cel to 480, więc hedge sprzedaje 100. 580 akcji straciło 1160 USD, pozostawiając hedge ze stratą 820 USD.
Kurs akcji zakończył sesję dokładnie tam, gdzie zaczął. Zabezpieczający kupował po 103 USD i 102 USD, sprzedawał po 99 USD i 100 USD i jest 820 USD na minusie na pozycji w akcjach wobec 2000 USD zainkasowanej premii, przy wciąż otwartej opcji. Żaden krok nie był błędem: każda transakcja była mechanicznie poprawna w danym momencie. Znaki są częścią, która przetrwa każdą zmianę liczb. Każdy zakup następował po wzroście, a każda sprzedaż po spadku; portfel z krótką pozycją w opcjach nie może odwrócić tego wzorca. Podwojenie liczby kontraktów podwaja gammę, więc każda transakcja z tej listy również się podwaja, podobnie jak rachunek za tę samą ścieżkę. Dlaczego animatorzy rynku tracą pieniądze śledzi tę arytmetykę w przypadkach, gdy premia nie wystarcza na pokrycie kosztów.
Upływ czasu (time decay) to druga strona księgi. W ciągu tych pięciu sesji opcja straciła również wartość czasową, a ten zysk sprzedającego jest tym, z czego pokrywane są straty z zabezpieczenia. Spokojna ścieżka pozostawia premię nienaruszoną. Szarpana ścieżka ją zużywa, a wystarczająco szarpana ścieżka zużywa ją w całości.
Ścieżka ma znaczenie, cel nie
Zabezpieczający handluje w oparciu o ścieżkę, a nie o zmianę netto. Poniższy panel mierzy obie wartości dla czterech znanych spółek w czerwcu 2026 roku. Długość ścieżki sumuje każdy dzienny ruch procentowy bez uwzględniania znaków. Ruch netto to zwykła odległość od pierwszego do ostatniego zamknięcia.
Dokładny kod SQL dla każdej liczby
SELECT
ticker,
round(path, 1) AS path_length_pct,
round(net, 1) AS net_move_pct,
round(path / greatest(net, 0.05), 1) AS path_to_net_ratio
FROM
(
SELECT
ticker,
arraySum(arrayMap((a, b) -> abs(a / b - 1) * 100,
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1))) AS path,
abs(px[-1] / px[1] - 1) * 100 AS net
FROM
(
SELECT
ticker,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((session_date, session_close)))) AS px
FROM
(
SELECT
ticker,
date AS session_date,
toFloat64(max(close)) AS session_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO')
AND date >= '2026-06-01'
AND date < '2026-07-01'
GROUP BY ticker, date
)
GROUP BY ticker
)
)
ORDER BY path_to_net_ratioNawet spółka z najwęższą luką, MSFT, pokonała 43.2% dziennego ruchu, kończąc 19% od punktu wyjścia, co daje stosunek 2.3 do 1. Na drugim końcu panelu, SPY przebyła 11.4-krotność swojego ruchu netto. Trader kierunkowy zarabia na drugiej liczbie. Delta hedger płaci za pierwszą.
Za co faktycznie płaci premia
Premia, którą inkasuje sprzedający, jest wyceniana na podstawie zmienności implikowanej – ruchu, którego oczekuje rynek. Rachunek za zabezpieczenie jest ustalany przez zmienność zrealizowaną – ruch, który faktycznie wystąpił. Poniższy panel umieszcza obie wartości na jednej osi dla SPY, miesiąc po miesiącu, w ciągu ostatniego roku.
Dokładny kod SQL dla każdej liczby
WITH
monthly_iv AS
(
SELECT
toStartOfMonth(date) AS m,
round(avg(implied_volatility) * 100, 1) AS implied_vol_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
AND date >= '2025-08-01'
AND date < '2026-08-01'
GROUP BY m
),
monthly_rv AS
(
SELECT
m,
round(arrayReduce('stddevPop', rets) * sqrt(252) * 100, 1) AS realized_vol_pct
FROM
(
SELECT
m,
arrayMap((a, b) -> log(a / b),
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1)) AS rets
FROM
(
SELECT
toStartOfMonth(session_date) AS m,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((session_date, session_close)))) AS px
FROM
(
SELECT
date AS session_date,
toFloat64(max(close)) AS session_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2025-08-01'
AND date < '2026-08-01'
GROUP BY date
)
GROUP BY m
)
WHERE length(rets) > 5
)
)
SELECT
toString(iv.m) AS month,
iv.implied_vol_pct AS implied_vol_pct,
rv.realized_vol_pct AS realized_vol_pct
FROM monthly_iv AS iv
INNER JOIN monthly_rv AS rv ON rv.m = iv.m
ORDER BY iv.mW ostatnim miesiącu na tym wykresie kontrakty na SPY typu at-the-money z 20 do 45 dniami do wygaśnięcia miały średnią zmienność implikowaną 14.8%, podczas gdy instrument bazowy wykazał 12.1% zmienności zrealizowanej. Miesiące, w których linia zmienności zrealizowanej znajduje się poniżej linii implikowanej, to miesiące, w których ścieżka kosztowała zabezpieczającego mniej niż wygasająca premia. Miesiące, w których znajduje się powyżej, to sytuacja odwrotna. Ta różnica, a nie kierunek rynku, stanowi ekspozycję, którą niesie portfel opcji typu delta-hedged. Jak animatorzy rynku zarabiają pieniądze omawia przechwytywanie spreadu, a ekspozycja na gammę sumuje ten wymuszony handel w skali całego rynku.
Jak działy zabezpieczają się w praktyce
Prawie nikt nie rebalansuje pozycji przy każdym zamknięciu i niewiele działów pracuje według sztywnego zegara. Ciągłe zabezpieczanie wiernie odzwierciedlałoby deltę, ale pochłonęłoby premię w prowizjach i kosztach spreadu. Typowym podejściem jest pasmo: pozostawienie pozycji w spokoju, gdy delta netto mieści się w tolerancji, a następnie handel w stronę zera, gdy wyjdzie poza nią. Szersze pasmo oznacza mniej transakcji i większy dryf między nimi. Działy również bilansują cały portfel przed dokonaniem jakiejkolwiek transakcji, więc krótka opcja call w jednym terminie wygaśnięcia i długa w innym mogą się znieść, zanim zostanie wykonany choć jeden ruch na akcjach. Delta portfela ważona betą stosuje tę samą ideę bilansowania dla różnych instrumentów bazowych.
FAQ
Czym jest delta hedging w prostych słowach?
To utrzymywanie pozycji w akcjach, która niweluje ekspozycję kierunkową opcji. Delta pomnożona przez 100 daje ekwiwalent akcji dla jednego kontraktu, a zabezpieczający utrzymuje pozycję odwrotną do tej liczby, aktualizując ją w miarę zmian delty.
Czy animatorzy rynku zabezpieczają każdą sprzedaną opcję?
Zabezpieczają ekspozycję netto portfela, a nie każdy kontrakt z osobna. Przeciwstawne pozycje znoszą się wewnętrznie, a tylko pozostała delta trafia na rynek akcji jako transakcja.
Dlaczego delta hedge traci pieniądze na zmiennym rynku?
Każdy rebalancing w portfelu z krótką pozycją w opcjach oznacza kupno po wzroście i sprzedaż po spadku. W pełnym cyklu zakupy znajdują się powyżej sprzedaży, a ta różnica jest zrealizowanym kosztem. Premia zainkasowana z góry stanowi budżet, z którego jest on pokrywany.
Jak często traderzy rebalansują delta hedge?
W praktyce nie ma jednego interwału. Częstszy rebalancing lepiej śledzi deltę, ale kosztuje więcej w spreadach i prowizjach, dlatego wiele działów ustala pasmo tolerancji delty i handluje tylko wtedy, gdy pozycja je opuści.
Czy pozycja typu delta-hedged jest wolna od ryzyka?
Nie. Neutralizuje ona niewielkie ruchy w danej chwili. Luki i skoki cenowe, zmiany zmienności implikowanej, dywidendy oraz koszty finansowania pozostają aktywne, a samo zabezpieczenie generuje koszty w miarę ruchu instrumentu bazowego.
Jak mierzono te panele
Panele opcyjne odczytują dzienne greki dla każdego kontraktu, przefiltrowane do kontraktów, którymi handlowano i których zmienność implikowana została poprawnie wyliczona. „At the money” oznacza cenę wykonania w granicach 1% od zamknięcia instrumentu bazowego w danym dniu w panelu wielkości transakcji oraz w granicach 5% na krzywej delty. Liczba wymuszonych transakcji przelicza gammę na akcje: zabezpieczenie jednego kontraktu zmienia się o około gammę pomnożoną przez cenę akcji przy ruchu o 1%, a panel skaluje to do 100 kontraktów. Okna czerwiec 2026 i ostatni rok są datami stałymi, więc odczyty te pozostają niezmienne przy późniejszych wizytach. Analiza pięciu sesji jest hipotetyczna, z każdą deltą podaną wprost, a nie wyprowadzoną z modelu wyceny.
Każdy panel zawiera dokładne zapytanie SQL, które go wygenerowało. Otwórz je, aby zobaczyć, jak wyliczono liczbę, lub zadaj to samo pytanie prostym językiem na terminalu Strasmore.