O strategie trimite un ordin limită la 10:00. Semnalul se schimbă la 10:03. Backtestul înlocuiește discret ordinul la 10:04, apoi înregistrează o execuție la 10:05. În tranzacționarea pe hârtie, ordinul inițial poate fi încă activ la bursă. Dacă se execută în timp ce ordinul înlocuitor este și el activ, strategia are 2 ordine și un model de poziție care pretinde că a existat doar unul.
Ordinele deschise au nevoie de propria stare și de propriul ceas. Un backtest ar trebui să știe când a fost trimis fiecare ordin, când poate fi anulat, dacă anularea a ajuns la bursă și ce se întâmplă dacă execuția se produce simultan cu anularea. 3 scurtături șterg frecvent aceste detalii.
Greșeala 1: Tratarea unui semnal nou ca pe o anulare instantanee
Multe backtesturi recalculează poziția țintă la fiecare bară, apoi suprascriu ordinul activ cu ceea ce cere cel mai recent semnal. Astfel, ordinul dispare exact în momentul în care strategia se răzgândește. Bursele reale nu funcționează așa. O cerere de anulare durează, iar ordinul se poate executa înainte ca bursa să o proceseze.
Să luăm un ordin limită de cumpărare pentru 100 de acțiuni la $50.00. La 10:03, semnalul slăbește, așa că strategia trimite o cerere de anulare. La 10:03:00.080, ordinul se execută pentru 60 de acțiuni; anularea este confirmată la 10:03:00.110. Cele 40 de acțiuni rămase sunt anulate, dar poziția include acum 60 de acțiuni. Un backtest bazat pe bare care șterge ordinul la 10:03 poate raporta zero. Unul care presupune anularea imediată, dar înregistrează totuși o execuție ulterioară, a inventat o expunere în direcția opusă.
Urmăriți explicit ciclul de viață al ordinului: trimis, confirmat, executat parțial, anulare în curs, anulat sau executat integral. Păstrați execuțiile care au loc înainte de confirmarea anulării. Pentru o simulare cu bare agregate, alegeți și comunicați o regulă conservatoare de ordonare atunci când ambele evenimente pot avea loc în aceeași bară.
Greșeala 2: Acordarea unei durate de viață infinite unui ordin activ
Un ordin limită stabilit pe baza unui semnal de la 10:00 poate deveni învechit chiar dacă semnalul nu are o regulă explicită de ieșire. Cartea de ordine se schimbă, volatilitatea se modifică, iar valoarea instrumentului pe piață poate fluctua. Totuși, un simulator care lasă ordinul activ până la execuție îl poate executa după luni de zile și poate atribui execuția unei teze care nu mai există.
Stabiliți o politică privind durata de valabilitate a ordinului, potrivită strategiei. Un semnal de 1 minut poate folosi o expirare de 30 de secunde; o rebalansare zilnică poate menține ordinul activ până la închidere. Acestea sunt alegeri de strategie, nu valori implicite universale. Dacă strategia reevaluează prețul la fiecare bară, modelați secvența de anulare și înlocuire, în loc să mutați în mod miraculos ordinul la noul preț.
| Politica ordinului | Utilizare tipică | Întrebare pentru backtest |
|---|---|---|
| Imediat sau anulează | Execută folosind lichiditatea disponibilă, apoi se oprește | Ce parte s-ar fi putut executa la trimiterea ordinului? |
| Expirare scurtă | Semnal rapid, cu o fereastră scurtă de execuție | Mai era ordinul valabil când prețul a revenit? |
| Până la sfârșitul sesiunii | Rebalansare lentă sau intenție de executare la licitația de închidere | Bursa permite într-adevăr o astfel de durată de valabilitate? |
Greșeala 3: Considerarea fiecărei atingeri de preț drept execuție
Dacă minimul unei lumânări atinge prețul unui ordin limită de cumpărare, asta nu înseamnă neapărat că ordinul s-a executat. Este posibil să fi existat ordine în coadă înaintea lui, să se fi tranzacționat un volum mic la acel preț sau să fi avut loc o tranzacție scurtă înainte ca ordinul să ajungă pe piață. Un model învechit al ordinelor combină adesea toate cele 3 erori: menține ordinul activ prea mult, presupune că era primul la rând, apoi îi atribuie o execuție integrală la simpla atingere a prețului.
Cel puțin, împiedicați execuțiile înainte de momentul în care ordinul ajunge pe piață și limitați cantitatea simulată la un volum tranzacționat plauzibil la prețul-limită. Pentru strategiile în care poziția în coadă contează, folosiți date despre tranzacții și cartea de ordine sau un model de coadă deliberat conservator. O execuție bazată doar pe atingerea prețului poate fi utilă pentru o evaluare preliminară, dar etichetați-o drept aproximație optimistă și comparați-o cu o ipoteză mai severă.
O verificare practică: înregistrați pentru fiecare ordin momentul creării, intervalul de activitate, cererea și confirmarea anulării, momentul execuției, cantitatea executată și cantitatea rămasă. Apoi reluați câteva tranzacții din jurul inversărilor de semnal. Dacă nu puteți explica de ce fiecare ordin era încă activ când s-a executat, mai este de lucru la numărul execuțiilor din backtest.
Modelați ordinul pe care intenționați să-l testați în tranzacționarea pe hârtie
Starea ordinului leagă intenția strategiei de expunerea sa reală. Poziția ar trebui să se schimbe la execuții, nu la țintele semnalului sau la cererile de anulare. Înlocuirile ar trebui să lase o pistă de audit, iar execuțiile parțiale ar trebui păstrate pentru următoarea decizie. Backtestul devine mai anevoios, dar comparația cu tranzacționarea pe hârtie capătă sens: cele două sisteme pot avea rezultate diferite la execuție din motive identificabile.
Când modelul ordinelor este incert, păstrați această incertitudine în rezultate. Simulați ordine cu durate scurte și lungi, variați întârzierea anulării și arătați cât de mult depinde performanța de ipoteze optimiste privind coada. Strategia poate fi în regulă. Însă avantajul aparent poate fi și dobânda obținută de un ordin pe care sistemul real l-ar fi anulat cu câteva ore în urmă.
← Toate articolele


