Un instantaneu înghețat al datelor de piață nu este suficient pentru ca un test retrospectiv să fie de încredere. Poate reproduce același rezultat și, în același timp, ascunde faptul că furnizorul a modificat datele de intrare care l-au generat.
Păstrează instantaneul. Apoi păstrează un jurnal al modificărilor care să-ți arate ce s-a schimbat, când s-a schimbat și dacă strategia a fost afectată. Este cu atât mai important când cercetarea noastră folosește tranzacții corectate, date fundamentale revizuite, date de finanțare reconstruite sau istoricul actualizat în tăcere de un furnizor.
Cum poate un test retrospectiv reproductibil să te inducă totuși în eroare?
Să presupunem că descarci luni cinci ani de bare orare și rulezi o strategie. Vineri, furnizorul a reparat o tranzacție eronată, a ajustat o acțiune corporativă sau a completat o lacună. Fișierul salvat de tine produce în continuare exact rezultatul de luni. Este reproductibil. Dar dacă rulezi din nou testul folosind istoricul curent al furnizorului, rezultatul poate fi diferit, iar tu nu ai nicio evidență a motivului.
Problema nu se limitează la corecții majore. O singură maximă modificată poate declanșa un ordin stop; o închidere revizuită poate face un indicator să treacă pragul. Într-un univers larg de instrumente, modificarea istoricului unui simbol îi poate schimba rangul și poate scoate din portofoliu un alt activ. Valoarea finală a Sharpe poate varia chiar dacă strategia și configurația sunt identice.
Un hash al fișierului îți spune că două fișiere diferă. Nu îți spune dacă o ajustare pentru o divizare a modificat prețurile pe 40 de ani, dacă un furnizor a corectat trei tranzacții sau dacă un parser a transformat un câmp gol în zero.
Ce ar trebui să conțină un jurnal al modificărilor datelor de piață?
Înregistrează modificările la cea mai mică unitate utilă și include suficient context pentru a putea relua cercetarea afectată. Pentru un flux de bare, de regulă înseamnă instrumentul, intervalul, momentul evenimentului, valorile anterioare și noi, sursa și momentul în care ai observat actualizarea. Păstrează payloadul original atunci când furnizorul îl pune la dispoziție.
| Ce se înregistrează | De ce păstrăm această informație | Exemplu |
|---|---|---|
| Versiunea sursei sau momentul preluării | Identifică starea furnizorului folosită | Instantaneu preluat la 2026-11-02 08:15 UTC |
| Câmpul modificat și valorile veche/nouă | Arată ce s-a schimbat efectiv | ETHUSDT 1h maximă: 3,412.10 → 3,418.60 |
| Clasificarea modificării | Separă corecțiile de transformări | Corecție întârziată a unei tranzacții, ajustare pentru divizare, completare retroactivă |
| Versiunea fluxului de procesare și a schemei | Diferențiază editările sursei de propriile noastre procesări | Normalizator v7, schemă pentru bare ajustate v3 |
Pentru seturi mari de date, stochează instantanee imuabile și un manifest compact cu sumele de control, versiunile sursei și momentele preluării. Adaugă diferențe la nivel de rând pentru partițiile modificate. Astfel obții o soluție practică de mijloc: poți relua integral procesarea fără să scrii fiecare rând nemodificat într-un al doilea tabel de audit.
Cum măsor dacă o corecție contează?
Nu te opri după ce numeri rândurile modificate. Rulează din nou strategia afectată cu datele vechi și cele noi, folosind același cod, aceiași parametri, aceleași comisioane și aceleași ipoteze de execuție. Compară deciziile și evoluția până la rezultat.
- Identifică instrumentele și momentele evenimentelor afectate pe baza diferențelor.
- Află ce caracteristici, semnale, ordine sau ponderi ale portofoliului folosesc acele înregistrări.
- Rulează din nou cea mai mică fereastră validă, incluzând orice perioadă de calcul și starea pozițiilor deschise.
- Compară ordinele, execuțiile, expunerea, rulajul, scăderea maximă și performanța finală.
De exemplu, o corecție a furnizorului care modifică maximul unei bare de 1 minut cu $0.02 poate afecta un milion de rânduri fără să schimbe nimic într-o strategie de momentum zilnic. O singură bară corectată la nivelul unui stop poate conta mai mult. Măsoară impactul asupra deciziilor; numărul înregistrărilor modificate este un indicator indirect slab.
Păstrează distincte două întrebări: „Pot reproduce rezultatul folosind datele pe care le-am salvat?” și „Ar fi fost disponibilă strategiei această versiune a datelor la momentul respectiv?” Un jurnal al modificărilor ajută la răspunsul ambelor întrebări, dar pentru a doua sunt necesare și evidențe ale disponibilității la momentul respectiv.
Cât costă și când merită?
Urmărirea modificărilor adaugă costuri de stocare, muncă la ingestie și decizii operaționale. Este posibil ca furnizorii să nu ofere versiuni stabile, iar unele fluxuri istorice sunt reconstruite periodic fără o notificare clară a corecțiilor. Nu poți înregistra o modificare pe care nu o observi.
Începe cu cazurile în care revizuirile pot schimba concluziile cercetării: barele folosite de logica ordinelor stop, acțiuni ajustate pentru evenimente corporative, date fundamentale disponibile la momentul respectiv și serii de finanțare sau interes deschis care sunt reconstruite. Pentru seturi de date ample și stabile, poate fi suficient un manifest zilnic împreună cu sumele de control ale partițiilor. Adaugă diferențe la nivel de câmp acolo unde actualizările sunt frecvente sau deciziile de tranzacționare depind de înregistrări individuale.
Criticii au dreptate: o arhivă completă și permanentă a fiecărui răspuns primit de la furnizori poate deveni costisitoare și tot nu poate surprinde ce știa sursa la momentul respectiv. Soluția este să limitezi auditul la datele și deciziile care contează și să documentezi lacunele. Un instantaneu îți permite să rulezi din nou un experiment. Un jurnal al modificărilor îți permite să explici de ce s-a schimbat rezultatul experimentului.
← Toate articolele


