Cel mai onest model de slippage este adesea greșit în mod deliberat. Un backtest care raportează un singur cost de execuție precis pe baza unor date istorice grosiere face o afirmație pe care datele nu o pot susține.
Pare un argument pentru ipoteze rudimentare. Este exact invers: folosește un model simplu, pe care îl poți explica, apoi fă-l să se contrazică singur. Dacă o strategie funcționează doar cu o estimare convenabilă și favorabilă a execuției, incertitudinea face parte din rezultat.
De ce poate induce în eroare o estimare precisă a slippage-ului?
Să presupunem că ai bare OHLCV de 1 minut și trimiți un ordin market pentru 2,000 de acțiuni. Bara îți arată intervalul de preț și volumul total pe parcursul unui minut. Nu îți spune care erau bid-ul și ask-ul când a ajuns ordinul, ce ordine erau înaintea ta în coadă, cum s-a distribuit volumul în acel minut sau cât din el ar fi consumat ordinul tău.
Poți totuși să atribui o valoare slippage-ului. Ai putea simula execuția la deschiderea barei următoare plus un cost fix în puncte de bază sau ai putea scala costul în funcție de raportul dintre dimensiunea ordinului și volumul barei. Sunt aproximări utile, dar nu sunt observații. Dacă raportezi rezultatul drept „slippage: 3.2 puncte de bază”, o alegere de model pare o măsurătoare.
Să luăm un exemplu concret: o strategie tranzacționează 20,000 $ per ordin pe o acțiune cu volum de 400,000 $ în bara următoare. Rata de participare este 5%. Un model care percepe 2 puncte de bază costă 4 $ per ordin; unul care percepe 10 puncte de bază costă 20 $. În 500 de tranzacții dus-întors, diferența ajunge la 16,000 $, înainte de comisioane. Dacă profitul brut al strategiei în backtest este de 18,000 $, ipoteza de execuție influențează rezultatul aproape la fel de mult ca semnalul.
Construiește un interval care reflectă ce pot surprinde datele tale
Începe cu o variantă de bază potrivită tipului de ordin al strategiei și rezoluției datelor. Un ordin market presupune spread și impact. Un ordin limită necesită o regulă care să stabilească dacă este executat; presupunerea că orice preț atins duce la execuție este o altă eroare de modelare a execuției.
Apoi rulează același backtest în câteva scenarii explicite. Păstrează fixe semnalul, dimensionarea și marcajele temporale, ca să poți atribui schimbările execuției:
| Scenariu | Ipoteza de execuție | Ce testează |
|---|---|---|
| Favorabil | Spread de bază și impact redus | Cât de mult depinde strategia de condiții de tranzacționare favorabile? |
| De bază | Spread tipic și impact scalat în funcție de participare | Ce implică ipoteza de lucru aleasă? |
| Advers | Spread mai mare, impact mai puternic și execuție întârziată | Rezistă avantajul într-o piață dificilă, dar plauzibilă? |
Acestea nu sunt intervale de încredere decât dacă le-ai calibrat statistic. Sunt teste pe scenarii. Explică în raport ce înseamnă și nu le combina într-un „slippage așteptat” inventat fără dovezi care să susțină probabilitățile.
Fă modelul să țină cont de ordin
Un cost fix în puncte de bază poate fi un punct de plecare rezonabil pentru ordine mici. Pe măsură ce crește participarea, modelul devine greu de justificat. Înregistrează cel puțin valoarea noțională a ordinului, volumul disponibil în bară și rata de participare. Dacă strategia tranzacționează futures, înregistrează valoarea contractului și unitățile relevante de volum; dacă tranzacționează crypto spot, precizează moneda de cotare și platforma.
O curbă simplă a impactului poate scoate la iveală presiunea asupra capacității fără să pretindă că reproduce un registru de ordine. De exemplu, definește costul ca suma dintre un cost de bază al spread-ului și o componentă de impact care crește odată cu rădăcina pătrată a ratei de participare. Ajustează parametrii doar dacă ai date adecvate despre execuții. În caz contrar, variază parametrii și arată cât de repede se deteriorează rezultatul.
Și nu lăsa modelul de execuție să salveze strategia pe ascuns. Un semnal long care apare după o creștere bruscă nu ar trebui executat la minimul barei doar fiindcă acesta apare în lumânare. Folosește o convenție de execuție cauzală, apoi testează prețul în condiții mai dificile și introdu o întârziere. Dacă ordinul întârziat ratează mișcarea, acesta este un rezultat al execuției, nu un inconvenient de netezit.
Întrebare utilă: la ce nivel al spread-ului, impactului, întârzierii sau ratei de participare ajunge performanța netă la zero? Pragul de rentabilitate este adesea mai util decât un singur Sharpe calculat din backtest.
Folosește paper trading pentru a restrânge intervalul
Paper trading nu îți va dezvălui execuția pe care ai fi primit-o într-un motor real de potrivire a ordinelor. Totuși, îți poate spune dacă fluxul de ordine din backtest seamănă cu deciziile reale ale sistemului: când generează ordine, ce dimensiune au și cât timp rămân executabile.
Compară prețul simulat al ordinului cu cotațiile din acel moment sau cu datele de piață înregistrate de sistemul tău de paper trading. Urmărește diferența în funcție de instrument, momentul zilei, dimensiunea și tipul ordinului. Observațiile pot restrânge ipotezele pentru configurația respectivă. Ele nu se transferă automat la altă platformă, alt regim de piață sau ordine mai mari.
Criticii au dreptate că scenariile pesimiste pot fi arbitrare. Un model deliberat dur poate respinge o strategie viabilă, la fel cum unul favorabil poate prezenta o strategie slabă într-o lumină prea bună. Așadar, nu declara scenariul cel mai dur drept adevăr. Publică ipotezele, arată sensibilitatea și colectează datele necesare pentru a înlocui presupunerile cu estimări calibrate.
Un backtest nu poate afla poziția istorică în coadă doar dintr-o lumânare. Poate arăta dacă ideea rămâne coerentă atunci când execuția se înrăutățește în moduri pe care datele tale nu le pot exclude. Acesta este un răspuns mai util decât o zecimală în plus.
← Toate articolele


