Pavojingiausia atgalinio testo laiko klaida gali likti nepastebėta net ir kruopščiai patikrinus laiko žymeklius. Du įvykiai gali būti pažymėti 10:00:00.000 ir vis tiek įvykti tokia tvarka, kokią jūsų simuliatorius tik numanė.
Tai svarbu, kai strategija reaguoja ne vien į užsidariusias žvakes: kotiruotės atnaujinimą, sandorį, finansavimo pranešimą, biržos būsenos pasikeitimą ar jos pačios pavedimo patvirtinimą. Laiko žymeklis nurodo, kada pažymėtas įvykis. Jis nebūtinai parodo, kada jūsų strategija galėjo į jį reaguoti.
Ką pakeičia įvykių tvarka?
Įsivaizduokite strategiją, kuri perka, kai geriausia pardavimo kaina nukrenta žemiau $100.00. Tą pačią milisekundę duomenų sraute užfiksuojamas pardavimo kainos atnaujinimas iki $99.99 ir sandoris už $99.99. Jei atgalinis testas pirmiausia apdoroja sandorį, o tada kotiruotę, strategija pamato naują pardavimo kainą ir pateikia pavedimą. Jei pirmiausia apdorojama kotiruotė, tai irgi gali būti tinkama, jei įvykis iš tiesų jau buvo pasiekiamas. Tačiau jei sandoris sunaudojo rodomą likvidumą dar prieš atkeliaujant pavedimui, įvykdymas už $99.99 yra išgalvotas.
Rūšiuojant įrašus vien pagal laiko žymeklį, simuliatoriui tenka pasirinkti vienodą laiką turinčių įvykių seką. Failo tvarka, simbolių tvarka ar duomenų bazės užklausos vykdymo planas gali netyčia tapti vykdymo taisykle. Nuosavo kapitalo kreivė gali pasikeisti, nors patys duomenys nepasikeitė.
Štai paprastas būdas pamatyti, kokia savavališka gali būti ši tvarka: vienodo laiko įvykius rūšiuokite pagal simbolio pavadinimą, o ne pagal gavimo seką. Tada kelių aktyvų strategija gali veikti skirtingai vien dėl to, kad vienas simbolis rikiuojamas prieš kitą.
Kokius laikus turėtų fiksuoti atgalinis testas?
Rinkos duomenų ir pavedimų tvarkymo procese dažnai svarbūs keli skirtingi laikai. Išsaugokite šaltinio pateikiamus laukus ir tiksliai įvardykite, ką jie reiškia. Daugelyje duomenų srautų naudingi ir biržos laiko žymeklis, ir vietinis gavimo laikas; nė vienas jų universaliai neparodo, ką matė visi rinkos dalyviai.
| Laikas | Ką fiksuoja | Ko pats savaime negali įrodyti |
|---|---|---|
| Biržos įvykio laikas | Kada, biržos teigimu, įvyko įvykis | Kada jį pastebėjo kitas duomenų srautas ar jūsų procesas |
| Gavimo laikas | Kada jūsų duomenų rinkiklis gavo pranešimą | Kada jūsų strategija baigė jį apdoroti |
| Sprendimo laikas | Kada jūsų kodas įvertino signalą | Ar kotiruojama kaina dar buvo prieinama |
| Pavedimo atvykimo laikas | Kada birža galėjo vykdyti pavedimą | Ar pavedimas įvykdytas, nebent tai patvirtina atitikimo taisyklės ir likvidumas |
Jei istoriniuose duomenyse nėra gavimo laiko, aiškiai įvardykite savo prielaidas. Atgalinis testas gali apdoroti biržos įvykius pagal seką ir taikyti fiksuotą 5 ms delsą nuo sprendimo iki pavedimo atvykimo. Tai modelis, o ne atkurta istorija. Jei vienodo laiko biržos įvykiams neturite sekos numerių, ir jūsų naudojama jų išrikiavimo taisyklė yra prielaida.
Kaip modeliuoti vienodo laiko įvykius?
Pirmiausia išsaugokite šaltinio sekos numerius, jei jie pateikiami. Sekos numeris leidžia tiksliau nustatyti įvykių tvarką konkrečiame duomenų sraute nei laiko žymeklis, nors skirtingi kanalai ar produktai gali turėti atskiras sekų numeravimo erdves.
Tada aiškiai apibrėžkite simuliatoriaus apdorojimo taisyklę. Kiekvienam įvykiui nuspręskite, ar jis gali atnaujinti strategijos informaciją, pakeisti prieinamą likvidumą, sukelti pavedimą arba patvirtinti pavedimą. Tai skirtingi veiksmai; sujungus juos į bendrą „apdoroti įrašą“, atsiranda neįmanomų įvykdymų.
- Naudokite tik tą rinkos informaciją, kuri strategiją pasiekė iki sprendimo priėmimo laiko.
- Sukurkite pavedimą, tada perkelkite jį į modeliuojamą atvykimo į biržą laiką.
- Leiskite vykdyti pavedimą tik jam atvykus ir tik pagal tinkamą likvidumą bei tam pavedimo tipui taikomas įvykdymo prielaidas.
- Registruokite kiekvieno simuliuojamo įvykdymo įvesties duomenis, įvykių tvarką ir taikytą delsą.
Žvakėmis pagrįstai strategijai tai gali būti sudėtingiau, nei reikia atsakant į klausimą. Jei signalas remiasi užsidariusiomis 1-minutės žvakėmis, o pavedimai vykdomi kitos žvakės atsidarymo kaina pagal konservatyvų išlaidų modelį, milisekundžių dalių įvykių tvarka tikriausiai nepakeis tyrimo išvadų. Svarbu, kad laiko detalumas atitiktų teiginį, kurį daro atgalinis testas.
Ar galiu pasitikėti atgaliniu testu, jei neturiu duomenų apie atvykimo laiką?
Tokį testą vis tiek galite naudoti, tačiau aiškiai nurodykite jo ribas. Jei strategija prekiauja retai ir taiko plačias rizikos ribas, kelios milisekundės gali neturėti reikšmės. Jei ji reaguoja į trumpalaikes kotiruotes, varžosi dėl vietos eilėje arba priklauso nuo skirtingų biržų pirmavimo ir vėlavimo signalo, trūkstami atvykimo laikai gali būti esminiai rezultatui.
Kritikai teisūs: pernelyg tikslus įvykių laiko modeliavimas gali sudaryti nepagrįsto tikslumo įspūdį. Istoriniai duomenų srautai yra neišsamūs, laikrodžiai dreifuoja, o biržų laiko žymekliai neatskleidžia kiekvieno tinklo perdavimo etapo. Simuliatorius gali turėti nanosekundžių tikslumo laukus ir vis tiek remtis grubia įvykdymo prielaida.
Todėl užuot tvirtinę, kad esate tikri, patikrinkite rezultatų jautrumą: atkartokite simuliaciją taikydami tikėtinas vienodo laiko įvykių išrikiavimo taisykles ir pavedimų delsas, tada palyginkite sandorių skaičių, įvykdymo kainą ir išliekančius signalus. Jei rezultatas priklauso nuo sekos, kurios duomenys neleidžia nustatyti, šią priklausomybę reikia įtraukti į tyrimo ataskaitą. Atgalinis testas gali būti naudingas ir su netobulu laikrodžiu. Tik reikia aiškiai pripažinti, kokį laiką jis iš tiesų žino.
← Visi įrašai


