Marți dimineață, strategia noastră de trend pe futures pe țiței era pe poziție long în contractul aflat la scadență. Semnalul făcea exact ce îi ceruserăm: să mențină poziția cât timp trendul rămânea pozitiv. Backtestul arăta un câștig modest. Contul demo arăta o vânzare, o cumpărare în contractul următor, două comisioane și un preț de intrare mai slab decât sugera graficul.
Nu se întâmplase nimic misterios cu semnalul. Backtestul tratase „prețul futures” ca pe o singură valoare continuă. Contul a trebuit să închidă un contract și să deschidă altul, în două registre de ordine diferite, la două prețuri diferite.
Am descoperit discrepanța când am analizat o poziție care a traversat fereastra de rostogolire. Strategia folosea un contract lichid cu scadența cea mai apropiată și îl menținea până când o regulă calendaristică muta poziția în luna următoare. Regula era rezonabilă. Modul de contabilizare a tranzacției, nu.
Seria noastră continuă fusese ajustată retroactiv pentru a elimina diferența dintre contracte. Astfel, graficul era util pentru calcularea trendului. Însemna și că seria nu conținea niciun preț real la care am fi putut închide vechiul contract sau deschide unul nou. Backtestul folosise nivelul ajustat pentru a evalua tranzacția pe parcursul rostogolirii, apoi reluase tranzacționarea ca și cum poziția ar fi continuat pur și simplu.
Pentru generarea unui semnal, o serie continuă poate fi o măsurătoare utilă. Pentru execuție, este o ficțiune. O rostogolire înseamnă două tranzacții, iar spreadul dintre contracte face parte din structura pieței, nu este un salt cosmetic care trebuie netezit.
Am refăcut evenimentul folosind cele două contracte listate. Contractul cu scadența veche avea bidul la 79.98 și askul la 80.00. Contractul următor avea bidul la 80.42 și askul la 80.45. Poziția noastră long trebuia să vândă vechiul contract la bid, apoi să cumpere contractul nou la ask. Spreadul calendaristic era de 44 de cenți între aceste laturi executabile.
Valoarea aceasta nu însemna automat o pierdere de 44 de cenți. Contractele aveau luni de livrare diferite, iar spreadul reflecta costul reportării, depozitarea, finanțarea și așteptările privind oferta. O poziție menținută pe parcursul rostogolirii păstrează expunerea la evoluția prețului noului contract; nu plătește întregul spread cotat ca pe un comision. Însă strategia trebuie să realizeze ieșirea din vechiul contract și să stabilească intrarea în cel nou. Dacă îi calculează randamentul comparând aceste prețuri ca și cum ar aparține aceluiași instrument, poate inventa sau șterge P&L.
În reluarea simulării, am separat aceste funcții. Seria continuă genera în continuare semnalul de trend. Prețurile specifice fiecărui contract erau folosite pentru evaluarea pozițiilor și ordine. La rostogolire, simulatorul trimitea un ordin de închidere pentru contractul aflat la scadență și un ordin de deschidere pentru luna următoare, aplica comisioanele fiecărui contract și ținea cont de spreadul și adâncimea disponibilă în fiecare registru.
Prima reluare a simulării tot nu corespundea cu contul demo. Sincronizaserăm ambele execuții la aceeași marcă de timp, deși ordinele erau trimise secvențial. Ordinul de închidere a contractului vechi s-a executat, dar askul contractului următor s-a mișcat înainte ca ordinul de cumpărare să ajungă în registru. Rostogolirea poate fi executată ca spread calendaristic, dacă bursa permite acest lucru, sau în două segmente, cu expunere între ele. Acestea sunt ipoteze diferite privind execuția. Pentru comparație, am folosit secvența reală de ordine din contul demo.
Apoi am observat că nici regula calendaristică nu era definită suficient de precis. „Rostogolește cu 5 zile înainte de scadență” pare clar, până când o sărbătoare modifică calendarul de tranzacționare, lichiditatea se mută mai devreme sau convenția de scadență diferă de la un contract la altul. Într-un loc calculasem zile calendaristice, iar în altul zile lucrătoare. Strategia din contul demo făcea rostogolirea în a 5-a sesiune înainte de ultima zi de tranzacționare; backtestul o făcea cu 5 zile calendaristice înainte de aceasta.
Data rostogolirii este o regulă de tranzacționare. Specificați calendarul bursei și evenimentul care declanșează rostogolirea, altfel, mai devreme sau mai târziu, backtestul și contul vor ajunge să nu fie de acord asupra contractului pe care îl dețineți.
Am modificat instrucțiunea de rostogolire astfel încât să indice data ultimei tranzacționări a contractului, să numere sesiunile din calendarul bursei respective și să impună o verificare a lichidității minime înainte de mutare. Pragul era o măsură practică de precauție, nu o promisiune că vom obține o execuție mai bună: volumul și pozițiile deschise sunt indicatori imperfecți pentru ceea ce poate executa ordinul nostru. Am înregistrat contractul selectat și prețurile ambelor segmente, astfel încât fiecare reluare să poată explica transferul poziției.
După aceste modificări, randamentul istoric al strategiei a scăzut. Diferența nu venea dintr-o singură pierdere uriașă la rostogolire. Se acumula din multe corecții mici: contractul potrivit, sesiunea de tranzacționare potrivită, comisioane reale pentru ambele segmente și ieșiri și intrări evaluate în registrele lor de ordine. O rostogolire pe o piață cu lichiditate redusă a fost deosebit de costisitoare, așa că am păstrat-o la vedere în loc să o estompăm prin mediere.
Dacă backtestul vostru futures folosește un grafic continuu, întrebați-vă ce poate face acel grafic. Poate furniza un input consecvent pentru un semnal. Nu poate ține locul unui contract pe care l-ați fi putut cumpăra sau vinde. Pentru fiecare poziție care trece de scadență, documentația cercetării ar trebui să identifice vechiul contract, noul contract, declanșatorul rostogolirii, modelul de execuție și cele două fluxuri de numerar rezultate.
Tranzacția de marți nu a fost un eșec sofisticat. Era o linie cu aspect profitabil pe un grafic, care omitea momentul în care contul trebuia să schimbe ceea ce deținea. După ce am reintrodus acel moment în reluarea simulării, rezultatul a devenit mai puțin măgulitor și mult mai util.
← Toate articolele


