Visbīstamākā laika kļūda atpakaļtestā var palikt nepamanīta pat pēc nevainojamas laika atzīmju pārbaudes. Diviem notikumiem var būt norādīts 10:00:00.000, lai gan tie notikuši secībā, ko simulators ir tikai izsecinājis.
Tas ir svarīgi ikreiz, kad stratēģija reaģē uz ko vairāk par pabeigtām svecēm: kotējuma atjauninājumu, darījumu, finansējuma paziņojumu, biržas statusa maiņu vai pašas stratēģijas ordera apstiprinājumu. Laika atzīme norāda, kad notikums ir atzīmēts. Tā var neatklāt, kad stratēģija varēja uz to reaģēt.
Kā notikumu secība ietekmē rezultātu?
Iedomāsimies stratēģiju, kas pērk, kad labākais pārdošanas piedāvājums nokrītas zem $100.00. Tajā pašā milisekundē datu plūsmā tiek reģistrēts piedāvājuma atjauninājums līdz $99.99 un darījums par $99.99. Ja atpakaļtests vispirms apstrādā darījumu un pēc tam kotējumu, stratēģija redz jauno piedāvājumu un iesniedz orderi. Arī kotējuma apstrāde pirmā var būt pareiza, ja vien šī informācija tiešām bija pieejama. Taču, ja darījums bija iztērējis redzamo likviditāti pirms ordera pienākšanas, izpilde par $99.99 ir izdomāta.
Kārtojot rindas tikai pēc laika atzīmes, simulators pats izvēlas secību notikumiem ar vienādu laiku. Faila secība, simbolu secība vai datubāzes vaicājuma plāns var nejauši kļūt par izpildes noteikumu. Kapitāla līkne var mainīties, lai gan paši dati nav mainījušies.
Te ir vienkāršs veids, kā redzēt, cik patvaļīgi tas var izvērsties: notikumus ar vienādu laiku kārtojiet pēc simbola nosaukuma, nevis pienākšanas secības. Tad vairāku aktīvu stratēģija var darboties citādi tikai tāpēc, ka viens svārstību simbols sarakstā atrodas pirms cita.
Kādas laika atzīmes atpakaļtestam jāsaglabā?
Tirgus datu plūsmā un orderu apstrādē bieži tiek izmantoti vairāki atšķirīgi laika punkti. Saglabājiet avota sniegtos laukus un precīzi nosauciet, ko tie nozīmē. Daudzām datu plūsmām noder gan biržas laika atzīme, gan lokālais saņemšanas laiks; neviens no tiem nav universāls pierādījums tam, ko redzēja katrs tirgus dalībnieks.
| Laika atzīme | Ko tā reģistrē | Ko tā pati par sevi nevar pierādīt |
|---|---|---|
| Biržas notikuma laiks | Kad birža norāda, ka notikums ir noticis | Secību, kādā to novēroja cita datu plūsma vai jūsu process |
| Saņemšanas laiks | Kad jūsu datu savācējs saņēma ziņojumu | Kad stratēģija pabeidza tā apstrādi |
| Lēmuma pieņemšanas laiks | Kad jūsu kods izvērtēja signālu | To, ka kotētā cena joprojām bija pieejama |
| Ordera pienākšanas laiks | Kad birža varēja rīkoties ar orderi | Izpildi, ja vien to nepamato atbilstības noteikumi un likviditāte |
Ja vēsturiskajiem datiem nav saņemšanas laika, skaidri norādiet savus pieņēmumus. Atpakaļtests var apstrādāt biržas notikumus pēc secības un noteikt fiksētu 5 ms aizkavi no lēmuma pieņemšanas līdz ordera pienākšanai biržā. Tas ir modelis, nevis atjaunota vēsture. Ja vienāda biržas laika notikumiem nav secības numuru, arī noteikums, pēc kura tos sakārtojat, ir pieņēmums.
Kā modelēt notikumus ar vienādu laiku?
Vispirms saglabājiet avota secības numurus, ja tie ir pieejami. Secības numurs nosaka notikumu secību vienā datu plūsmā drošāk nekā laika atzīme, lai gan dažādiem kanāliem vai produktiem var būt atsevišķas numerācijas.
Pēc tam skaidri definējiet simulatora apstrādes noteikumus. Katram notikumam izlemiet, vai tas var atjaunināt stratēģijas rīcībā esošo informāciju, mainīt pieejamo likviditāti, aktivizēt orderi vai apstiprināt orderi. Tās ir atšķirīgas darbības; apvienojot tās vienā darbībā “apstrādāt rindu”, rodas neiespējamas izpildes.
- Izmantojiet tikai to tirgus informāciju, kas līdz lēmuma pieņemšanas brīdim ir pienākusi stratēģijai.
- Ģenerējiet orderi un pēc tam virziet to uz modelēto pienākšanas laiku biržā.
- Atļaujiet izpildi tikai pret atbilstošu likviditāti pēc ordera pienākšanas, ievērojot šī ordera veida izpildes pieņēmumus.
- Reģistrējiet katras simulētās izpildes ievaddatus, notikumu secību un izmantoto aizkavi.
Stratēģijai, kas balstīta uz svecēm, tas var būt vairāk, nekā jautājums prasa. Ja signāls izmanto pabeigtas 1-minute sveces un orderi tiek izpildīti pie nākamās sveces atvēršanas ar piesardzīgu izmaksu modeli, notikumu secība milisekunžu līmenī, visticamāk, nemainīs izpētes secinājumu. Svarīgi ir saskaņot laika precizitāti ar apgalvojumu, ko izsaka atpakaļtests.
Vai varu uzticēties atpakaļtestam bez ordera pienākšanas laika datiem?
Jā, to joprojām var izmantot, taču skaidri norādiet tā ierobežojumus. Ja stratēģija tirgo lēni un tai ir plaši riska limiti, dažām milisekundēm var nebūt nozīmes. Ja tā reaģē uz īslaicīgiem kotējumiem, sacenšas par vietu rindā vai balstās uz vadošā un atpaliekošā tirgus signālu starp biržām, trūkstošie pienākšanas laiki var būt izšķiroši rezultātam.
Kritiķiem ir taisnība, ka precīza notikumu laika noteikšana var radīt maldīgu precizitāti. Vēsturiskās datu plūsmas ir nepilnīgas, pulksteņi novirzās, un biržas laika atzīmes neatklāj katru tīkla posmu. Simulators ar nanosekunžu laika laukiem tik un tā var izmantot aptuvenu izpildes pieņēmumu.
Tāpēc tā vietā, lai apgalvotu pilnīgu noteiktību, pārbaudiet jutīgumu: atkārtojiet simulāciju ar ticamiem notikumu secības noteikumiem un orderu aizkavēm, pēc tam salīdziniet darījumu skaitu, izpildes cenu un to, kuri signāli saglabājas. Ja rezultāts ir atkarīgs no secības, ko dati neļauj noteikt, šī atkarība jāiekļauj izpētes ziņojumā. Atpakaļtests var noderēt arī ar neprecīzu pulksteni. Tam tikai jāatzīst, ko tas patiesībā zina par laiku.
← Visi raksti


