20 septembrie 2026 · execuție

Contul tău paper a respins execuția din backtest: o scrisoare despre filtrele bursei

Contul tău paper a respins execuția din backtest: o scrisoare despre filtrele bursei

Ai o strategie mică de tranzacționare a contractelor futures crypto, care tranzacționează mai multe contracte, și tocmai ai trecut-o din backtest în tranzacționare paper. Prima reechilibrare solicită 0.037 BTC. Simulatorul o acceptă; platforma o respinge, deoarece pasul cantității pentru contract este 0.001, iar ordinul rotunjit ajunge sub valoarea minimă. Poziția ta rămâne nulă, în timp ce backtestul înregistrează o execuție.

E ușor să treci peste această discrepanță, considerând-o o eroare de formatare. Dar ea poate schimba și activele pe care le deții, momentul reechilibrării și riscul rămas după eșecul unui ordin. Tratează filtrele de tranzacționare ale fiecărei platforme ca parte a regulilor de execuție ale strategiei și asigură-te că backtestul și adaptorul paper aplică aceleași reguli, în aceeași ordine.

Ce filtre ale bursei pot invalida un ordin?

Începe cu metadatele instrumentului de care are nevoie ordinul tău: incrementul cantității, cantitatea minimă, valoarea minimă, pasul de preț și orice limite privind mărimea ordinului sau intervalul de preț. Denumirile și domeniul lor de aplicare diferă de la o platformă la alta. O pereche spot poate avea o valoare minimă diferită de cea a contractului perpetuu; un filtru se poate modifica în timp ce rulează strategia ta.

Să presupunem că vizezi o poziție în valoare de $12 într-un contract al cărui ordin minim valorează $10. Dacă rotunjirea la pasul cantității îți reduce ordinul la $9.80, acesta este invalid, deși ținta nerotunjită depășea pragul minim. Rotunjirea în sus la $10.20 îl poate face valid, dar depășește ținta cu $0.20. Diferența poate conta atunci când contul este mic sau strategia tranzacționează multe instrumente.

RegulăCe limiteazăConsecință pentru backtest
Pasul cantitățiiModificările permise ale mărimii ordinuluiMărimea rotunjită diferă de țintă
Cantitatea sau valoarea minimăCel mai mic ordin acceptatUnele tranzacții devin operațiuni fără efect sau necesită rotunjire în sus
Pasul de prețPrețurile limită și de declanșare permiseRotunjirea prețului schimbă șansa de execuție a ordinului
Intervalul de preț sau plafonul de mărimeLimite stabilite de platformă pentru câmpurile ordinuluiOrdinele pot fi respinse în perioade de volatilitate sau la reechilibrări ample

Unde ar trebui să aplici rotunjirea în fluxul ordinului?

Rotunjește câmpurile ordinului după ce calculezi modificarea dorită a poziției și înainte să decizi dacă îl trimiți. Păstrează ținta nerotunjită pentru analiză, apoi calculează ordinul executabil pornind de la poziția curentă, multiplicatorul contractului și incrementurile stabilite de platformă. Pentru un pas al cantității de vânzare de 0.001, o reducere dorită de 0.0017 devine fie 0.001, fie 0.002, în funcție de regula declarată. Aceste opțiuni lasă poziții reziduale diferite, așa că „rotunjește la precizie” nu este o politică suficientă.

Pentru cantități, rotunjirea în jos spre zero evită creșterea accidentală a expunerii peste modificarea solicitată, dar poate lăsa reziduuri mici care nu se tranzacționează niciodată. Rotunjirea la cea mai apropiată valoare micșorează eroarea medie, dar poate depăși ținta. Gestionarea valorii minime necesită o decizie separată: omiți tranzacția, acumulezi până trece pragul sau mărești ordinul și accepți depășirea țintei. Nu alterna pe ascuns între aceste comportamente.

Păstrează și motivul pentru care un ordin nu a fost plasat. „Fără ordin: sub valoarea minimă” înseamnă altceva decât „executat la zero”. La o reechilibrare de portofoliu, un ordin omis poate lăsa numerar nefolosit sau poate menține expunerea în activul vechi; înregistrează rezultatul în starea contului.

Cum menții aliniate execuțiile din backtest și paper?

Folosește aceeași funcție de validare a ordinelor în ambele fluxuri, dacă arhitectura sistemului permite. Transmite-i aceleași reguli ale instrumentului valabile la momentul respectiv, ordinul dorit și starea contului. Funcția ar trebui să returneze fie un ordin normalizat, fie un motiv precis al respingerii. Simulatorul poate apoi să aplice ipotezele sale de execuție ordinelor normalizate, iar adaptorul paper să trimită câmpuri echivalente platformei.

Păstrează o copie datată a metadatelor filtrelor împreună cu fiecare rulare. Dacă se schimbă incrementul cantității sau pragul minim, trebuie să știi ce regulă a folosit backtestul. Folosirea metadatelor de astăzi pentru a relua o strategie de acum un an poate face ordinele vechi să pară invalide sau ordinele istorice să pară posibile, deși nu erau.

Când platforma paper raportează o respingere, compară câmpurile trimise și copia filtrelor înainte să modifici semnalul. Dacă normalizatorul de ordine al backtestului a produs 0.037 BTC, deși platforma permitea incrementuri de 0.001 BTC, problema este în adaptor sau în metadate. Dacă ordinul trimis era valid, dar nu s-a executat niciodată, atunci te uiți la comportamentul execuției, cum ar fi prețul, lichiditatea sau timpul de valabilitate.

Ce ar trebui să verifici înainte să ai încredere în comparație?

Pentru fiecare reechilibrare, păstrează o evidență succintă: poziția țintă, poziția curentă, ordinul brut, ordinul normalizat, versiunea filtrelor aplicabile și starea finală. Apoi compară înregistrările din paper și din simulare pentru același moment al deciziei.

Strategia ta poate fi în continuare solidă chiar dacă prima reechilibrare paper eșuează. Dar până când simulatorul nu poate explica de ce ordinul ar fi fost acceptat, rotunjit, omis sau respins, curba de capital descrie un sistem de execuție diferit de cel pe care încerci să-l rulezi.

filtre de bursătranzacționare paperdimensionarea ordinelorbacktestingcontracte futures crypto
← Toate articolele