23. avgust 2026 · raziskave

Vaš backtest ima težave z uro, tudi ko so vsi časovni žigi pravilni

Vaš backtest ima težave z uro, tudi ko so vsi časovni žigi pravilni

Najnevarnejša časovna napaka v backtestu lahko preživi še tako natančen pregled časovnih žigov. Dva dogodka lahko oba navajata 10:00:00.000, pa se vseeno zgodita v vrstnem redu, ki si ga je izmislil vaš simulator.

To je pomembno vedno, ko se strategija odziva na kaj več kot zaključene sveče: posodobitev ponudbe, posel, obvestilo o financiranju, spremembo statusa borze ali potrditev lastnega naročila. Časovni žig pove, kdaj je dogodek označen. Morda pa ne pove, kdaj se je vaša strategija lahko odzvala nanj.

Kaj spremeni vrstni red dogodkov?

Predstavljajte si strategijo, ki kupi, ko najboljša prodajna cena pade pod $100.00. V isti milisekundi podatkovni tok zabeleži posodobitev prodajne cene na $99.99 in posel po $99.99. Če vaš backtest najprej obdela posel in nato ponudbo, strategija vidi novo prodajno ceno in odda naročilo. Tudi če najprej obdela ponudbo, je to lahko v redu, če je bil dogodek dejansko že na voljo. Če pa je posel porabil prikazano likvidnost, preden je naročilo prispelo, je izvršitev po $99.99 izmišljena.

Če vrstice razvrstite samo po časovnem žigu, simulator sam izbere zaporedje dogodkov z enakim časom. Vrstni red v datoteki, vrstni red simbolov ali načrt poizvedbe v podatkovni bazi lahko po naključju postanejo pravilo za izvrševanje. Krivulja kapitala se lahko spremeni, čeprav se osnovni podatki niso.

Kako poljubna je lahko ta izbira, dobro pokaže naslednji primer: dogodke z enakim časom razvrstite po imenu simbola namesto po vrstnem redu prihoda. Večsredstvena strategija se lahko zato vede drugače zgolj zato, ker je en ticker razvrščen pred drugim.

Katere ure naj backtest spremlja?

Tržni podatki in obravnava naročil pogosto vključujejo več različnih časovnih oznak. Ohranite polja, ki jih zagotavlja vaš vir, in natančno poimenujte njihov pomen. Pri številnih podatkovnih tokovih sta uporabna tako časovni žig borze kot lokalni čas prejema; nobeden pa ni univerzalna resnica o tem, kaj so videli vsi udeleženci.

UraKaj beležiČesa sama ne more dokazati
Čas borznega dogodkaKdaj borza pravi, da se je dogodek zgodilV kakšnem vrstnem redu ga je zaznal drug podatkovni tok ali vaš proces
Čas prejemaKdaj je vaš zbiralnik prejel sporočiloKdaj je strategija končala njegovo obdelavo
Čas odločitveKdaj je vaša koda ovrednotila signalDa je bila navedena cena še na voljo
Čas prispetja naročilaKdaj je borza lahko ukrepala na podlagi naročilaIzvršitev, razen če jo podpirajo pravila ujemanja in likvidnost

Pri zgodovinskih podatkih brez časov prejema navedite svoje predpostavke. Backtest lahko borzne dogodke obdela po vrsti in uvede fiksni zamik 5 ms med odločitvijo in prihodom naročila na borzo. To je model, ne rekonstruirana zgodovina. Če za borzne dogodke z enakim časovnim žigom nimate zaporednih številk, je tudi vaše pravilo za razreševanje izenačenja predpostavka.

Kako naj modeliram dogodke z enakim časom?

Najprej ohranite zaporedne številke iz vira, kjer so na voljo. Zaporedna številka znotraj svojega podatkovnega toka določa vrstni red zanesljiveje kot časovni žig, čeprav imajo lahko različni kanali ali produkti ločena zaporedja številk.

Nato izrecno določite pravilo obdelave v simulatorju. Pri vsakem dogodku se odločite, ali lahko posodobi informacije, ki so na voljo strategiji, spremeni razpoložljivo likvidnost, sproži naročilo ali potrdi naročilo. To so različna dejanja; če jih združite v »obdelaj vrstico«, se lahko prikradejo nemogoče izvršitve.

  1. Uporabite samo tržne informacije, ki so prispele do časa odločitve strategije.
  2. Ustvarite naročilo in ga nato pomaknite do modeliranega časa prispetja na borzo.
  3. Izvršitev dovolite samo na podlagi upravičene likvidnosti po prispetju, skladno s predpostavkami o izvršitvi za zadevno vrsto naročila.
  4. Za vsako simulirano izvršitev zabeležite uporabljene vhodne podatke, vrstni red dogodkov in zamik.

Pri strategiji na podlagi sveč je to lahko več zapletenosti, kot jo vprašanje zahteva. Če signal uporablja zaključene 1-minutne sveče in se naročila izvršijo ob odprtju naslednje sveče po konzervativnem modelu stroškov, vrstni red dogodkov na ravni milisekund verjetno ne bo spremenil raziskovalnega sklepa. Pomembno je, da časovna podrobnost ustreza trditvi, ki jo podaja backtest.

Ali lahko zaupam backtestu brez podatkov o času prispetja?

Še vedno ga lahko uporabite, vendar jasno označite omejitve. Če strategija trguje počasi in ima široke omejitve tveganja, je lahko nekaj milisekund nepomembnih. Če se odziva na bežne ponudbe, tekmuje za položaj v čakalni vrsti ali je odvisna od signala vodilnega in zaostajajočega trga med borzami, lahko manjkajoči časi prispetja bistveno vplivajo na rezultat.

Kritiki imajo prav, da lahko natančno časovno določanje dogodkov ustvari lažen vtis natančnosti. Zgodovinski podatkovni tokovi so nepopolni, ure se razhajajo, časovni žigi borz pa ne razkrivajo vsakega omrežnega koraka. Simulator lahko uporablja nanosekundna polja, a vseeno temelji na grobi predpostavki o izvršitvah.

Zato namesto trditve o gotovosti preverite občutljivost: ponovite simulacijo z verjetnimi pravili za razreševanje dogodkov z enakim časom in z različnimi zamiki naročil, nato primerjajte število poslov, izvršilne cene in signale, ki ostanejo veljavni. Če je rezultat odvisen od vrstnega reda, ki ga podatki ne morejo potrditi, to odvisnost navedite v raziskovalnem poročilu. Backtest je lahko uporaben tudi z nepopolno uro. Le jasno mora povedati, kateri čas dejansko pozna.

z dogodki vodeno povratno testiranjemodeliranje izvrševanjatržni podatkiraziskave strategij
← Vse objave