7. september 2026 · opsjoner

Raden backtesten din for opsjoner bygger på: én Deribit BTC-call, felt for felt

Raden backtesten din for opsjoner bygger på: én Deribit BTC-call, felt for felt

Forrige måned spurte en på analysesiden meg hvorfor opsjonsagentene våre stadig avviste en tilsynelatende helt rimelig idé om lang gamma. Signalet var bra. Vol-prognosen var bra. Problemet var to felt i markedsdatafeeden og ett tall som ikke finnes i feeden i det hele tatt.

Her er altså det faktiske objektet vi diskuterte. Deribit-tickersvar for BTC-25SEP26-110000-C, hentet kl. 11:20 UTC en mandag, med atten dager igjen til kontraktsutløp. Jeg har fjernet de utdaterte feltene og beholdt alt som betyr noe.

{
  "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: fire fakta, én streng

BTC-25SEP26-110000-C. Underliggende BTC, utløp 25. september 2026, strike 110,000, call. Det strengen ikke forteller, og som alle nye opsjonsbacktester tar feil av minst én gang, er resten av kontraktspesifikasjonen: én kontrakt tilsvarer 1 BTC i underliggende, premien noteres og betales i BTC, og utløpet er kl. 08:00 UTC, ikke kl. 16:00 lokal tid.

At premien noteres i BTC, er fallgruven her. En markering på 0.0041 er 0.0041 BTC, omtrent $395 målt mot indeksen. Hvis du lagrer den kolonnen som en pris og senere kobler den mot en strategi-P&L denominert i USD, har du i stillhet bygget en posisjon der dollarverdien følger spot selv når opsjonen ikke gjør det. Jeg har sett en backtest der long-call-beinet tjente penger en dag BTC falt, utelukkende fordi premiekolonnen ble tolket som dollar, mens forskeren i praksis var short den BTC-denominerte premien i et dollarbasert regnskap. Det tok to dager å oppdage.

index_price vs underlying_price: 568 dollar i forskjell, men bare én er riktig

De skiller seg med $568.26, og det er ingen feil. index_price er Deribits BTC-indeks — spotreferansen, et snitt av store børser og det kontrakten til slutt gjøres opp mot. underlying_price er prisen på den syntetiske terminkontrakten for det aktuelle utløpet, SYN.BTC-25SEP26, beregnet fra futuresmarkedet for samme dato. Atten dagers carry med omtrent 12% annualisert rente gir deg disse $568.

Alle grekerne i datastrømmen, og mark-IV, beregnes ut fra terminsprisen. Hvis du selv beregner implisitt volatilitet med spot fordi det var serien du hadde lastet inn, får du et annet tall for hver strike, og feilen trekker systematisk i én retning: calls ser billigere ut målt i vol enn de er, mens puts ser dyrere ut. For en 18-dagers kontrakt med 0.6% basis ville du feilberegnet mark-IV med omtrent halvannet volpoeng på denne striken. Det er mer enn de fleste vol-fordelene folk bygger strategiene sine på.

interest_rate: 0.0 forteller at Deribit diskonterer via terminsprisen og ikke via en rente. Ikke let etter en risikofri rentekurve å bruke; da dobbeltteller du.

mark_price og mark_iv: en pris uten motpart

0.0041 BTC. Ingen betalte den prisen. Deribit beregner markeringen fra en tilpasset vol-overflate, forankret i ordreboken, men glattet på tvers av strikes og utløp slik at margin og likvideringer ikke hopper når én enkelt bred notering flytter seg. Markeringen brukes til marginberegning og urealisert P&L, og vises i hvert posisjonsendepunkt.

Dermed er den den mest forlokkende fyllprisen i kryptoopsjonsanalyse — og den mest feilaktige. En backtest som kjøper til markering og selger til markering, handler mot en glattingskurve. Den vil gi en Sharpe. Den Sharpe-verdien beskriver tilpassingen av vol-overflaten og sier ingenting om hvorvidt du kunne ha gjennomført handelen.

Regelen vi endte med å kode inn: markeringen brukes til margin, risiko og attribusjon fra midtpris til midtpris. Den brukes aldri som fyllpris. Hvis backtesten trenger en fyllpris og det ikke finnes et øyeblikksbilde av ordreboken for tidspunktet, merkes kjøringen som uten pris i stedet for å fylle til markering. Vi vil heller miste raden.

best_bid 0.0038 / best_ask 0.0045: spreaden i tre enheter

Sju ticks bred målt i BTC. Det er $67.50 på en opsjon til $395, eller 17% av premien. Målt i vol er den 3.5 poeng, 40.4 på kjøpssiden mot 43.9 på salgssiden. Det er tallet en opsjonstrader faktisk oppgir hvis du spør hvor bred spreaden er.

Størrelsene betyr like mye som prisene: 4.9 kontrakter på kjøpssiden, 12.1 på salgssiden. Størrelse på Deribit-opsjoner oppgis i kontrakter, så det tilsvarer 4.9 BTC i underliggende, omtrent $472k i nominell verdi — men bare 0.47 BTC i delta på denne striken. Hvis strategien din trenger meningsfull gamma, må den ha titalls kontrakter, og den synlige ordreboken på beste kjøps- og salgskurs gir deg bare en brøkdel av det. Nivået under ligger som regel ytterligere to eller tre ticks unna. En opsjonsbacktest med en størrelsesmodell må enten gå gjennom ordreboken eller anta RFQ-/blokkprising, og de to antakelsene gir svært forskjellige svar.

last_price: 0.0043 er en handel som skjedde en gang i løpet av de siste 24 timene, kanskje for nitten timer siden og ved et helt annet spotnivå. Den er foreldet fra start på et instrument som handles 61 kontrakter om dagen. Ikke bygg en avkastningsserie på den.

grekere: fem tall, fire enhetskonvensjoner

Denne blokken gjør mer ubemerket skade enn resten av datastrømmen til sammen, fordi alle verdiene er dimensjonelt riktige, men ingen av dem er oppgitt i enhetene du ville gjettet.

FeltVerdiEnheterVanlig feiltolkning
delta0.0962BTC i underliggende per kontraktTolkes som dollar-delta
gamma0.0000189Δdelta per $1 i underliggendeAntas å være per 1% bevegelse
vega36.77USD per 1 volpoengAntas å være per 100% vol, eller i BTC
theta-42.91USD per kalenderdagAntas å være per handelsdag
rho4.61USD per 1% renteIgnoreres, med rette

Delta er oppgitt i coins, vega og theta i dollar, og gamma per dollar spotbevegelse. Å blande et coin-denominert delta inn i en dollarbasert risikosum er slik du ender med en bok som ser flat ut, men viser seg å være long 40 BTC. At theta er per kalenderdag, er det som rammer helgestrategier: Fra fredagens stenging til mandagens åpning går det tre dagers tidsverdifall, omtrent $129 per kontrakt her, uten noen handelsøkter imellom. Hvis backtesten går stegvis gjennom barer og bruker theta per steg, forsvinner helgene, og alle short-premium-strategier blir stilltiende dårligere enn de egentlig er.

open_interest 812.7, volume 61.2: slik ser opsjonskjeden faktisk ut

Åtte hundre kontrakter i åpen interesse på en strike som omsatte 61 kontrakter i går. Det er en reell, aktiv strike — 110,000 er et rundt tall med tre uker igjen, akkurat der handelsstrømmen konsentreres. Gå to strikes lenger ut til 120,000, så faller åpen interesse med en størrelsesorden. Gå til en strike som ikke er et rundt tall og et utløp som ikke er månedlig, så finner du instrumenter med en kjøpskurs, en salgskurs som ligger 40 prosent unna og ingen handler på en uke.

En backtest av hele opsjonskjeden som går gjennom alle børsnoterte instrumenter, fyller deg gladelig i dem alle. Vi endte med å bruke et samlet filter: spreaden må være under 20% av markeringen, det må være minst 1 kontrakt på hver side, og volumet de foregående 24 timene må være større enn null. På en vanlig dag består omtrent en tredjedel av den børsnoterte BTC-kjeden dette filteret. Det er i de to andre tredjedelene den falske alfaen bor.

Feltet som ikke finnes i datastrømmen

Ingenting i dette objektet forteller deg hva en handel koster. Deribit tar 0.0003 BTC per opsjonskontrakt, enten du er maker eller taker — 0.03% av det underliggende, ikke av premien — med et tak på 12.5% av opsjonsprisen. For denne kontrakten er det $28.92 per side, uten at gebyrtaket slår inn, fordi 12.5% av 0.0041 er 0.000513, og fastgebyret er lavere.

Når gebyret beregnes av nominell verdi og premien følger vol, skyter kostnaden i været som andel av det du betalte etter hvert som du går lenger ut av pengene.

$67.50notert spread (17% av markeringen)
$28.92gebyr per kontrakt, per side
31%tur-retur som andel av premien
3.5 poengkjøps-/salgsspread i vol

Kjøp på salgskursen 0.0045 ($434), selg på kjøpskursen 0.0038 ($366), og betal gebyret to ganger: $125.80 for en rundtur i en kontrakt markert til $395. Synet ditt må være verdt 31% av premien før du går i null. Det er hele grunnen til at idéen om lang gamma ble avvist, og det hadde ingenting med signalet å gjøre.

Det blir enda mer interessant hvis du spør hva det koster å få delta, siden gebyrene skalerer med antall kontrakter, og antall kontrakter skalerer omvendt med delta. For regnestykket holder vi mark-IV fast på 42.1% på tvers av strikes (en faktisk opsjonskjede har skjevhet, og i krypto handles call-vingen vanligvis over ATM, noe som gjør denne tabellen optimistisk):

InstrumentMarkering (BTC)DeltaKontrakter per 1 BTC deltaGebyr per sideKostnad per BTC delta
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 (med gebyrtak)$383
BTC perp—1.01.0$48.21$48.21

Gebyretaket på 12.5% har en reell effekt på den nederste raden; uten det ville den dype vingen kostet $2,300 per BTC delta, og lotteribillettstrategier ville vært matematisk umulige snarere enn bare dårlige. Selv med taket koster eksponering gjennom 120,000-striken omtrent åtte ganger så mye som via den evigvarende kontrakten. Opsjoner er ikke en billig måte å ta retningsbestemt eksponering på, og enhver backtest som sier noe annet, har utelatt denne tabellen.

08:00 UTC, 25. september

Det siste tickeren ikke forteller deg, er hvordan posisjonen gjøres opp. Deribit gjør opp opsjoner mot et 30-minutters gjennomsnitt av indeksen fram mot kl. 08:00 UTC på utløpsdagen, og krever et leveringsgebyr på 0.00015 BTC for kontrakter som ender in-the-money. Også dette er begrenset til 12.5% av oppgjørsverdien.

To følger for en backtest. For det første er dette gjennomsnittsvinduet reelt, og det er mulig å ta feil om det: En opsjon som er $300 in-the-money kl. 07:59, kan gjøres opp verdiløs hvis den siste halvtimen var stygg. En backtest som gjør opp mot kursen kl. 08:00, vil avvike fra papirkontoen din med noen få basispunkter ved de fleste utløp og mye mer ved enkelte. For det andre påløper leveringsgebyret enten du ønsket oppgjøret eller ikke. En strategi som holder til utløp, betaler tre gebyrer per syklus, mens en strategi som lukker kl. 07:30, betaler to gebyrer pluss en spread. Hva som er billigst, avhenger av striken, og det snur et sted rundt 0.0012 BTC i premie. Vi beregner dette for hver posisjon i stedet for å velge én fast regel.

Jeg hadde egentlig tenkt å skrive et innlegg om vol-prognoser. I stedet brukte jeg en uke på enheter og gebyrtak, omtrent det forholdet mellom glamour og virkelighet man bør forvente i opsjonsanalyse.

Tjue felt. To priser som med vilje ikke stemmer overens, én pris det aldri ble handlet til, grekere i fire enhetssystemer, og en kostnadsmodell som bare finnes utenfor datastrømmen, på en dokumentside. Hvis du setter opp en opsjonsbacktest, bør den første dagen gå med til å skrive én funksjon som gjør ett slikt objekt om til en posisjon med full kostnadsberegning og riktige enheter — spread, gebyr, tak, levering, coin mot dollar. Hver strategi du skriver etterpå, arver antakelsene i den funksjonen.

kryptoopsjonerderibitimplisitt volatilitetgebyrerbacktesting
← Alle innlegg