Un rând de date de piață poate fi perfect corect și totuși să nu poată servi drept dovadă într-un backtest. Tranzacția a avut loc, prețul este corect, iar marca temporală este validă; însă fluxul poate să fi livrat datele cu întârziere, un furnizor le poate fi corectat ulterior sau piața cotată poate să nu fi fost una la care strategia ta avea acces.
Ca să știi dacă datele istorice puteau fi tranzacționate, auditează mai mult decât marca temporală a evenimentului. Trebuie să știi ce descrie rândul, când a devenit disponibil sistemului, ce piață sau instrument reprezintă și dacă oferta sau tranzacția putea susține în mod plauzibil ordinul tău.
Este suficient ca prețul istoric să fie corect pentru un backtest?
Nu. Corectitudinea răspunde la întrebarea „Ce preț a înregistrat în cele din urmă sursa?”. Un backtest trebuie să răspundă și la întrebările „Ce putea ști strategia mea în momentul deciziei?” și „Ce putea executa?”. Sunt întrebări distincte.
Imaginează-ți că o tranzacție cripto este înregistrată la 12:00:00.120, dar fluxul furnizorului de date ajunge la procesul tău la 12:00:00.480. O strategie care ia o decizie la .200 nu poate folosi acea tranzacție, deși marca temporală a evenimentului o precedă. Dacă fișierul istoric păstrează doar ora evenimentului, backtestul poate acorda pe nesimțite strategiei informații pe care procesul ei live nu le-ar fi primit încă.
| Moment sau câmp | Ce îți spune | Eșecul backtestului dacă lipsește |
|---|---|---|
| Ora evenimentului | Când spune bursa că a avut loc evenimentul | Confundarea orei pieței cu disponibilitatea pentru strategie |
| Ora recepției | Când a primit colectorul tău mesajul | Folosirea datelor întârziate ca și cum ar fi ajuns instantaneu |
| Secvența sau ID-ul actualizării | Poziția evenimentului în ordinea fluxului | Aplicarea actualizărilor în ordine greșită sau omiterea lor fără să observi |
| Ora revizuirii | Când a devenit cunoscută o valoare istorică rectificată | Backtesting cu o valoare care nu exista în fluxul original |
Dacă arhiva ta nu conține orele recepției, recunoaște această lacună. Poți testa o ipoteză privind latența sau poți limita concluzia la cercetarea bazată pe ora evenimentului. Nu poți reconstitui setul exact de informații folosind mărci temporale care nu au fost niciodată salvate.
Cum îmi dau seama dacă o cotație putea fi executată?
Începe cu piața la care ar fi ajuns ordinul tău. Cea mai bună ofertă agregată de cumpărare și de vânzare poate sintetiza mai multe piețe; asta nu dovedește că acel cont avea acces la cantitatea afișată, că oferta era încă valabilă când a ajuns ordinul tău sau că piața ți-ar fi acceptat tipul de ordin.
Pentru un ordin la piață, o executare la prețul median este de obicei o ficțiune. O estimare mai utilă parcurge registrul vizibil în raport cu mărimea ordinului, apoi adaugă comisioanele și o ipoteză privind latența sau impactul. Dacă ai doar date de nivel superior în registru, limitează concluzia: poți estima primul nivel, dar nu poți deduce adâncimea care nu a fost niciodată înregistrată.
Pentru un ordin limită, atingerea prețului nu înseamnă că ordinul a fost executat. Ordinele aflate înaintea celui al tău pot consuma mai întâi cantitatea disponibilă. De regulă, poziția în coadă nu poate fi cunoscută din instantanee obișnuite, așa că o regulă de executare bazată pe atingerea prețului trebuie privită ca un scenariu optimist, nu ca o relatare a ceea ce s-a întâmplat.
O bară de 1 minut îți poate spune că minimul a coborât sub prețul-limită. Nu îți spune dacă ordinul tău pasiv a ajuns la piață înainte de acel minim, ce volum s-a tranzacționat acolo sau câtă coadă era înaintea ta.
Ce ar trebui să verific înainte să am încredere într-o arhivă de date de piață?
Încep cu proprietățile obișnuite. Acestea scot la iveală mai multe probleme de cercetare decât un model sofisticat de execuție adăugat peste un flux defect.
- Acoperire: Lipsesc intervale, există evenimente duplicate sau întreruperi în secvență ori apar creșteri inexplicabile ale volumului zero?
- Identitatea pieței: Simbolul corespunde în timp aceleiași burse, aceluiași contract, aceleiași monede de cotare și acelorași specificații ale instrumentului?
- Disponibilitate: Sunt păstrate atât orele evenimentelor, cât și cele ale recepției? Dacă nu, ce ipoteză privind întârzierea limitează rezultatul?
- Corecții: Poți distinge mesajul original de completările sau revizuirile ulterioare ale furnizorului?
- Unități: Sunt interpretate consecvent prețurile, cantitățile, multiplicatorii contractelor și mărcile temporale?
Ultima verificare pare aproape prea elementară. Odată am petrecut o dimineață investigând o aparentă schimbare de regim al volatilității, care s-a dovedit a fi o schimbare a unităților unui câmp de cantitate după migrarea unui flux. Graficul arăta excelent; unitatea era greșită.
Cum pot testa dacă disponibilitatea datelor schimbă rezultatul?
Rulează un test mic de sensibilitate în jurul pragului la care strategia ia decizia. Întârzie datele utilizabile cu valori realiste, elimină actualizările cu secvențe întrerupte și compară executările folosind registrul pieței efective acolo unde îl ai. Raportează atât rezultatul inițial, cât și pe cel degradat. Dacă o întârziere neînsemnată șterge efectul, este posibil ca strategia să depindă de un avantaj informațional pe care configurația ta de colectare nu îl poate furniza în mod fiabil.
Iată un exemplu concret: să presupunem că un semnal se declanșează când cea mai bună ofertă de cumpărare crește cu un tick. Reia simularea o dată folosind ora evenimentului indicată de bursă și încă o dată folosind ora recepției de către colector. Dacă versiunea bazată pe ora evenimentului generează 40 de tranzacții, iar cea bazată pe ora recepției generează 27, diferența face parte din dovezile privind strategia. La fel și performanța din fiecare simulare. Nu ascunde simularea mai slabă doar fiindcă datele ei par mai puțin elegante.
Tranzacționarea pe hârtie este un pas util de verificare, deoarece scoate la iveală întârzierile fluxului, cotațiile învechite, mapările greșite ale simbolurilor și filtrele pieței, pe același traseu operațional folosit de sistemul tău de cercetare. Tot nu va reproduce fiecare poziție în coadă sau fiecare impact asupra pieței în tranzacționarea live. Păstrează vizibilă această limită.
Ce înseamnă în practică „date tranzacționabile”?
Înseamnă că backtestul poate explica momentul în care a avut loc o observație, când a putut fi folosită de strategie, din ce piață provenea și ce dovezi despre execuție susțin executarea presupusă. O serie curată de prețuri este un punct de plecare. Cercetarea devine credibilă când ipotezele privind momentul, accesul și executarea rezistă verificării — și când rezultatul rămâne plauzibil după ce le faci mai puțin favorabile.
← Toate articolele


