Agosto 31, 2026 · prediction markets

Ano ang pumapalya kapag nagba-backtest ng prediction markets: talaarawan sa loob ng walong araw

Ano ang pumapalya kapag nagba-backtest ng prediction markets: talaarawan sa loob ng walong araw

Mukhang pinakamadaling bagay sa mundo ang pag-backtest ng prediction markets. Nasa [0, 1] ang presyo. Isang dolyar o wala ang bayad. Walang leverage, walang funding, walang basis, walang kalokohan ng perpetual swap sa 00:00 UTC. May backtester na kami na humahawak na sa crypto perps, kasama ang mga bayarin, funding at impact, kaya ang plano ay maglaan ng 2 araw sa pag-aangkop nito at saka magsimulang gumawa ng mga strategy.

Umabot ito ng 8 araw. Narito ang tala, halos ayon sa pagkakasunod-sunod, pati ang araw na kahanga-hanga ang equity curve — at talagang kahanga-hanga nga.

Araw 1: ang adapter na dapat sana'y napakasimple

Diretso at malinis sa pakiramdam ang paunang pagtutumbas. Isang instrumento ang isang market. Ang presyo ng YES ang presyo. Long ang pagbili ng YES, short ang pagbili ng NO. Sapilitang pagsasara sa 1.00 o 0.00 ang settlement. Ipasok ang hourly price series sa parehong event loop, tapos na.

Mga siyamnapung minuto lang tumagal ang pagtutumbas na iyon matapos makaharap ng totoong data. Ang unang bumigay ay ang returns series. Ipinagpalagay ng buong risk layer namin — position sizing, vol targeting, at pag-uulat ng Sharpe — na log returns ito ng instrumentong nagpapatuloy. Walang takdang halaga ang log return ng market na bumababa mula 0.04 tungong 0.00, pero tiyak ang lubos na pagkalugi. At lubos na naiiba ang market na nasa 0.04 tatlong araw bago ang settlement kumpara sa nasa 0.04 apat na minuto bago ito, kahit pareho ang nakasulat sa dalawang row: 0.04.

Sa huli, iniba namin ang parameterisasyon ng buong series batay sa oras hanggang settlement, sa halip na oras sa orasan, at itinuring na pangwakas ang PnL sa halip na minamarkahan sa kasalukuyang presyo. Tamang desisyon iyon, pero pinawalang-bisa nito ang lahat ng reporting code na kasunod nito.

Araw 2: ang formula ng bayarin ang mismong strategy

Sa Kalshi, hindi kaltas na batay sa basis point ang trading fee. Quadratic ito kaugnay ng presyo: humigit-kumulang 0.07 × contracts × P × (1−P), at niro-round up sa pinakamalapit na sentimo sa antas ng order. Ibig sabihin, pinakamalaki ang bayarin kung kailan pinakainteresante ang coin-flip market, at halos libre naman sa magkabilang dulo.

PresyoBayad bawat kontrataKailangang edge (puntos ng probabilidad)Bayad bilang % ng puhunan
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%

Ang ikatlong column ang dapat pagtuunan: para mag-break even sa pagbili sa 50¢ at paghawak hanggang settlement, kailangang lumamang nang 1.75 puntos ang tantiya mo sa probabilidad kumpara sa market. Hindi ito 1.75 porsiyento na kaugnay sa halaga. Ganap na 1.75 puntos. Kung lalabas ka bago ang settlement sa halip na maghintay, dalawang beses mo itong babayaran, dagdag pa ang spread.

3.5%bayaring one-way sa 50¢, bilang bahagi ng puhunan
1.75ppedge sa probabilidad para mag-break even doon
1settlement bawat instrumento, kailanman

Sa kasaysayan, ibang-iba ang profile ng bayarin ng CLOB ng Polymarket; mas malapit sa zero ang bayad sa mismong trade, kaya napupunta ang buong gastos sa spread at lalim ng order book. Kaya lubos na magkaiba ang ekonomiya ng parehong lohika ng strategy depende sa venue, at kathang-isip ang anumang paghahambing ng mga venue na iisang fee model ang gamit. Gumagamit na kami ngayon ng callable na bayarin para sa bawat venue, hindi ng iisang scalar.

Kung isang linya lang ang babasahin mo sa ulat ng backtest ng prediction market, piliin mo ang linya ng bayarin na nasa puntos ng probabilidad. Nalulugi sa Kalshi ang strategy na nagsasabing may 1.2-puntos na forecasting edge sa mga market na 50¢ pa lang, bago pa isama ang kahit anong ibang gastos. Dapat makita ito sa unang pahina, hindi na kailangang kalkulahin pa ng mambabasa.

Araw 3: hagdan-hagdan ang order book, at maikli

Square-root function ang impact model namin, naka-calibrate sa mga order book ng BTC perp. Mali ang hugis nito para rito. Sa 1¢ na tick sa instrumentong nagkakahalaga ng $1, 99 lang ang posibleng antas ng presyo sa buong order book, at maaaring may ilang daang kontratang nakapuwesto sa pinakamataas na antas sa isang market na may katamtamang liquidity, kasunod ang isang puwang.

Narito ang snapshot mula sa market ng datos pang-ekonomiya na sini-sample namin, panig ng YES, mga 30 oras bago ang settlement:

AntasDami (kontrata)Pinagsama-samang gastos sa pagbili
42¢310310 @ 42.0¢ na average
43¢85395 @ 42.2¢ na average
45¢140535 @ 42.9¢ na average
49¢6001,135 @ 46.1¢ na average

Binabago ng order na 1,000 kontrata — limang daang dolyar na panganib, baryang halaga lang sa crypto — ang epektibong presyo nang apat na sentimo. Mahigit doble iyon ng bayarin. Walang maayos na function na puwedeng ipagkasya rito; kailangang tahakin ang bawat antas ng order book o nag-iimbento ka lang. Inalis namin ang sqrt model para sa klase ng asset na ito at sumulat ng literal na book-walker. Mas mabagal ito, pero tama.

May sandaling nahuli ko ang sarili kong naiinis dahil "masyadong maliit para mahalaga" ang mga market na ito. Maliit ang mga ito dahil isang totoong tanong na may takdang panahon ang pinahahalagahan, at iilan lang ang may opinyon tungkol sa unang bilang ng mga nag-aaplay ng benepisyo sa kawalan ng trabaho sa US tuwing Miyerkules. Ang laki ang siyang market. Para kang nagrereklamong siyam lang ang upuan sa isang mesa ng poker.

Araw 4: ang araw na napakaganda ng equity curve

Sharpe na 4.1 sa 1,400 market. Makinis. Dapat mangamba ang bawat mananaliksik kapag nakakita nito; ako, nangamba rin, pero mga apatnapung minuto matapos ko na itong kuhanan ng screenshot.

Nasa resampler ang bug. Bumabalik ang kasaysayan ng presyo ng mga market na kulang sa liquidity sa hindi regular na mga timestamp, kaya ini-reindex namin ito sa pantay-pantay na hourly grid. Settlement value na 1.00 o 0.00 ang huling punto ng bawat naka-archive na series. Gumamit ang reindex namin ng nearest-neighbour fill nang walang limitasyon sa direksiyon, kaya sa anumang market na ilang oras bago ang settlement nagkaroon ng huling trade, kumalat ang settlement value pabalik sa buong puwang. Binabasa ng modelo ang sagot bukas sa row ngayon, eksakto sa mga market na kulang sa liquidity kung saan maaari itong maglagay ng malaking posisyon nang hindi sumasabit sa limitasyon ng lalim ng order book.

Ayos ang nearest-neighbour fill sa tuloy-tuloy na instrumento. Pero kung ang huling obserbasyon ng instrumento ang mismong katotohanan, nagiging makinang sumisilip sa hinaharap ang paraang ito. Tinitiyak na namin ngayon na pasulong lang ang bawat fill, at may tag ang settlement row para hindi maisama sa pagkalkula ng mga feature. Siyam na linya lang ang assert na iyon, at iyon ang pinakamahalagang code na naisulat namin sa buong linggo.

Araw 5–6: 1,412 market, humigit-kumulang 180 pustahan

Bitag ang laki ng sample sa prediction markets na kaaya-ayang tingnan sa unang malas. Nalulutas mo ang 1,412 market, pakiramdam mo ay mayroon kang 1,412 obserbasyon, at kinukuwenta mo ang t-stat nang naaayon. Pero iisa ang lagay ng panahon, paglalabas ng ulat sa mga pinsala, at daloy ng pustahan para sa 14 na laro ng NFL sa parehong Linggo. Iisa rin ang pambansang pagbabago sa pulso ng botante para sa 51 market ng halalan sa antas ng estado. Iisang pustahan ang “Mangyayari ba ang X bago ang Marso 31” at “Mangyayari ba ang X bago ang Hunyo 30,” magkaiba lang ang expiry at sabay silang nalulutas.

Pinangkat namin ang mga market batay sa pinagmumulan ng pinagbabatayang pangyayari at petsa ng settlement, at nakakuha kami ng epektibong bilang na nasa 180 ang magkakahiwalay na sample. Hindi iyon sapat para maihiwalay ang totoong edge sa ingay sa mga laki ng epekto na sinusuri namin. Hindi rin ito naaayos ng paulit-ulit na bootstrapping sa bawat market, dahil mga cluster, hindi mga row, ang kailangang i-resample ng bootstrap. Kapag nagkamali ka rito, palihim na nadodoble o nagiging tatlong ulit ang tantiya mo sa kabuluhan ng resulta.

Araw 7: distribusyon ng probabilidad din ang settlement

Ito ang mga bagay na hindi namin namodelo, at natuklasan sa mahirap na paraan:

Nagdagdag kami ng holding-cost term at pagbabago-bago sa petsa ng settlement sa simulator. Hindi eksakto ang alinman sa mga ito, pero mas mabuti kapwa kaysa sa palagay na tiyak na magaganap ang settlement sa mismong nakasaad na petsa.

Araw 8: ano ang lalaktawan namin, at ano ang uunahin

  1. Laktawan na ang buong balangkas na nakabatay sa returns. Huwag iangkop ang risk layer na nagta-target ng volatility sa instrumentong may pangwakas na payout. Sumulat ng layer para sa laki ng pustahan na gumagamit ng probabilidad at halaga ng puhunan. Dalawang araw ang nawala sa pagsisikap naming iakma ang luma.
  2. Unahin ang fee function bago ang strategy. I-print ang kurba ng break-even edge para sa bawat venue na balak mong pagte-trade-an at idikit ito sa itaas ng mesa. Napapatay nito ang halos kalahati ng mga ideya bago ka pa gumugol ng oras sa pagpapatakbo ng backtest.
  3. Tahakin ang order book sa unang araw pa lang. Magiging mali sa paraang pumapabor sa iyo ang anumang parametric impact model na hiniram sa tuloy-tuloy na market.
  4. Mag-cluster bago magbilang. Pagpasiyahan ang clustering key para sa epektibong laki ng sample kasabay ng pagpili mo ng universe, hindi pagkatapos makakuha ng Sharpe na gusto mo.
  5. Maglagay ng assert sa direksiyon ng fill. Isang linya para sa bawat join. Kung nagtatapos sa mismong katotohanan ang isang series, ituring na bug ang backward fill mula pa lang sa disenyo para hindi mo na ito kailangang mapansin sa review.

Sulit ang walong araw, pangunahin dahil inaalis ng prediction markets ang kalabuan na nagpapadali sa panlilinlang sa sarili gamit ang crypto backtest. Walang funding rate na puwedeng ipagwalang-bahala, walang kombensiyon sa mark price na pag-aawayan. Isang tanong, isang takdang panahon, at isang sagot lang. Kapag mali ang backtest dito, maituturo mo kung saan ito nagkamali.

prediction marketsbacktestingbayarinmarket microstructuredata engineering
← Lahat ng post