Walk-forward a otázky za milion dolarů

V únoru 2015 napsal někdo na fórum QuantConnectu, jestli by nešlo přidat walk-forward optimalizaci. Zakladatel platformy odpověděl vstřícně. Vlákno se pak roky vracelo, a když ho někdo po čase oživil znovu, přišla odpověď, kterou stojí za to citovat doslova: „Officially scheduled for 2023."
V březnu 2023 z toho opravdu vznikl issue na GitHubu. Je otevřený dodneška a poslední komentář má z letošního dubna.
Od té první prosby uplynulo jedenáct let.
Nemyslím si, že je to leností. Myslím si, že je to tím, že walk-forward není funkce, kterou přidáš. Je to rytmus. A rytmus se nedá zabalit do tlačítka, protože se u něj musí zodpovědět čtyři otázky, na které nemá nikdo univerzální odpověď. Ty čtyři stojí za celý tenhle text.
Nejcitovanější disciplína, na které se nikdo neshodne
Walk-forward není nic nového a rozhodně to není naše myšlenka. Řekl bych, že je to vůbec nejcitovanější disciplína algotradingu. Zároveň je to disciplína, u které se dva lidé skoro nikdy neshodnou na konkrétním nastavení.
To není proto, že by jeden z nich byl hlupák. Je to proto, že správné nastavení se liší podle toho, co obchoduješ, jak dlouho pozici držíš a jak máš postavené řízení rizika. A taky proto, že si každý svoje kvalitní strategie střeží, takže se z principu věci shodnout nemůžou. Kdo tvrdí, že zná nastavení, které sedí vždycky, ten lže.
Denní strategie držící pozici týdny a intradenní strategie držící ji dvě hodiny prostě nemají stejný rytmus. A pozor i na počet obchodů, a to jak v tom testovacím vzorku, tak v ověřovacím. Vydávat pár obchodů za statistiku je spíš vtip než poctivá práce.
O čem naopak spor není: walk-forward je nejlevnější obrana proti přeoptimalizování a při dobrém použití vede k nastavení, které vydělává. Není to imunita — přeoptimalizovat se dá i sám walk-forward, když si dost dlouho hraješ s délkou oken, dokud nevypadne hezký obrázek. Ale je to ta nejlevnější a nejrychlejší obrana, kterou máš k dispozici.
A ještě jedna věc, o které se mluví míň — spolehlivě odhalí odpad. Strategie, které v testu vypadaly hezky a v prvním poctivém out-of-sample okně se rozsypou. U nás takové nemají místo a walk-forward je ten nejrychlejší způsob, jak je poznat dřív, než jim budeš věnovat svůj drahocenný čas.
Odpad je potřeba odhalit hned na začátku a nebýt u toho sentimentální ve stylu „třeba tam nějaký edge bude“ nebo „co když jsem to netestoval dost a zrovna tahle byla ta pravá“. Lepší je věnovat čas strategiím, které slušný potenciál ukážou rovnou.
Proč to nestačí udělat jednou
Nejčastější představa vypadá takhle: udělám walk-forward, projde mi, mám hotovo, jdu do živého.
Jenže ta zkouška neověřuje tu jednu konkrétní sadu parametrů, se kterou z ní vypadneš. Ověřuje schopnost se přenastavovat — a zároveň to, jestli se metriky, které sleduješ v in-sample, ochotně přenesou i do out-of-sample. Testuje proces: vezmi kus historie, najdi nastavení, pusť ho na kus, který jsi neviděl, posuň se, opakuj. Když to obstojí ve dvaceti opakováních, máš důvod věřit, že obstojí i v tom jedenadvacátém. A hlavně to znamená, že jsi našel proces, který musíš být schopen udržet i v reálném obchodování. Adaptace se tím stává součástí strategie, ne mimořádnou událostí — přenastavuješ v rytmu toho okna, které prošlo testem.
Kdo tou zkouškou projde a pak už nikdy nepřenastaví, ruší si tím vlastní důkaz. Otestoval proces, který nepoužívá. Drží nastavení z jednoho okna a tváří se, že má za sebou dvacet.
Walk-forward není razítko. Je to rytmus.
Tuhle myšlenku jsme na webu už jednou vyslovili, v obecnějším článku o walk-forwardu. Tenhle text je o tom, co za ní následuje — protože jakmile přijmeš, že je to rytmus, přestanou být ty čtyři otázky nudnými detaily nastavení a stanou se z nich parametry toho rytmu.
Jak dlouhý ten rytmus má být
Tohle je otázka, na kterou chce každý číslo, a poctivá odpověď zní, že univerzální číslo neexistuje.
Nejčerstvější stopa v té jedenáct let staré diskuzi je z letošního dubna. Jeden z diskutujících tam píše, že délka okna se má vybírat křížovou validací, ne nastavit natvrdo. Dodává, že jemu na denních datech sedí zhruba půl roku dovnitř a měsíc ven, ale hned upozorňuje, že to závisí na době držení pozice. Beru to jako zkušenost jednoho praktika, ne jako doporučení — a přesně tak by to měl brát každý, kdo to čte.
Se stejným rozhodnutím souvisí volba mezi kotveným a klouzavým oknem. Kotvené okno si pamatuje všechno od začátku, klouzavé zapomíná. To není technický detail, to je rozhodnutí o tom, kolik paměti má systém mít — jestli ho má krize před deseti lety pořád zajímat, nebo ne. Jistě lze udělat více testů, za což ti pak robustnost sama přijde zaklepat na dveře a poděkovat.
Podle čeho se pozná, že strategie z rytmu vypadla
Tady je ta část, kterou lidi řeší nejmíň a která rozhoduje nejvíc.
Na fórech se otázka na degradační metriky vrací pořád dokola a odpovědi se rozcházejí. A bez odpovědi je celý rytmus slepý: přenastavuješ v pravidelném intervalu, ale nevíš, jestli tím něco zachraňuješ, nebo jen pravidelně přemalováváš rezavý plot.
Rozdíl mezi „tenhle měsíc byl slabší“ a „tahle strategie skončila“ musí být rozhodnutelný předem. Ne až ve chvíli, kdy se na to díváš a chce se ti věřit tomu prvnímu.
Z analýzy přitom víme dost: které out-of-sample okno vzešlo z kterého in-sample, jak ochotně se parametry mezi okny přenášely a jaké výsledky se tedy dají čekat. To není málo, to je základ, ze kterého se dá postavit pravidlo.
A aby se z obchodování nestal gambling, musí být předem daná i podmínka, za které se strategie vypíná. Většinou je to logické „nebo“ — stačí, aby platila jedna věc z několika.
Degradační metriky navíc nejsou jediná pojistka. Ve strategii má být řízení rizika, především maximální možná ztráta na jedné pozici a další ochranné mechanismy. O tom chci napsat samostatný, podrobnější technický článek, včetně toho, jak řízení rizika souvisí právě s walk-forwardem a degradačními metrikami.
Na co se vlastně při každé obnově optimalizuje
Otázky na cílovou funkci na fórech často mizí jako nejasné nebo duplicitní. To je samo o sobě výmluvné — lidi tuší, že to rozhodnutí existuje, ale neumějí ho ani pojmenovat tak, aby jim moderátor nechal vlákno stát.
Na GitHubu to v květnu 2024 někdo formuloval přesně: chtěl by předat vlastní cílovou funkci, která si sáhne na statistiky celého běhu, a ne jen na jedno číslo. To je jádro věci. Když optimalizuješ na jedno číslo, dostaneš nastavení, které je nejlepší v tom jednom čísle — a ta zbývající, o kterých jsi neřekl, že tě zajímají, se ti rozjedou.
Tady stojí za to zmínit jednu věc z naší vlastní kuchyně, protože sedí na to, o čem je celý tenhle text. Křížovou validaci používáme, ale na jinou otázku, než na jakou ji zmiňoval ten diskutující z dubna. V kombinatoricky symetrické podobě, jak ji popsali Bailey, Borwein, López de Prado a Zhu, počítá pravděpodobnost, že je výsledek přeoptimalizovaný — a syntetizuje si out-of-sample z jednoho běhu, takže funguje i tam, kde walk-forward ještě není. Používáme ji tedy jako první síto na genetiku a grid, dřív než se vůbec dostaneme k oknům.
Zní to jako odbočka. Není. Je to ukázka toho, že ty čtyři otázky nejsou čtyři nezávislá rozhodnutí, ale jeden systém. A pořadí, ve kterém je řešíš, mění, co ti z testu vůbec může vyjít.
A co když to přestane fungovat
Na EliteTraderu běží dlouhé vlákno s názvem, který se ptá, jestli není walk-forward jenom iluze. A padne v něm otázka, jak dlouho to komu vydrželo naživo. Odpověď nikde. Ne proto, že by to bylo tajemství. Proto, že to nikdo systematicky nesleduje.
Můj názor: edge umře. Nezeslábne, nezakolísá, umře. A ochrana proti tomu není další test, ale velikost sázky a schopnost to vypnout.
Rytmus přenastavení proto musí mít hranici, za kterou se už nepřenastavuje, ale končí.
Závěr
Ta jedenáct let otevřená žádost není o chybějící funkci. Je o tom, že lidi chtějí, aby na ty čtyři otázky někdo odpověděl poctivě a řekl nahlas, proč zrovna takhle. To není tlačítko, to je postoj.
A součástí toho postoje je i odpověď, kterou si musíš dát sám: kdy už se nepřenastavuje. Bez ní se budeš donekonečna doopravovat směrem dolů a vysvětlovat si to tím, že trh je zrovna v jiném režimu.
Někdy je. A někdy je konec.
Chcete strategii, která se přenastavuje v rytmu, co prošel testem — a ví, kdy se má vypnout? Kontaktujte nás →