Backtest pogosto šteje posle, kot da bi se signal neposredno spremenil v pozicijo. Pri papirnem trgovanju se vmes pojavi naročilo. To lahko čaka, se delno izvrši, prekliče, zavrne ali ostane aktivno tudi po spremembi signala. Če simulacija vaše strategije preskoči ta življenjski cikel, sta lahko število poslov in izpostavljenost le malo povezana s tem, kar beleži račun za papirno trgovanje.
Praktična rešitev je, da so naročila trajni objekti s stanji in časovnimi žigi. Signal je navodilo za poskus trgovanja; ni dokaz, da je do posla prišlo.
Zakaj ima moja strategija pri papirnem trgovanju manj poslov kot backtest?
Začnite pri naročilih, ki se nikoli niso izvršila. Backtest lahko predpostavi, da se je vsako limitno naročilo izvršilo, kadar se je trg dotaknil njegove cene. Na živem trgu dotik cene ne pove, ali je bilo vaše naročilo v čakalni vrsti pred drugimi, ali se je tam zamenjalo dovolj velikega obsega ali pa je bila kotirana cena še na voljo, ko je naročilo prispelo na borzo.
Predstavljajmo si strategijo, ki odda limitno nakupno naročilo pri $100 in ga prekliče po 30 sekundah. Trg zabeleži ceno $100.00, vendar se tam zamenja le majhen obseg, druga naročila pa imajo prednost. Vaše naročilo se lahko izvrši le delno ali pa sploh ne. Backtest, ki temelji na dotiku cene, zabeleži celotno pozicijo. Račun za papirno trgovanje, ki upošteva predpostavke o čakalni vrsti, morda ne zabeleži nobene izvršitve.
Pri tržnih naročilih pride do drugačnega neskladja. Backtest lahko celotno količino izvrši po otvoritveni ceni naslednje sveče, medtem ko papirno trgovanje zavrne količino, ki presega omejitev borze, ali pa jo izvrši po delih, ko se knjiga naročil spreminja. Sveča je povzetek poslov; ne zagotavlja, da bi se lahko celotno vaše naročilo izvršilo po eni ceni.
Kaj naj backtest naredi, če se signal spremeni, preden se naročilo izvrši?
Staro naročilo naj ostane aktivno, dokler ga simulator ne prejme in obdela preklica. Če se signal obrne, medtem ko čaka nakupno naročilo, bo strategija morda želela naročilo preklicati in oddati prodajno. Ta namera nakupnega naročila ne izbriše takoj. Lahko se izvrši med pošiljanjem preklica, zato bo račun ostal v dolgi poziciji ravno takrat, ko novi signal zahteva kratko pozicijo.
Modelirajte to kot zaporedje dogodkov: signal se spremeni, strategija pošlje zahtevo za preklic, borza jo potrdi ali sporoči izvršitev, šele nato strategija pozna končno stanje naročila. Tudi preprosta, fiksna zakasnitev lahko razkrije tekmovalne pogoje, ki jih backtest s takojšnjim preklicem prikrije.
Pri namenoma preprostem modelu je lahko enosekundna zakasnitev preklica in obdelava ob naslednjem dogodku bolj informativna kot predpostavka, da je preklic takojšen. Ustrezna zakasnitev je odvisna od borze in sistema; pomembno je, da zakasnitev sploh upoštevate. Če gre za tržno naročilo brez časovnega okna za preklic, sta delne izvršitve in pozna poročila še vedno pomembna.
Katera stanja naročil naj beleži simulator papirnega trgovanja?
Uporabite preprost avtomat stanj in zabeležite čas vsakega prehoda. Poimenovanja se med borzami razlikujejo, osnovne razlike pa so vedno enake:
- Novo ali čakajoče: oddano, vendar še nepotrjeno.
- Odprto: sprejeto in še vedno primerno za izvršitev.
- Delno izvršeno: del količine se je zamenjal; preostanek je lahko še vedno odprt.
- Izvršeno: preostale količine ni.
- Preklic v teku: zahteva za preklic je v obdelavi; naročilo se lahko še vedno izvrši.
- Preklicano, zavrnjeno ali poteklo: v okviru tega naročila se ne more zamenjati nobena dodatna količina.
Izvršeno količino beležite ločeno od zahtevane, skupaj s cenami izvršitev in provizijami. Delno izvršeno naročilo je hkrati posel in še vedno veljavna obveznost za preostanek. Če ga obravnavate samo kot odprtega ali samo kot zaključenega, izgubite podatke, ki jih strategija potrebuje za določitev velikosti naslednjega dejanja.
| Dogodek naročila | Kaj mora vedeti strategija | Pogosta poenostavitev v backtestu |
|---|---|---|
| Delna izvršitev | Izvršena količina, preostala količina, povprečna cena | Celotno naročilo označi kot izvršeno po eni ceni |
| Zahteva za preklic | Čas zahteve in končna potrditev preklica ali izvršitve | Naročilo takoj odstrani |
| Zavrnitev | Razlog in ali je ponovni poskus ustrezen | Predpostavi, da je bil zahtevani posel izveden |
| Potek veljavnosti | Čas, ko naročilo ni bilo več primerno za izvršitev | Pusti ga odprtega do poznejšega dotika cene |
Kako lahko pošteno primerjam posle iz backtesta s papirnim trgovanjem?
Najprej primerjajte dogodke naročil, nato pozicije in nazadnje P&L. Če je backtest izvršil naročilo, ki ga račun za papirno trgovanje ni, je poznejša razlika v P&L posledica tega dogodka, ne pa izhodišče za iskanje napake.
Pri vsakem predvidenem naročilu povežite oba zagona z enoličnim identifikatorjem odločitve strategije ali naročila. Nato preverite čas oddaje, zahtevano ceno in količino, veljavnost naročila, izvršitve, preklice, zavrnitve, provizije in končno pozicijo. Zabeležite tudi razlog, zakaj v simulaciji ni prišlo do izvršitve: cena ni dosegla limita, predpostavljena čakalna vrsta pred naročilom ni bila izpraznjena ali pa je naročilo poteklo.
Kratek primer pojasni zaporedje. Signal zahteva 10 enot. Oba sistema oddata naročilo ob 10:00:00. Backtest predpostavi, da se je v celoti izvršilo ob 10:00:01. Pri papirnem trgovanju se 4 enote izvršijo ob 10:00:01, ob 10:00:02 prispe zahteva za preklic, nato pa sistem pred potrditvijo preklica ob 10:00:03 sporoči še izvršitev 2 enot. Poštena primerjava je 6 izvršenih enot proti 10, pri čemer so bile 4 preklicane. Če vse združimo v en sam »posel«, skrijemo izpostavljenost, ki jo je strategija dejansko imela.
Ali za pravilno obravnavo potrebujem celoten simulator borze?
Ne. Backtest lahko začnete z nekaj izrecnimi predpostavkami: ali zadostuje že dotik limitne cene, kolikšen obseg se mora zamenjati po tej ceni, da se izprazni predpostavljena čakalna vrsta pred naročilom, kako dolgo naročila ostanejo odprta in kako delujejo zakasnitve preklica. Strategijo preizkusite pri več kot eni verjetni nastavitvi. Če je uspešnost odvisna od tega, da se vsako čakajoče limitno naročilo v celoti izvrši, ste o modelu izvedeli nekaj koristnega.
Tudi papirno trgovanje ni zanesljiva resnica o kakovosti izvrševanja. Lahko uporablja simulirane izvršitve in ne upošteva prave čakalne vrste. Njegova vrednost je tu ožja: pokaže, ali se strategija in njen upravitelj naročil strinjata glede čakajoče količine, preklica, pozicije in ponovnih poskusov, ko dogodki prihajajo skozi čas.
Ena majhna radost tega dela: dober dnevnik naročil lahko na videz nerazložljivo razhajanje spremeni v nekaj povsem običajnega. »Drugo podrejeno naročilo se je izvršilo po zahtevi za preklic« je boljši opis kot »papirno trgovanje se obnaša čudno«. Ko se backtest in račun za papirno trgovanje ne ujemata, najprej sledite življenjskemu ciklu naročila in šele nato spreminjajte signal.
← Vse objave


