Predikční trhy vypadají jako nejjednodušší věc na světě, kterou lze backtestovat. Cena je v rozmezí [0, 1]. Výplata je dolar, nebo nic. Žádná páka, žádné financování, žádná báze, žádné podivnosti s perpetual swapy v 00:00 UTC. Už jsme měli backtester, který zvládal krypto perpetual futures včetně poplatků, financování a cenového dopadu, a plán byl věnovat dva dny jeho úpravě a pak začít generovat strategie.
Trvalo to osm dní. Tady je záznam, zhruba v pořadí, v jakém se to stalo, včetně dne, kdy křivka kapitálu vypadala neuvěřitelně — a také taková byla.
Den 1: adaptér, který měl být banalita
Původní mapování bylo jedna ku jedné a působilo čistě. Trh je instrument. Cena YES je cena. Nákup YES znamená long, nákup NO short. Vypořádání je vynucené uzavření za 1.00 nebo 0.00. Stačí do stejné smyčky událostí přivést hodinovou cenovou řadu a hotovo.
Tohle mapování vydrželo kontakt s reálnými daty asi devadesát minut. Jako první přestala fungovat řada výnosů. Celá naše vrstva řízení rizika — určování velikosti pozic, cílení volatility, vykazování Sharpe — předpokládala logaritmické výnosy pokračujícího instrumentu. Trh, jehož cena klesne z 0.04 na 0.00, má nedefinovaný logaritmický výnos a definovanou úplnou ztrátu. A trh s cenou 0.04 tři dny před vypořádáním je úplně jiný objekt než trh s cenou 0.04 čtyři minuty před ním, přestože v obou řádcích stojí 0.04.
Nakonec jsme celou řadu přeparametrizovali podle času do vypořádání místo času na hodinách a PnL jsme začali chápat jako konečné, nikoli průběžně přeceňované. Bylo to správné rozhodnutí a zneplatnilo každý navazující kus vykazovacího kódu.
Den 2: vzorec pro poplatky je sama strategie
Na Kalshi se obchodní poplatek nepočítá jako srážka v bazických bodech. Je kvadratický vzhledem k ceně: přibližně 0.07 × contracts × P × (1−P), zaokrouhlený nahoru na cent na úrovni objednávky. To znamená, že poplatek je nejvyšší právě tam, kde je trh s téměř stejnou šancí nejzajímavější, a na krajních hodnotách je skoro zanedbatelný.
| Cena | Poplatek za kontrakt | Potřebná výhoda (procentní body pravděpodobnosti) | Poplatek jako % vkladu |
|---|---|---|---|
| 5¢ | 0.33¢ | 0.33 | 6.7% |
| 10¢ | 0.63¢ | 0.63 | 6.3% |
| 25¢ | 1.31¢ | 1.31 | 5.3% |
| 50¢ | 1.75¢ | 1.75 | 3.5% |
| 75¢ | 1.31¢ | 1.31 | 1.8% |
| 90¢ | 0.63¢ | 0.63 | 0.7% |
| 95¢ | 0.33¢ | 0.33 | 0.35% |
Třetí sloupec je to podstatné: abyste při nákupu za 50¢ a držení do vypořádání dosáhli bodu zvratu, váš odhad pravděpodobnosti musí převyšovat odhad trhu o 1.75 bodu. Ne o 1.75 procenta relativně. O 1.75 absolutního bodu. Když pozici uzavřete před vypořádáním místo držení do konce, zaplatíte poplatek dvakrát, plus spread.
CLOB na Polymarket měl historicky úplně jiný profil poplatků, které se blížily nule; většina nákladů se tak přesouvá do spreadu a hloubky trhu. Stejná logika strategie má proto na různých platformách úplně jinou ekonomiku a každé srovnání napříč platformami, které používá jediný model poplatků, je fikce. Teď pro každou platformu používáme vlastní funkci poplatků, ne jednu konstantu.
Pokud si z reportu backtestu predikčního trhu přečtete jediný řádek, ať je to řádek s poplatkem vyjádřeným v procentních bodech pravděpodobnosti. Strategie s údajnou předpovědní výhodou 1.2 bodu na trzích za 50¢ prodělává na Kalshi ještě před započtením jakýchkoli dalších nákladů. Tato skutečnost má být vidět na první stránce, ne až po výpočtu čtenáře.
Den 3: kniha je schodovitá a mělká
Náš model cenového dopadu byl odmocninová funkce kalibrovaná na knihách objednávek BTC perpetual futures. Tady má nesprávný tvar. Při kroku 1¢ u instrumentu za $1 je v celé knize jen 99 možných cenových úrovní a na středně likvidním trhu může na nejlepší úrovni čekat pár stovek kontraktů, za nimiž následuje mezera.
Tady je snímek trhu s ekonomickými daty, který jsme sledovali, strana YES, asi 30 hodin před vypořádáním:
| Úroveň | Objem (kontrakty) | Kumulativní náklady na nákup |
|---|---|---|
| 42¢ | 310 | 310 při průměrné ceně 42.0¢ |
| 43¢ | 85 | 395 při průměrné ceně 42.2¢ |
| 45¢ | 140 | 535 při průměrné ceně 42.9¢ |
| 49¢ | 600 | 1,135 při průměrné ceně 46.1¢ |
Objednávka na 1,000 kontraktů — riziko pět set dolarů, v kryptu zaokrouhlovací chyba — posune efektivní cenu o čtyři centy. Čtyři centy jsou víc než dvojnásobek poplatku. Tady není žádná hladká funkce, kterou bychom mohli proložit; musíte procházet knihu úroveň po úrovni, jinak si čísla vymýšlíte. Pro tuto třídu aktiv jsme odmocninový model smazali a napsali doslovný simulátor průchodu knihou. Je pomalejší a správný.
Někdy jsem se přistihl, že mě štve, jak jsou tyto trhy „příliš malé na to, aby na nich záleželo“. Jsou malé proto, že oceňovanou věcí je jediná otázka z reálného světa s termínem a jen omezený počet lidí má názor na počáteční žádosti o podporu v nezaměstnanosti v USA, zveřejněné ve středu. Velikost je trh. Stěžovat si na to je jako si stěžovat, že pokerový stůl má jen devět míst.
Den 4: den, kdy byla křivka kapitálu nádherná
Sharpe 4.1 na 1,400 trzích. Hladká křivka. Každému výzkumníkovi by se při tom měl sevřít žaludek. Mně se sevřel, ale až nakonec, zhruba čtyřicet minut poté, co jsem si ji už stihl vyfotit.
Chyba byla v převzorkování. Historie cen na nelikvidních trzích přichází s nepravidelnými časovými značkami, a tak jsme data převedli na pravidelnou hodinovou mřížku. Poslední bod každé archivované řady je vypořádací hodnota, 1.00 nebo 0.00. Při převzorkování jsme použili doplnění nejbližší hodnotou bez omezení směru, takže u každého trhu, na kterém se naposledy obchodovalo několik hodin před vypořádáním, se vypořádací hodnota šířila dozadu přes mezeru. Model si pro dnešní řádek načítal zítřejší odpověď právě u nelikvidních trhů, na kterých mohl navýšit pozici, aniž narazil na limity hloubky.
Doplnění nejbližší hodnotou je v pořádku u spojitého instrumentu. U instrumentu, jehož poslední pozorování je skutečný výsledek, z něj dělá stroj na nahlížení do budoucnosti. Teď ověřujeme, že každé doplnění probíhá pouze směrem vpřed a že řádek s vypořádáním je označený a vyloučený ze všech výpočtů příznaků. Tato kontrola má devět řádků a je to nejcennější kód, který jsme za celý týden napsali.
Den 5–6: 1,412 trhů, zhruba 180 sázek
Velikost vzorku na predikčních trzích je past s přívětivou tváří. Vypořádáte 1,412 trhů, máte pocit, že máte 1,412 pozorování, a podle toho spočítáte t-statistiku. Jenže čtrnáct zápasů NFL v tutéž neděli ovlivňuje stejný meteorologický systém, zveřejnění zpráv o zraněních i společné toky sázek. Padesát jedna volebních trhů na úrovni jednotlivých států sdílí stejný celostátní posun. „Stane se X do 31. března“ a „stane se X do 30. června“ jsou stejná sázka s různou expirací a vypořádají se současně.
Trhy jsme seskupili podle zdroje podkladové události a data vypořádání a vyšla nám efektivní nezávislá velikost vzorku někde kolem 180. To nestačí k rozlišení skutečné výhody od šumu při velikostech efektu, které jsme sledovali. A žádné bootstrapování po jednotlivých trzích to nespraví, protože bootstrap musí převzorkovávat skupiny, ne řádky. Když to uděláte špatně, statistická významnost se nenápadně nafoukne na dvojnásobek nebo trojnásobek.
Den 7: i vypořádání má rozdělení pravděpodobnosti
Věci, které jsme vůbec nemodelovali a na které jsme přišli tvrdou cestou:
- Předčasné vypořádání. Trh s otázkou „do 31. prosince“ se může vypořádat už 4. srpna, když k události skutečně dojde. Kapitál se vám vrátí dřív a doba držení nikdy nebyla taková, jak naznačoval název kontraktu.
- Spory. Trhy vypořádávané orákulem mají lhůtu pro námitky. Pozice může zůstat v limbu několik dní po události a v malém počtu případů se výsledek změní oproti tomu, co se zdálo zřejmé.
- Zneplatnění. Nejednoznačná zdrojová data vedou ke zrušení trhu a vrácení vkladů všem. V našem vzorku se to týká méně než 1% trhů, ale soustřeďuje se to právě kolem nejednoznačných otázek, které model označí za chybně oceněné.
- Vázaný kapitál. Výhoda 3 bodů realizovaná během 90 dnů a výhoda 3 bodů realizovaná během 6 hodin nejsou srovnatelné. Backtest, který uvádí celkovou výhodu bez jmenovatele zohledňujícího dobu vázání kapitálu, bude vždy upřednostňovat pomalejší variantu.
Do simulátoru jsme přidali složku nákladů na držení a náhodný posun data vypořádání. Ani jedno není přesné. Obojí je lepší než skrytý předpoklad, že k vypořádání s jistotou dojde přesně v uvedený den.
Den 8: co bychom přeskočili a čím bychom začali
- Celou konstrukci založenou na výnosech bychom přeskočili. Nepřizpůsobujte vrstvu řízení rizika s cílováním volatility instrumentu s konečnou výplatou. Napište vrstvu pro určování velikosti sázek, která pracuje s pravděpodobností a vkladem. Dva dny jsme ztratili snahou přizpůsobit starou vrstvu.
- Nejdřív vytvořte funkci poplatků, pak strategii. Vykreslete křivku výhody potřebné k dosažení bodu zvratu pro každou platformu, na které chcete obchodovat, a pověste ji nad pracovní stůl. Vyřadí asi polovinu nápadů dřív, než vás budou stát jeden běh backtestu.
- Knihou procházejte od prvního dne. Každý parametrický model cenového dopadu převzatý ze spojitého trhu bude chybný takovým způsobem, který vám nadržuje.
- Nejdřív seskupujte, teprve pak počítejte. Klíč pro seskupování při výpočtu efektivní velikosti vzorku určete současně s výběrem univerza, ne až poté, co získáte Sharpe, se kterým jste spokojení.
- Ověřujte směr doplňování. Jeden řádek kontroly na každé spojení. Pokud řada končí skutečným výsledkem, považujte zpětné doplňování za chybu už ze své podstaty, místo abyste čekali, až si jí někdo všimne při kontrole.
Těch osm dní stálo za to, hlavně proto, že predikční trhy odstraňují nejednoznačnost, díky které se v kryptu tak snadno obelháváme backtesty. Není tu sazba financování, kterou bychom mohli přejít mávnutím ruky, ani konvence pro mark price, o které bychom se mohli přít. Jen otázka, termín a odpověď. Když je tady backtest chybný, dokážete přesně ukázat, v čem.
← Všechny články

