31. srpna 2026 · predikční trhy

Co se pokazí při backtestování predikčních trhů: osm dní v deníku

Co se pokazí při backtestování predikčních trhů: osm dní v deníku

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ý.

CenaPoplatek za kontraktPotřebná výhoda (procentní body pravděpodobnosti)Poplatek jako % vkladu
5¢0.33¢0.336.7%
10¢0.63¢0.636.3%
25¢1.31¢1.315.3%
50¢1.75¢1.753.5%
75¢1.31¢1.311.8%
90¢0.63¢0.630.7%
95¢0.33¢0.330.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.

3.5%jednosměrný poplatek při ceně 50¢, jako podíl vkladu
1.75pppravděpodobnostní výhoda nutná k dosažení bodu zvratu
1vypořádání na instrument za celou dobu jeho existence

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¢310310 při průměrné ceně 42.0¢
43¢85395 při průměrné ceně 42.2¢
45¢140535 při průměrné ceně 42.9¢
49¢6001,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:

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

  1. 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.
  2. 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.
  3. 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.
  4. 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í.
  5. 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.

predikční trhybacktestovánípoplatkymikrostruktura trhudatové inženýrství
← Všechny články