Box spread opcje a implikowana stopa procentowa
Box spread to syntetyczna pożyczka oparta na czterech opcjach. Analiza pokazuje mechanizm blokowania wypłaty w oparciu o różnicę cen wykonania oraz sposób wyznaczania stopy procentowej.
Box spread to cztery kontrakty opcyjne, które razem zachowują się jak pożyczka bezodsetkowa: określona kwota gotówki zmienia właściciela dzisiaj, a ustalona kwota – różnica między dwoma cenami wykonania – zmienia właściciela w momencie wygaśnięcia. Poziom, na którym znajdzie się instrument bazowy, nie ma wpływu na końcową wypłatę. Jedyną niewiadomą w wycenie box spreadu jest stopa procentowa ukryta w jego cenie.
Czym jest box spread?
Box wykorzystuje dwie ceny wykonania i jedną datę wygaśnięcia dla pojedynczego instrumentu bazowego. Przyjmijmy niższą cenę wykonania jako K1, a wyższą jako K2. Długi box składa się z czterech nóg:
- długa pozycja na opcji call z ceną K1
- krótka pozycja na opcji call z ceną K2
- długa pozycja na opcji put z ceną K2
- krótka pozycja na opcji put z ceną K1
Pierwsze dwie nogi tworzą bull call spread. Dwie ostatnie tworzą bear put spread. Zakup obu jednocześnie wiąże się z debetem netto, czyli wypływem gotówki z rachunku w dniu dzisiejszym. Każda notowana opcja na akcje w USA obejmuje 100 akcji, więc box o rozpiętości dziesięciu punktów rozlicza się kwotą 1000 USD na kontrakt.
Sprzedaż tych samych czterech nóg to krótki box (short box). Generuje on kredyt netto dzisiaj i wymaga zapłaty różnicy cen wykonania w momencie wygaśnięcia.
Dlaczego box spread wypłaca różnicę cen wykonania w momencie wygaśnięcia
Podzielmy scenariusze zakończenia na trzy obszary. Poniżej K1 obie opcje call wygasają jako bezwartościowe, a put spread jest wart pełną różnicę. Powyżej K2 obie opcje put wygasają jako bezwartościowe, a call spread jest wart pełną różnicę. Pomiędzy cenami wykonania długa opcja call przy K1 jest warta różnicę powyżej K1, a długa opcja put przy K2 jest warta różnicę poniżej K2; suma tych dwóch wartości daje pełną rozpiętość.
Poniższy panel przedstawia każdy poziom cenowy 5 USD, przy którym SPY zamknął się w czerwcu 2026 r., oraz wycenia oba spready na tym poziomie, przy cenach wykonania ustawionych o pięć punktów w obie strony od średniego zamknięcia miesiąca.
Dokładny kod SQL dla każdej liczby
WITH
daily AS
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS spy_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-06-01 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
),
strikes AS
(
SELECT
round(avg(spy_close) / 5) * 5 - 5 AS lower_strike,
round(avg(spy_close) / 5) * 5 + 5 AS upper_strike
FROM daily
),
levels AS
(
SELECT DISTINCT round(spy_close / 5) * 5 AS settle
FROM daily
)
SELECT
concat('$', toString(toUInt32(settle))) AS settle_level,
concat('$', toString(toUInt32(lower_strike)), ' / $', toString(toUInt32(upper_strike))) AS box_strikes,
round(greatest(settle - lower_strike, 0) - greatest(settle - upper_strike, 0), 2) AS call_leg_value,
round(greatest(upper_strike - settle, 0) - greatest(lower_strike - settle, 0), 2) AS put_leg_value,
round(greatest(settle - lower_strike, 0) - greatest(settle - upper_strike, 0)
+ greatest(upper_strike - settle, 0) - greatest(lower_strike - settle, 0), 2) AS box_value
FROM levels
CROSS JOIN strikes
ORDER BY settleKolumny call_leg_value oraz put_leg_value znoszą się wzajemnie na każdym poziomie. Kolumna box_value pozostaje niezmienna: 10 na najniższym poziomie, który odwiedził SPY, oraz 10 na najwyższym, przy cenach wykonania $740 / $750. Ta stała stanowi istotę całej struktury. Formalnym zapisem tej samej tożsamości jest parytet put-call, który ustala relację między opcją call a opcją put o tej samej cenie wykonania. Box stosuje parytet dla dwóch cen wykonania i wylicza różnicę.
Jak obliczyć implikowaną stopę pożyczki dla box spreadu
Dwie liczby ustalają stopę: debet netto zapłacony dzisiaj oraz różnica cen wykonania otrzymana przy wygaśnięciu. Przyjmijmy hipotetyczny box o rozpiętości dziesięciu punktów z 200 dniami do wygaśnięcia, wyceniony przy debecie netto 9,70 USD. Na kontrakt oznacza to 970 USD wypływu dzisiaj wobec 1000 USD zwrotu przy wygaśnięciu, co daje zysk 30 USD.
Podziel zysk przez zainwestowaną kwotę, a następnie przeskaluj wynik na rok. Trzydzieści dolarów od 970 USD to 3,09 procent w ciągu 200 dni, a 3,09 procent pomnożone przez 365 i podzielone przez 200 daje około 5,6 procent rocznie. Zastosowanie procentu składanego zamiast prostego skalowania (podniesienie ilorazu 1000 przez 970 do potęgi 365 przez 200) daje około 5,7 procent. Obie wersje odpowiadają na jedno pytanie: jaką stopę implikuje ta cena?
Czy długi box to udzielanie czy zaciąganie pożyczki?
Długi box to udzielanie pożyczki. Gotówka opuszcza rachunek dzisiaj, większa stała kwota wpływa przy wygaśnięciu, a różnica stanowi zarobione odsetki.
Krótki box to zaciąganie pożyczki. Kredyt wpływa dzisiaj, różnica cen wykonania jest należna przy wygaśnięciu, a identyczne obliczenia wskazują stopę zapłaconą, a nie zarobioną. Ten kierunek jest często określany odwrotnie. Należy oprzeć się na przepływach gotówki: pieniądze otrzymane dzisiaj w zamian za stałą spłatę w przyszłości to zaciągnięta pożyczka, a pieniądze zapłacone dzisiaj w zamian za stały wpływ w przyszłości to udzielona pożyczka.
Czy box spread posiada deltę?
Delta mierzy, o ile zmienia się cena opcji przy zmianie ceny instrumentu bazowego o jednego dolara. Cztery nogi boxa posiadają własne wysokie delty, które znoszą się wzajemnie. Poniższy panel przedstawia greki dla kontraktów na SPY wygasających 18 grudnia 2026 r. według stanu na 1 czerwca 2026 r. K1 ustawiono na cenę wykonania najbliższą kursowi spot, a K2 rozszerzono w górę.
Dokładny kod SQL dla każdej liczby
WITH
chain AS
(
SELECT
toFloat64(strike_price) AS strike,
avg(toFloat64(underlying_close)) AS spot,
round(avgIf(delta, delta > 0), 4) AS call_delta,
round(avgIf(delta, delta < 0), 4) AS put_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2026-06-01'
AND expiration_date = '2026-12-18'
AND iv_converged = 1
AND volume > 0
GROUP BY strike
HAVING countIf(delta > 0) > 0
AND countIf(delta < 0) > 0
),
lower_leg AS
(
SELECT
strike AS k1,
call_delta AS c1,
put_delta AS p1
FROM chain
ORDER BY abs(strike - spot)
LIMIT 1
)
SELECT
toUInt32(strike - k1) AS strike_width,
round(c1 - call_delta, 4) AS call_leg_delta,
round(put_delta - p1, 4) AS put_leg_delta,
round(c1 - call_delta + put_delta - p1, 4) AS box_net_delta
FROM chain
CROSS JOIN lower_leg
WHERE strike > k1
AND strike <= k1 + 60
ORDER BY strikePrzy najszerszym zestawieniu w panelu, 50 punktów różnicy, noga call posiada deltę 0.2208, a noga put -0.1977. Suma netto wynosi 0.0231. Przy najwęższym zestawieniu wynik netto to 0.0005. Te wartości resztkowe to szum modelu wokół zera. Box nie posiada kierunkowego poglądu na rynek, dlatego wyceniany jest jako finansowanie, a nie jako pozycja spekulacyjna.
Jakie jest realne ryzyko w box spreadzie?
Opcje typu amerykańskiego mogą zostać wykonane przez posiadacza w dowolnym dniu roboczym przed wygaśnięciem. Opcje typu europejskiego nie dają takiej możliwości. To rozróżnienie, opisane w opcje amerykańskie a europejskie, decyduje o tym, czy box zachowuje się jak pożyczka, czy jak aktywna pozycja z depozytem zabezpieczającym.
Mechanizm wygląda następująco:
- Zarówno długie, jak i krótkie boxy zawierają dwie krótkie nogi, a w przypadku akcji lub ETF-ów są to opcje typu amerykańskiego.
- Długi box utrzymuje krótkie nogi na zewnętrznych krańcach, poza pieniądzem (out of the money), gdy instrument bazowy znajduje się między cenami wykonania. Krótki box robi odwrotnie: obie jego krótkie nogi są w pieniądzu (in the money) w tym samym obszarze.
- Krótka opcja w pieniądzu z niemal zerową wartością czasową jest tą, którą posiadacz wykonuje przedterminowo. Nadchodząca dywidenda jest częstym powodem dla krótkich opcji call, co opisano w daty ex-dividend a opcje.
- Wykonanie zamienia tę nogę na 100 akcji na kontrakt, długich lub krótkich, podczas gdy pozostałe trzy nogi pozostają bez zmian.
- Pozycja w akcjach wiąże się z wymogiem depozytu zabezpieczającego obliczanym od ceny akcji, a nie od rozpiętości boxa. Rachunek przygotowany na kilkaset dolarów kredytu netto może nagle stanąć przed wymogiem rzędu dziesiątek tysięcy dolarów, co prowadzi do przymusowej likwidacji, jeśli wymóg nie zostanie spełniony.
Taki scenariusz doprowadził do wyzerowania głośnego rachunku detalicznego w 2018 roku. Mechanizm wyrządził szkodę, mimo że instrument bazowy w ogóle nie musiał zmienić ceny.
Opcje na indeksy rozliczane gotówkowo znajdują się po drugiej stronie. Są typu europejskiego, co oznacza, że nikt nie może ich wykonać przed wygaśnięciem. Rozliczenie następuje poprzez płatność gotówkową w oparciu o obliczony poziom indeksu, a nie dostawę akcji, a jego czas ma swoją specyfikę opisaną w opcje rozliczane rano (AM) a po południu (PM).
Dlaczego prowizje i spread bid-ask zazwyczaj pochłaniają zysk
Nogi szerokiego boxa znajdują się przy cenach wykonania znacznie oddalonych od kursu spot. Poniższy panel dzieli obrót opcjami na SPY w czerwcu 2026 r. na pięć koszyków według stopnia bycia w pieniądzu (moneyness).
Dokładny kod SQL dla każdej liczby
WITH
chain AS
(
SELECT
multiIf(
toFloat64(strike_price) / toFloat64(underlying_close) < 0.85, 1,
toFloat64(strike_price) / toFloat64(underlying_close) < 0.95, 2,
toFloat64(strike_price) / toFloat64(underlying_close) < 1.05, 3,
toFloat64(strike_price) / toFloat64(underlying_close) < 1.15, 4,
5) AS bucket_key,
multiIf(
bucket_key = 1, 'more than 15% below spot',
bucket_key = 2, '5% to 15% below spot',
bucket_key = 3, 'within 5% of spot',
bucket_key = 4, '5% to 15% above spot',
'more than 15% above spot') AS moneyness_bucket,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 30 AND 400
),
totals AS
(
SELECT
sum(volume) AS all_volume,
count() AS all_rows
FROM chain
)
SELECT
moneyness_bucket,
round(100 * count() / any(all_rows), 2) AS contracts_pct,
round(100 * sum(volume) / any(all_volume), 2) AS turnover_pct
FROM chain
CROSS JOIN totals
GROUP BY bucket_key, moneyness_bucket
ORDER BY bucket_keyW przypadku wygaśnięć SPY za miesiąc lub dłużej w czerwcu 2026 r., ceny wykonania w granicach 5% od kursu spot stanowiły 43% obrotu kontraktami, pokrywając 34.99% dni kontraktowych, w których odnotowano transakcje. Koszyk najdalej poniżej kursu spot odpowiadał za 25.03% obrotu w ciągu 23.06% dni kontraktowych; te ceny wykonania zawierają głęboko w pieniądzu opcje call, na których buduje się szeroki box, oraz – przy tych samych cenach – opcje put głęboko poza pieniądzem. Wolumen zgromadzony w koszyku nie jest wolumenem dostępnym w konkretnym kontrakcie potrzebnym do boxa, a każda noga jest kwotowana ze spreadem. Box musi pokonać cztery takie spready przy otwarciu i kolejne cztery przy zamknięciu przed wygaśnięciem.
Błąd egzekucji również rośnie wraz z terminem. Dziesięć centów poślizgu (slippage) na boxie o rozpiętości dziesięciu punktów to 1% różnicy cen wykonania, a 1% w ujęciu rocznym przy krótkim terminie to ogromna wartość. Panel wycenia te hipotetyczne dziesięć centów w odniesieniu do miesięcznych wygaśnięć SPY notowanych 1 czerwca 2026 r.
Dokładny kod SQL dla każdej liczby
SELECT
concat(formatDateTime(expiration_date, '%b %e, %Y'),
' (', toString(toUInt32(any(days_to_expiry))), 'd)') AS expiry_label,
round(100 * (0.10 / 10) * (365 / any(days_to_expiry)), 2) AS annual_cost_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date = '2026-06-01'
AND iv_converged = 1
AND volume > 0
AND toDayOfWeek(expiration_date) = 5
AND toDayOfMonth(expiration_date) BETWEEN 15 AND 21
AND days_to_expiry BETWEEN 30 AND 800
GROUP BY expiration_date
ORDER BY any(days_to_expiry)
LIMIT 12Przy Jul 17, 2026 (46d) te dziesięć centów kosztuje 7.93% rocznie. Przy Jun 16, 2028 (746d) te same dziesięć centów kosztuje 0.49%. Transakcje finansujące są zawierane na długie terminy właśnie z tego powodu, dlatego nogi boxa przypominają głęboko w pieniądzu LEAPS. Do tego dochodzą prowizje, naliczane od czterech nóg jednocześnie; opłaty za kontrakt i za nogę zostały szczegółowo opisane w koszty handlu opcjami.
FAQ
Czy box spread jest wolny od ryzyka?
Wypłata przy wygaśnięciu jest ustalona na poziomie różnicy cen wykonania, a pozycja nie posiada ekspozycji kierunkowej. Pozostają dwa rodzaje ryzyka: przedterminowe wykonanie w przypadku kontraktów typu amerykańskiego oraz koszty otwarcia i późniejszego zamknięcia czterech nóg.
Jaka jest różnica między długim a krótkim boxem?
Długi box jest opłacany debetem netto dzisiaj i wypłaca różnicę cen wykonania przy wygaśnięciu, co stawia kupującego w roli pożyczkodawcy. Krótki box generuje kredyt netto dzisiaj i wymaga zapłaty różnicy cen wykonania przy wygaśnięciu, co stawia sprzedającego w roli pożyczkobiorcy.
Czy box spread może zostać wykonany przedterminowo?
Tak, jeśli jest zbudowany z opcji typu amerykańskiego na akcje lub ETF-y. Każda krótka noga może zostać wykonana przez posiadacza w dowolnym dniu roboczym, co zamienia tę nogę w pozycję w akcjach z własnym wymogiem depozytu zabezpieczającego. Box zbudowany z opcji na indeksy typu europejskiego, rozliczanych gotówkowo, nie może zostać wykonany przedterminowo.
Dlaczego brokerzy ograniczają krótkie boxy?
Wielu brokerów ogranicza lub blokuje krótkie boxy na kontraktach typu amerykańskiego. Jedno przedterminowe wykonanie zamienia małą pozycję opcyjną w dużą pozycję w akcjach wraz z przypisanym do niej wymogiem depozytu.
Jak obliczyć implikowaną stopę dla box spreadu?
Podziel różnicę cen wykonania przez debet netto, podnieś wynik do potęgi 365 podzielonej przez liczbę dni do wygaśnięcia, a następnie odejmij jeden. Wersja uproszczona dzieli zysk przez debet i mnoży przez 365 podzielone przez liczbę dni.
Każdy panel tutaj zawiera kod SQL, który go wygenerował. Otwórz go, zmień ticker lub datę wygaśnięcia i uruchom samodzielnie na terminalu Strasmore.