Backtests var uzrādīt izpildi par cenu, ko tirgus nekad nav parādījis. Parasti simulators no nepilnīgiem datiem izsecina šķietami ticamu izpildes cenu: sveces augstāko vai zemāko cenu, viduspunktu vai limita cenu, kurai pieskāries viens darījums. Tādēļ darījumu žurnāls var izskatīties precīzs, vienlaikus slēpjot to, ko tirgus patiesībā piedāvāja.
Sāciet ar jautājumu, ar kuru cenu jūsu orderis varēja mijiedarboties. Pēdējo darījumu svece parāda, par kādām cenām darījumi notika intervālā. Tā nepasaka, kāds bija pirkšanas un pārdošanas piedāvājums brīdī, kad pienāca jūsu orderis, cik liels apjoms tur bija pieejams vai vai jūsu orderis varēja nonākt rindas sākumā.
Kāpēc mans backtests uzrāda izpildi ārpus tirgus cenas?
Vispirms precīzi noskaidrojiet, ko nozīmē “ārpus”. Pirkšanas izpilde zem sveces zemākās cenas vai pārdošanas izpilde virs augstākās cenas ir acīmredzama uzskaites vai laika kļūda. Taču arī izpilde sveces augstākās un zemākās cenas diapazonā var būt izdomāta: darījums par šo cenu varēja notikt pirms ordera iesniegšanas, spreda otrā pusē vai tik mazā apjomā, ka ar to nepietiktu jūsu ordera izpildei.
Aplūkosim 1 minūtes sveci ar sākuma cenu 100.00, zemāko cenu 99.80 un slēgšanas cenu 100.10. Jūsu stratēģija redz pabeigto sveci, iesniedz pirkšanas orderi, un simulators to izpilda par 99.80. Šī zemākā cena varēja tikt sasniegta minūtes sākumā — 50 sekundes pirms signāla. Svece nesniedz pierādījumus, ka pēc lēmuma pieņemšanas bija iespējams nopirkt par 99.80.
| Jūsu rīcībā esošie dati | Ko tie apliecina | Ko tie nevar apliecināt |
|---|---|---|
| OHLCV svece | Novēroto darījumu cenu diapazonu un apjomu intervālā | Cenu secību, pirkšanas un pārdošanas piedāvājumu vai pieejamību ordera pienākšanas brīdī |
| Darījumu ieraksti | Ziņotās izpildes ar laika zīmogiem un cenām | Atpūtas likviditāti vai jūsu vietu rindā |
| Labākie kotējumi orderu grāmatā | Labāko redzamo pirkšanas un pārdošanas cenu paraugus noteiktos laikos | Dziļumu aiz labākā līmeņa vai to, vai kotējums saglabājās starp paraugiem |
| Orderu grāmatas notikumi | Redzamā dziļuma izmaiņas un rindas notikumus, ievērojot datu plūsmas pārklājumu | Slēpto likviditāti, piekļuvi tirdzniecības vietai vai garantētu prioritāti |
Vēl viens biežs iemesls ir viduspunkta sajaukšana ar izpildāmo cenu. Ja kotējums ir 99.99 pirkšanai un 100.01 pārdošanai, pirkums par 100.00 viduspunktā pārskatā izskatās glīti. Tirgus orderis pirkšanai parasti tiek izpildīts par pārdošanas cenu, pieskaitot ietekmi, ko rada tā apjoms. Viduspunkta uzrādīšana kā izpildes cena nemanāmi izslēdz pusi spreda.
Vai limita orderi var izpildīt tikai tāpēc, ka tirgus sasniedza tā cenu?
Cenas sasniegšana liecina, ka par limita cenu reģistrēts darījums. Tā nepierāda, ka jūsu neizpildītais orderis būtu ticis izpildīts. Ja rindā pirms jums atradās citi orderi, darījumu apjoms par šo cenu varēja būt pārāk mazs, lai sasniegtu jūsu vietu. Turklāt darījums varēja notikt citā tirdzniecības vietā, kamēr jūsu orderis gaidīja citur.
Pieņemsim, ka jūsu pirkšanas limita cena ir 50.00 un pēc ordera iesniegšanas tirgū par šo cenu tiek tirgotas 200 akcijas. Simulators, kas balstās uz cenas sasniegšanu, izpilda visas 500 akcijas. Piesardzīgāks modelis pārbauda, cik liels apjoms tika tirgots par 50.00 vai zemāku cenu pēc ordera pienākšanas, un pēc tam ņem vērā aplēsto apjomu rindā pirms jūsu ordera. Bez orderu līmeņa grāmatas datiem šis rindas apjoms ir pieņēmums. Rezultātos tam jābūt skaidri norādītam, nevis pasniegtam kā droši zināmam.
Nelielai pētniecības sistēmai es labāk šo pieņēmumu skaidri formulētu un pārbaudītu vairākus iespējamos scenārijus, nevis izliktos, ka sveču dati atklāj prioritāti rindā. Atbilstošais diapazons ir atkarīgs no tirdzniecības vietas, ordera apjoma un stratēģijas darījumu biežuma. Klusa akcija tirgus atvēršanas brīdī un nelikvīds kripto līgums plkst. 03:00 UTC rada atšķirīgas izpildes problēmas.
Kā izvēlēties izpildes modeli sveču datiem?
Pielāgojiet modeli gan datiem, gan stratēģijas apgalvojumam. Backtests, kas balstīts uz svecēm, joprojām var noderēt lēnām stratēģijām, taču tā izpildēm jāatbilst tam, ko sveces patiešām parāda.
- Nosakiet lēmuma un ordera pienākšanas laikus. Ja signālā izmanto sveces slēgšanas cenu, iesniedziet orderi pēc šīs sveces slēgšanās. Modelējiet izpildi no nākamā pieejamā intervāla vai kotējuma, nevis no jau pabeigtās sveces iepriekš sasniegtās zemākās cenas.
- Izmantojiet pareizo spreda pusi. Tirgus orderim pirkšanai izmantojiet pārdošanas cenu, bet pārdošanai — pirkšanas cenu. Ja pieejamas tikai darījumu sveces, aplēsiet spredu no atsevišķa avota vai ziņojiet, ka modelī tas nav iekļauts.
- Ierobežojiet izpildes apjomu ar ticamu likviditāti. Nosakiet līdzdalības limitu attiecībā pret novēroto apjomu un iekļaujiet komisijas un tirgus ietekmi. Sveces kopējais apjoms nenozīmē, ka tas viss bija pieejams par jūsu izvēlēto cenu.
- Pārbaudiet pieņēmumu noturību. Salīdziniet izpildi pie nākamās sveces atvēršanās ar konservatīvu slīdi un pārbaudiet, vai rezultāts saglabājas arī pie sliktākas izpildes. Nepielāgojiet izpildes modeli tā, lai stratēģija uzvarētu.
Tie ir modelēšanas lēmumi, nevis recepte, kā no nepilnīgiem datiem atgūt vienīgo patieso izpildes cenu. Ja stratēģija ir atkarīga no dažu bāzes punktu iegūšanas, sveču dati var nebūt pietiekams pamatojums šādam apgalvojumam.
Kā atrast, kur neiespējamā izpildes cena iekļuva backtestā?
Izsekojiet vienam aizdomīgam darījumam no signāla līdz virsgrāmatai. Atsevišķos laukos glabājiet lēmuma laika zīmogu, ordera iesniegšanas laika zīmogu, simulēto pienākšanas laiku, izvēlēto tirgus novērojumu, izpildes cenu, izpildes apjomu un komisiju. Pēc tam pārbaudiet šos punktus norādītajā secībā:
- Vai pazīme tika aprēķināta, izmantojot vēl nepabeigtas sveces datus lēmuma pieņemšanas brīdī?
- Vai izpildei tika izmantota sveces augstākā, zemākā vai slēgšanas cena, lai gan šī cena tika sasniegta pirms ordera pienākšanas?
- Vai pirkšanas orderis tika salāgots ar pirkšanas cenu vai pārdošanas orderis — ar pārdošanas cenu?
- Vai simulētais apjoms pārsniedza pieejamo kotējuma apjomu vai modeļa līdzdalības limitu?
- Vai cenas noapaļošana, līguma cenas solis un komisijas tika piemērotas pēc izpildes cenas izvēles?
Ja uz šiem jautājumiem nevarat atbildēt pēc darījuma ieraksta, backtestā trūkst izpildes pierādījumu. Pievienojiet nepieciešamos laukus, manuāli pārbaudiet vairākus darījumus, salīdzinot tos ar neapstrādātajiem datiem, un pārliecinieties, ka ziņotā izpilde varēja notikt atbilstoši iecerētajam modelim. Glīta kapitāla līkne neatklās cenu, kas pastāvēja tikai simulatorā.
← Visi raksti


