Mi-ai trimis curba capitalului și jurnalul tranzacțiilor și m-ai întrebat dacă nu cumva rezultatele sunt prea bune ca să fie adevărate. Pe scurt: nu sunt nici evident reale, nici evident false, iar în aproximativ o zi de lucru poți afla care dintre variante se aplică. Urmează răspunsul lung, fiindcă diagnosticul contează mai mult decât verdictul.
Ce ai: un semnal de mean-reversion pe intervale de 15 minute pentru contractele perp BTCUSDT și ETHUSDT de pe Binance, scor z al prețului față de media pe 96 de bare, tranzacționezi invers coada distribuției și menții poziția 2-8 bare. Backtestul acoperă perioada februarie 2024–iunie 2026. Sharpe 2.9 după aplicarea modelului tău de comisioane. Iar când ai grupat P&L-ul după minutul zilei, 71% din el s-a concentrat în cele trei intervale de 15 minute care includ orele 00:00, 08:00 și 16:00 UTC.
Știi deja de ce e suspect. Lasă-mă să-ți spun și de ce, în parte, nu e.
Ceasul de funding e cât se poate de real și chiar mișcă prețul
Binance decontează fundingul contractelor perpetue la 00:00, 08:00 și 16:00 UTC. Fiecare poziție deschisă în momentul decontării plătește sau încasează. Este un flux de numerar fix, programat și cunoscut de toată lumea, care generează ordine reale în piață — nu e un artefact de date, ci ceva ce traderii chiar fac.
Fluxul are un tipar. În cele zece până la treizeci de minute dinaintea decontării, cei care nu vor să plătească își închid sau își acoperă pozițiile. Dacă rata fundingului este +0.04% pentru interval, un trader long care oricum intenționează să iasă va închide poziția înainte de marcarea prețului, nu după, iar un trader de basis care este short pe perp va păstra cu plăcere poziția deschisă. Asta creează presiune asimetrică, cu un termen-limită. Apoi, imediat după decontare, o parte din flux revine — traderii long care au evitat fundingul reintră — și apare o inversare parțială.
Așadar, un semnal de mean-reversion care se activează la 23:52 și iese la 00:12 se află exact în locul în care are loc un eveniment de lichiditate previzibil. O parte din avantajul tău vine probabil din inversarea unei mișcări mecanice, dictate de calendar. Este un fenomen real de microstructură, prezent de ani buni.
Dar iată ce aș vrea să aflu înainte să cred într-o valoare atât de mare ca a ta.
Șase verificări, în ordinea în care le-aș face
Începe cu cele mai ieftine: majoritatea acestor strategii se dovedesc neviabile la verificarea doi sau trei.
- Ai contabilizat de două ori P&L-ul din funding? Dacă motorul tău de execuție aplică fundingul pozițiilor deschise și seria de prețuri folosește prețul mark, nu prețul ultimei tranzacții, s-ar putea să plătești sau să încasezi fundingul de două ori — o dată explicit și încă o dată prin convergența prețului mark. Afișează fluxul brut de numerar din funding pentru fiecare tranzacție și verifică zece dintre ele față de endpointul istoric de funding al exchange-ului.
- Ce timestamp are rândul tău de funding? Istoricul ratelor de funding de la Binance returnează un fundingTime care indică momentul decontării. Unii furnizori livrează același rând cu timestampul de la începutul intervalului la care se aplică. Dacă datele tale sunt decalate cu opt ore, ai tranzacționat folosind un semnal care cunoaște viitorul. Acesta este cel mai frecvent mod în care am văzut apărând un avantaj fals din funding și produce exact profilul tău de P&L — concentrat pe barele de decontare, cu semnul corect, impecabil.
- Ce se întâmplă cu spreadul la 00:00:00? Descarcă order book-ul, nu kline-urile. Pe o bară de 1 minut spreadul nu se vede; în secundele din jurul decontării, pe o platformă de nivel mediu, se poate lărgi de 3-5 ori. Dacă modelezi execuțiile la prețul mediu sau la închidere, încasezi un spread care nu era disponibil.
- Rezistă dacă iei în calcul doar celelalte două decontări? Separă cele trei intervale. Fluxul de la 00:00 UTC diferă de cel de la 08:00 (cam la deschiderea sesiunii asiatice) și de la 16:00 (după-amiaza în SUA). Dacă toți banii vin dintr-un singur interval, ai aproximativ 300 de evenimente, nu 900, iar Sharpe trebuie recalculat pe baza acestora.
- Rezistă pe o platformă cu un program de decontare diferit? Asta e verificarea cea mai bună. Rulează semnalul identic pe o platformă unde fundingul se decontează din oră în oră sau după un alt program. Dacă efectul este determinat de funding, ar trebui să urmeze programul acelei platforme. Dacă semnalul se activează tot la 00:00 UTC pe o platformă care nu decontează fundingul la 00:00 UTC, ai descoperit un artefact de miezul nopții în fluxul tău de date, nu un efect al fundingului.
- Cât din P&L apare în primele și ultimele 90 de secunde? Dacă întregul avantaj ține de un interval sub două minute, barele tale de 15 minute sunt mult prea grosiere pentru a estima corect prețul de intrare și ar trebui să presupui că execuția pe care o modelezi este cea mai bună disponibilă în acel interval, nu cea pe care ai obține-o efectiv.
Verificarea cinci este cea pe care aș face-o prima dacă aș avea doar o oră. Este un experiment natural și simplu, care nu necesită infrastructură nouă în afară de o a doua sursă de date.
Cât te costă de fapt intervalul de decontare
Să presupunem că efectul este real și trece de toate cele șase verificări. Acum calculează-i costul corect, fiindcă tranzacția pe care o modelezi nu este cea pe care ai obține-o în realitate.
Iată o comparație între o tranzacție dus-întors de 20 de minute într-o oră liniștită și una care cuprinde momentul decontării, pe un contract perp USDⓈ-M, cu intrare taker și ieșire taker, pentru o poziție de $50k:
| Oră liniștită (de ex. 03:20 UTC) | Cuprinde ora 00:00 UTC | |
|---|---|---|
| Comision taker, dus-întors | 0.09% | 0.09% |
| Spread tipic plătit | ~0.4 bp | 1.5-3 bp |
| Slippage pentru o poziție de $50k | ~0.5 bp | 2-6 bp |
| Funding plătit/încasat | 0 | ±1 până la ±4 bp (intervalul întreg) |
| Cost total realist | ~10 bp | 13-19 bp înainte de funding |
Rândul despre funding este cel interesant și motivul pentru care insist asupra verificării unu. Dacă păstrezi poziția peste decontare, plătești sau încasezi fundingul pentru întregul interval, indiferent cât timp ai menținut poziția. O expunere de douăsprezece secunde la 23:59:54 te costă fundingul pentru opt ore întregi. O strategie cu o durată medie a poziției de 20 de minute, care trece de momentul marcării, plătește costul de finanțare pentru opt ore pe o tranzacție de douăzeci de minute. Modelul tău de comisioane trebuie să-l calculeze astfel, nu proporțional cu durata.
O capcană înrudită: dacă eviți complet să treci de decontare — ieși la 23:58 și reintri la 00:02 — îți dublezi numărul de comisioane și ajungi să rulezi o strategie bazată în întregime pe ideea că două treceri taker în plus costă mai puțin decât o plată de funding. Uneori chiar așa e. Calculează explicit, în loc să lași backtestul să decidă în locul tău.
Întrebarea despre regim pe care încă n-ai pus-o
Eșantionul tău acoperă perioada februarie 2024–iunie 2026. Fundingul nu a rămas în același regim pe tot parcursul ei. Au fost perioade lungi în care rata pe 8 ore a rămas fixată la pragul minim de 0.01%, iar nimeni nu avea motiv să-și repoziționeze portofoliul în jurul decontării; au fost și săptămâni în care a stat la peste 0.05% zile în șir, iar fluxul dinaintea decontării a fost violent.
Grupează P&L-ul după rata de funding valabilă în momentul tranzacției — de exemplu, în patru intervale definite după valoarea absolută a ratei. Dacă avantajul vine din fluxul de funding, ar trebui să crească aproximativ odată cu |funding|. Funding aproape de zero, avantaj aproape de zero; funding ridicat, avantaj ridicat. Dacă în schimb rezultatele sunt uniforme între intervale sau, mai rău, se concentrează în intervalul cu funding redus, povestea despre funding este doar o explicație pe care ai atașat-o unui alt fenomen.
Îmi place verificarea asta fiindcă face o predicție care poate fi infirmată și care decurge din propria ta explicație. Nu întrebi „mai funcționează?”, ci „funcționează din motivul pe care l-am invocat?”.
Ce aș face eu, concret
Dacă trece verificările: redu-i amploarea. Versiunea onestă a strategiei nu înseamnă 900 de tranzacții pe an, pe intervale de 15 minute, ci câteva sute de evenimente bine alese, cu logica de intrare definită la secundă și un model de execuție construit din instantanee ale order book-ului, nu din kline-uri. Este o strategie mai mică, mai puțin elegantă și mai ușor de apărat. Este și versiunea care are șanse să se potrivească în paper trading — singurul mod de a afla dacă execuțiile pe care le-ai presupus chiar sunt posibile.
Dacă pică la verificarea doi — decalajul de timestamp — nu te enerva prea tare. Li se întâmplă tuturor măcar o dată. Și merită să citești cu atenție codul de încărcare, în loc să corectezi pur și simplu decalajul, fiindcă dacă fundingul este decalat, e destul de probabil să fie decalat și interesul deschis. E bine să afli asta înainte de următoarea idee.
Încă un lucru, și pe acesta îl omit mulți. Indiferent ce descoperi, notează cele șase verificări și rezultatele lor lângă strategie. Peste șase luni, tu sau altcineva veți genera un semnal aproape identic ca structură, veți obține aceeași curbă superbă și veți purta aceeași discuție de la capăt. Diagnosticul este activul durabil aici. Strategia poate să nu fie.
← Toate articolele
