Obstaja vprašanje, ki se mu vsak backtest izogne: ali bi ista koda, hranjena z istim trgom v živo, storila isto? Odgovora ne dobite z več backtestiranja. Dobite ga lahko samo tako, da strategijo poženete na podatkih v živo z resnično semantiko izvršitve in nato posel za poslom preverite, da se svetova ujemata. To preverjanje izvajamo vsak dan, samodejno, in je najbolj produktiven lovec na hrošče v celotni platformi.
Prvi dan: zgradimo zrcalo
Vsaka promovirana strategija teče v svojem izoliranem vozlišču v živo in požira resnične borzne tokove: kotacije v živo za izvršitve, resnične razmike, resnične ure trgovanja. Nobenega deljenega stanja med strategijami — to smo se naučili po težji poti, saj je deljeno vozlišče omogočilo, da so poizvedbe o pozicijah ene strategije zamakale v drugo. Vsaka izvršitev se zabeleži skupaj z vrednostjo signala, ki jo je sprožila.
Vsako jutro: ponovitev in primerjava
Dnevno opravilo vzame papirnato okno vsake strategije, požene identično kodo skozi backtest pogon čez isto obdobje na katalognih podatkih in izvršitve ujema ena proti ena: ista stran, ista toleranca časovnega žiga, ista velikost. Rezultat ni korelacija ali občutek. Je tabela: ujemano, samo papir, samo ponovitev. Zdrava strategija sedi pri 54 od 55 ujemanih. Nezdrava vam natančno pove, kateri posel je odstopal in kdaj.
Kaj se je pokvarilo, po vrsti
- Izvršitve med ogrevanjem. Vozlišče v živo je za ogrevanje indikatorjev dovajalo zgodovino — strategije z lastnimi obdelovalci svečk pa so na njej veselo trgovale. Backtesti teh fantomskih vstopov nikoli niso videli. Popravek je bil varovalo na plasti oddaje naročil, ne popravek strategije, sicer bi hrošča podedovala vsaka strategija.
- Zaporedno ogrevanje pri več nogah. Prerezno-sekcijska strategija se je ogrevala po en instrument naenkrat; vsaka noga je videla prazne sosede in sidro se ni nikoli inicializiralo. V živo ni trgovala nič; v ponovitvi je trgovala normalno. Nič ujemanih poslov — a to je na glas povedala samo primerjava.
- Zanke sesuvanja zaradi natančnosti tikov. Tiki aggTrade v živo prihajajo z drugačno natančnostjo, kot jo je pričakoval instrument v peskovniku. Vozlišče je padalo v zanko na trditvi, ki je backtest nikoli ne bi sprožil, ker so katalogne svečke že normalizirane.
- Amnezija ob ponovnem zagonu. Ponovni zagoni procesa so znova sprožili vstopno logiko na pozicijah, ki so že obstajale — pri strategiji za ponovno uravnoteženje je ponovni zagon potiho postal rebalans. Pri trgovanju v živo to ni paritetna opomba pod črto; to je rdeča zastavica z denarjem na kocki.
Opazite vzorec: niti eden od teh ni hrošč v signalu. Vsi so hrošči na meji izvršitve — ogrevanje, stanje, natančnost, ponovni zagoni. To je natanko tisti razred napak, za katerega so backtesti strukturno slepi, saj backtest pogon je meja izvršitve v backtestu.
Asimetrije, ki jih ohranjamo namenoma
Svetova namenoma nista identična. Backtest v PnL zaračuna modeliran polovični razmik plus vpliv po kvadratnem korenu; papir plača resnični razmik v ceni izvršitve in nima modela vpliva. Če bi modelirani razmik dodali papirju (ali resničnega backtestom), bi ga šteli dvakrat. Pariteta pomeni enake odločitve, enake izvršitve znotraj tolerance — ne bitno identičnega PnL. Vedeti, katere razlike so načelne in katere so hrošči, je večji del discipline.
Backtest je hipoteza. Papirnato trgovanje je poskus. Paritetna ponovitev je laboratorijski dnevnik, ki vas ujame, ko se slepite.
Če poganjate strategije in ne primerjate obnašanja v živo z obnašanjem v ponovitvi po urniku, imate cel razred hroščev, ki jih niste nikoli videli. Enega najdemo približno vsakih nekaj tednov in vsak od njih je bil iz notranjosti backtesta neviden.
← Vse objave
