Začnimo kar s številkami, saj so celoten argument. Povratna taker transakcija na večji perp borzi stane približno 0.10% of notional provizij. Funding pri prenatrpani long poziciji lahko teče 10-30% annualized proti tebi. Tržno naročilo, ki je veliko glede na globino na vrhu knjige, poleg razmika plača še vpliv po zakonu kvadratnega korena. In backtest, ki bere današnjo revizijo včerajšnjih podatkov, dobi prednost v vrednosti nekaj odstotkov na leto, ki nikoli ni obstajala.
Presenetljiva je prva številka. Ne zato, ker bi bila velika — ampak zaradi tega, kar naredi s pogostostjo trgovanja. Vsi prikimavajo pri »upoštevaj provizije«, nato pa testirajo strategijo, ki trguje štiridesetkrat na dan. Pri 0,10 % na povratno transakcijo to pomeni 4% of notional per day stroškov. Na perpu srednje kapitalizacije ni signala, ki bi presegel to letvico. Strategija ni bila niti blizu vzdržnosti, backtest brez provizij pa je trdil, da je briljantna.
Provizije so filter, ne odbitek
Miselni model, ki ga nosi večina ljudi, je, da provizije le pobrijejo krivuljo: enaka oblika, malo nižje. To je narobe. Provizije so filter pogostosti. Visokofrekvenčne različice neke prednosti povsem izbrišejo, počasne pa pustijo skoraj nedotaknjene. Ko je naš cevovod začel uveljavljati resnične maker/taker tarife po posameznih borzah, niso umrle slabe ideje — umrle so dobre ideje, ki so trgovale prepogosto. Rešitev je bil običajno daljši časovni okvir, ne boljši signal. Danes opustimo vse, kar ima povprečen donos na transakcijo pod 0,15 % nominalne vrednosti, ker po dvosmernih stroških ne ostane nič, kar bi se lahko obrestovalo.
Funding je davek na pozicijo, ki ima spomin
Perpetual futures plačujejo funding vsako uro ali vsakih osem ur in to ni šum: strukturno je koreliran prav s tistimi posli, ki jih želijo momentum sistemi. Ko so vsi long, je funding pozitiven in tvoja long momentum pozicija ga plačuje. Backtest brez obračunavanja fundinga sistematično polepša sledenje trendu na perpih. Naučili smo se tega na sramoten način — celotna družina funding-carry strategij je bila samodejno opuščena, ker jim pogon ni pripisoval fundinga, ki so ga bile zasnovane pobirati. Signal je bil v redu. Manjkalo je knjigovodstvo.
Vpliv raste s kvadratnim korenom tvoje velikosti
Vljudna fikcija backtestiranja na svečah je, da izpolniš naročilo po zaključni ceni. Za majhna naročila to približno drži. Za karkoli resnejšega uveljavljen model pravi, da vpliv raste s kvadratnim korenom velikosti naročila glede na volumen — in se nikoli ne povrne. Oceno vpliva po zakonu kvadratnega korena vgradimo v vsako izpolnitev in v samo krivuljo kapitala. Najbolj šteje točno tam, kjer je najmanj priročno: pri kapaciteti. Strategija je lahko resnično dobičkonosna pri 50.000 $ in strukturno nedobičkonosna pri 5 mio. $, mejo pa pokaže samo krivulja, ki upošteva vpliv.
Pogled v prihodnost se skriva v podatkih, ne v kodi
Nihče ne napiše if tomorrow_close > today_close: buy(). Pogled v prihodnost se prikrade skozi napeljavo podatkov: sentiment novic, ožigosan s časom objave namesto s časom zajema; funding stopnje, pripete na obdobje, ki ga pokrivajo, namesto na trenutek, ko so postale znane; »trenutni« nabori simbolov, uporabljeni na zgodovini (survivorship); revidirane gospodarske objave, ki nadomestijo številko, ki je dejansko udarila na trak. Naše pravilo je point-in-time povsod: vsaka dopolnilna serija je časovno označena s trenutkom, ko bi mi to lahko vedeli, backtest pa lahko bere le tisto, kar je obstajalo v tisti nanosekundi.
Preizkus backtesta ni, ali krivulja gre navzgor. Preizkus je, ali ista koda, hranjena z istimi signali v živo, ustvari iste posle — in to izveš samo tako, da preverjaš vsak dan, za vedno.
Zadnji stavek je resničen proces, ne slogan. Vsak dan predvajamo okno vsake papirnato trgovane strategije skozi pogon za backtestiranje in posle primerjamo enega za drugim. Ko se papirnato trgovanje in ponovitev ne ujemata, eden od njiju laže — in običajno gre za strošek ali časovni žig. Zgornje štiri postavke so preprosto tiste, ki so nam lagale prve.
← Vse objave