7 września 2026 · opcje

Wiersz, na którym opiera się backtest opcji: jeden call BTC na Deribit, pole po polu

Wiersz, na którym opiera się backtest opcji: jeden call BTC na Deribit, pole po polu

W zeszłym miesiącu ktoś z zespołu badawczego zapytał mnie, dlaczego nasze agenty opcyjne wciąż odrzucały całkiem rozsądny pomysł na long gamma. Sygnał był dobry. Prognoza zmienności też. Problemem były dwa pola w kanale danych rynkowych i jedna liczba, której w tym kanale w ogóle nie ma.

Oto więc obiekt, o który się spieraliśmy. Odpowiedź Deribit ticker dla BTC-25SEP26-110000-C, pobrana w poniedziałek o 11:20 UTC, gdy do wygaśnięcia kontraktu pozostawało osiemnaście dni. Usunąłem przestarzałe pola, zostawiając wszystko, co ma znaczenie.

{
  "instrument_name": "BTC-25SEP26-110000-C",
  "index_price": 96412.18,
  "underlying_price": 96980.44,
  "underlying_index": "SYN.BTC-25SEP26",
  "estimated_delivery_price": 96412.18,
  "mark_price": 0.0041,
  "mark_iv": 42.14,
  "best_bid_price": 0.0038,  "best_bid_amount": 4.9,
  "best_ask_price": 0.0045,  "best_ask_amount": 12.1,
  "bid_iv": 40.42,           "ask_iv": 43.94,
  "last_price": 0.0043,
  "interest_rate": 0.0,
  "open_interest": 812.7,
  "greeks": {
    "delta": 0.0962, "gamma": 0.0000189,
    "vega": 36.77,   "theta": -42.91,  "rho": 4.61
  },
  "stats": { "volume": 61.2, "high": 0.0051, "low": 0.0036 }
}

instrument_name: cztery fakty, jeden ciąg znaków

BTC-25SEP26-110000-C. Instrument bazowy BTC, data wygaśnięcia 25 września 2026, strike 110,000, call. Ciąg nie mówi jednak, a każdy nowy backtest opcji przynajmniej raz błędnie to zakłada, o pozostałych szczegółach kontraktu: jeden kontrakt odpowiada 1 BTC instrumentu bazowego, premia jest kwotowana i płacona w BTC, a wygaśnięcie następuje o 08:00 UTC, a nie o 16:00 czasu lokalnego w jakimkolwiek miejscu.

Kwotowanie w BTC to tu najważniejsza pułapka. Mark na poziomie 0.0041 oznacza 0.0041 BTC, czyli około $395 według indeksu. Jeśli zapiszesz tę kolumnę jako cenę, a później połączysz ją z P&L strategii wyrażonym w USD, po cichu zbudujesz pozycję, której wartość w dolarach zmienia się wraz z ceną spot, nawet gdy opcja tego nie robi. Widziałem backtest, w którym długa noga call zarabiała w dniu spadku BTC wyłącznie dlatego, że premię zinterpretowano jako dolary, a badacz w rzeczywistości miał krótką pozycję w premii denominowanej w BTC, rozliczaną w dolarowym ujęciu księgowym. Znalezienie tego zajęło dwa dni.

index_price a underlying_price: różnica 568 dolarów, ale tylko jedna cena jest właściwa

Te wartości różnią się o $568.26 i nie jest to błąd. index_price to indeks BTC Deribit — punkt odniesienia dla ceny spot, wyliczany jako połączenie danych z głównych giełd i stanowiący podstawę rozliczenia kontraktu. underlying_price to cena syntetycznego forwardu dla konkretnego terminu wygaśnięcia, SYN.BTC-25SEP26, wyprowadzona z rynku futures dla tej samej daty. Osiemnaście dni kosztu utrzymania pozycji przy około 12% w skali roku daje te $568.

Każda greka w tym pakiecie danych, podobnie jak mark IV, jest obliczana na podstawie forwardu. Jeśli samodzielnie wyliczysz zmienność implikowaną, używając spotu, bo akurat tę serię masz wczytaną, otrzymasz inną wartość dla każdego strike'u, a błąd będzie systematycznie ukierunkowany: calle będą wyglądać na tańsze pod względem zmienności, niż są w rzeczywistości, a puty na droższe. Przy kontrakcie 18-dniowym i bazie 0.6% błędnie wycenisz mark IV dla tego strike'u o około półtora punktu. To więcej niż większość przewag na zmienności, wokół których buduje się strategie.

interest_rate: 0.0 oznacza, że Deribit dyskontuje przez forward, a nie przez stopę procentową. Nie szukaj krzywej stopy wolnej od ryzyka do podstawienia — policzysz ją podwójnie.

mark_price i mark_iv: cena bez drugiej strony transakcji

0.0041 BTC. Nikt tyle nie zapłacił. Deribit wylicza mark z dopasowanej powierzchni zmienności, opartej na arkuszu zleceń, ale wygładzonej między strike'ami i terminami wygaśnięcia, żeby depozyt zabezpieczający i likwidacje nie skakały, gdy zmieni się pojedyncza szeroka kwotacja. Mark jest podstawą obliczania depozytu zabezpieczającego i niezrealizowanego P&L, pojawia się też w każdym endpointcie pozycji.

Dlatego mark jest najbardziej kuszącą ceną realizacji w badaniach nad opcjami krypto — i najbardziej błędną. Backtest, który kupuje po mark i sprzedaje po mark, handluje z wygładzającą funkcją sklejającą. Wygeneruje Sharpe'a. Ten Sharpe opisuje dopasowanie powierzchni i nie mówi nic o tym, czy dało się zawrzeć transakcję.

Zasada, którą ostatecznie zakodowaliśmy: mark służy do depozytu zabezpieczającego, zarządzania ryzykiem i atrybucji mid-to-mid. Nigdy nie jest ceną realizacji. Jeśli backtest potrzebuje ceny realizacji, a dla danego znacznika czasu nie ma migawki arkusza zleceń, uruchomienie dostaje oznaczenie „bez wyceny”, zamiast zakładać realizację po mark. Wolimy utracić ten wiersz.

best_bid 0.0038 / best_ask 0.0045: spread w trzech jednostkach

Siedem ticków szerokości w BTC. To $67.50 przy opcji wartej $395, czyli 17% premii. W jednostkach zmienności spread wynosi 3.5 punktu: bid 40.4 wobec ask 43.9. Tę wartość poda ci trader opcyjny, gdy zapytasz, jak szeroko jest na rynku.

Wielkości zleceń są równie ważne jak ceny: 4.9 kontraktu po stronie bid i 12.1 po stronie ask. Wielkość w opcjach Deribit podawana jest w kontraktach, a więc chodzi o 4.9 BTC instrumentu bazowego, czyli około $472k nominału — ale tylko 0.47 BTC delty przy tym strike'u. Jeśli strategia potrzebuje istotnej gammy, wymaga dziesiątek kontraktów, a widoczna wielkość na najlepszej cenie stanowi tylko ułamek tej liczby. Drugi poziom arkusza jest zwykle oddalony o kolejne dwa lub trzy ticki. Backtest opcji z modelem wielkości pozycji musi przechodzić po arkuszu albo zakładać wycenę RFQ lub bloku — a te dwa założenia dają zupełnie różne wyniki.

last_price: 0.0043 to transakcja zawarta w pewnym momencie ostatnich 24 godzin, być może dziewiętnaście godzin temu, przy zupełnie innym poziomie spotu. Z definicji jest nieaktualna dla instrumentu, na którym handluje się 61 kontraktami dziennie. Nie buduj na niej szeregu stóp zwrotu.

greeks: pięć liczb, cztery konwencje jednostek

Ta sekcja powoduje więcej niezauważonych błędów niż cała reszta pakietu danych, bo każda wartość jest wymiarowo poprawna, ale żadna nie ma jednostki, której można by się spodziewać.

PoleWartośćJednostkiCzęsta błędna interpretacja
delta0.0962BTC instrumentu bazowego na kontraktUznana za deltę w dolarach
gamma0.0000189Δdelty na każde $1 zmiany instrumentu bazowegoUznana za wartość dla ruchu o 1%
vega36.77USD na 1 punkt zmiennościUznana za wartość dla 100% zmienności albo za wartość w BTC
theta-42.91USD na dzień kalendarzowyUznana za wartość na dzień sesyjny
rho4.61USD na 1% stopyPominięta, słusznie

Delta jest wyrażona w monetach, vega i theta w dolarach, a gamma podaje zmianę na każdy dolar ruchu spotu. Dodanie delty wyrażonej w monetach do agregatu ryzyka wyrażonego w dolarach sprawia, że portfel wyglądający na neutralny okazuje się mieć długą pozycję 40 BTC. Theta liczona na dzień kalendarzowy daje się we znaki strategiom weekendowym: od zamknięcia w piątek do otwarcia w poniedziałek mijają trzy dni rozpadu wartości, czyli tutaj około $129 na kontrakt, mimo że nie odbywa się żadna sesja. Jeśli backtest przechodzi po świecach i nalicza theta za każdy krok, weekendy znikają, a wyniki każdej strategii sprzedającej premię po cichu stają się gorsze od rzeczywistych.

open_interest 812.7, volume 61.2: gdzie faktycznie koncentruje się handel w łańcuchu

Osiemset kontraktów otwartych na strike'u, na którym wczoraj handlowano sześćdziesięcioma jeden. To aktywny, rzeczywiście handlowany strike — 110,000 to okrągła wartość na trzy tygodnie przed wygaśnięciem, dokładnie tam, gdzie koncentruje się przepływ zleceń. Przesuń się o dwa strike'i dalej, do 120,000, a open interest spadnie dziesięciokrotnie; przejdź do nieokrągłego strike'u z terminem wygaśnięcia poza cyklem miesięcznym, a znajdziesz instrumenty z bidem, askiem oddalonym o 40% i bez transakcji od tygodnia.

Backtest całego łańcucha, który iteruje po każdym notowanym instrumencie, chętnie zawrze transakcję na wszystkich. Ostatecznie wprowadziliśmy łączny warunek kwalifikacji: kwotowany spread poniżej 20% mark, co najmniej 1 kontrakt po obu stronach i niezerowy wolumen w ciągu poprzednich 24 godzin. W typowy dzień przechodzi go mniej więcej jedna trzecia notowanych opcji BTC. W pozostałych dwóch trzecich kryje się fałszywa alfa.

Pole, którego nie ma w pakiecie danych

Żadne pole w tym obiekcie nie mówi, ile kosztuje transakcja. Deribit pobiera 0.0003 BTC za kontrakt opcyjny, tyle samo od makerów i takerów — 0.03% instrumentu bazowego, a nie premii — z limitem wynoszącym 12.5% ceny opcji. Dla tego kontraktu daje to $28.92 za stronę, bez zastosowania limitu, bo 12.5% z 0.0041 to 0.000513, a opłata ryczałtowa jest niższa.

Opłata liczona od nominału, a premia zależna od zmienności oznaczają, że koszt jako część zapłaconej kwoty gwałtownie rośnie wraz z oddalaniem się poza pieniądz.

$67.50kwotowany spread (17% mark)
$28.92opłata za kontrakt i stronę transakcji
31%pełna transakcja w obie strony jako % premii
3.5 pktszerokość bid/ask w jednostkach zmienności

Kup po ask 0.0045 ($434), sprzedaj po bid 0.0038 ($366), zapłać dwukrotnie opłatę: transakcja w obie strony kosztuje $125.80 przy kontrakcie z mark na poziomie $395. Twoja prognoza musi przynieść 31% premii, zanim wyjdziesz na zero. Właśnie dlatego pomysł na long gamma został odrzucony — sygnał nie miał z tym nic wspólnego.

Ciekawiej robi się, gdy zapytasz o koszt delty, bo opłaty rosną wraz z liczbą kontraktów, a liczba kontraktów rośnie odwrotnie proporcjonalnie do delty. Dla uproszczenia obliczeń przyjmijmy stałe mark IV równe 42.1% dla wszystkich strike'ów (rzeczywisty łańcuch ma skośność, a w krypto skrzydło call zwykle jest notowane powyżej ATM, co sprawia, że poniższa tabela jest optymistyczna):

InstrumentMark (BTC)DeltaKontrakty na 1 BTC deltyOpłata/stronaKoszt na BTC delty
97000-C (ATM)0.03730.5181.93$28.92$55.80
110000-C0.00410.09610.4$28.92$301
120000-C0.00040.01379.4$4.82 (z limitem)$383
BTC perp—1.01.0$48.21$48.21

Limit 12.5% ma realne znaczenie w ostatnim wierszu; bez niego głębokie skrzydło kosztowałoby $2,300 na BTC delty, przez co strategie loteryjne byłyby niemożliwe matematycznie, a nie tylko słabe. Nawet z limitem kupno ekspozycji przez strike 120,000 kosztuje około osiem razy więcej niż na perpetualu. Opcje nie są tanim sposobem na wyrażenie kierunku, a każdy backtest, który twierdzi inaczej, pominął tę tabelę.

08:00 UTC, 25 września

Ostatnia rzecz, której ticker ci nie mówi, to sposób zakończenia pozycji. Deribit rozlicza opcje na podstawie 30-minutowej średniej indeksu poprzedzającej 08:00 UTC w dniu wygaśnięcia i pobiera opłatę za dostawę w wysokości 0.00015 BTC od kontraktów in-the-money, również ograniczoną do 12.5% wartości rozliczenia.

Dwie konsekwencje dla backtestu. Po pierwsze, to okno uśredniania ma znaczenie i można je źle odwzorować: opcja warta $300 in-the-money o 07:59 może wygasnąć bez wartości, jeśli ostatnie pół godziny było niekorzystne, a backtest rozliczający ją według ceny z 08:00 będzie różnił się od twojego konta testowego o kilka punktów bazowych przy większości wygaśnięć i znacznie bardziej przy niektórych. Po drugie, opłata za dostawę obowiązuje niezależnie od tego, czy chcesz rozliczenia, więc strategia utrzymująca pozycję do wygaśnięcia płaci trzy opłaty na cykl, a strategia zamykająca ją o 07:30 płaci dwie opłaty i spread. To, co jest tańsze, zależy od strike'u, a granica wypada mniej więcej przy premii 0.0012 BTC. Obliczamy to dla każdej pozycji zamiast przyjmować jedną zasadę dla wszystkich.

Chciałem napisać ten tekst o prognozowaniu zmienności. Zamiast tego spędziłem tydzień na jednostkach i limitach opłat, co mniej więcej oddaje właściwe proporcje blichtru i rzeczywistości w badaniach nad opcjami.

Dwadzieścia pól. Dwie ceny, które z założenia się różnią, jedna cena, po której nikt nie handlował, greki w czterech systemach jednostek i model kosztów w całości poza pakietem danych, na stronie z dokumentacją. Jeśli uruchamiasz backtest opcji, poświęć pierwszy dzień na napisanie jednej funkcji, która zamienia taki obiekt w pozycję z poprawnie naliczonymi kosztami i jednostkami — spread, opłata, limit, dostawa, monety kontra dolary. Każda późniejsza strategia odziedziczy założenia tej funkcji.

opcje kryptoderibitzmienność implikowanaopłatybacktesting
← Wszystkie wpisy