Od nápadu k produkci: jak testujeme obchodní strategie
„Jak vlastně poznáte, že strategie stojí za nasazení?" — nejčastější otázka, kterou dostáváme. Tenhle článek je odpověď v plné délce: mapa celé cesty, kterou u nás musí ujít každá strategie — od prvního nápadu na grafu až po první korunu v živém trhu. Není to návod k sestavení; je to prohlídka továrny. Každá fáze má na blogu vlastní hloubkový článek — tady do sebe poprvé zapadají všechny najednou.
Berte ji jako jednu z možných cest, ne jako jediný správný postup. Každá strategie si žádá trochu jiný přístup a jiný důraz — některé fáze se protáhnou, jiné zkrátí, pořadí se občas prohodí. Společný jmenovatel je ale vždy jeden: robustnost. O nic jiného v celém protokolu nejde — aby strategie fungovala i mimo data, na kterých vznikla.
Jak poznat, že obchodní nápad má skutečnou výhodu (edge)?
Každá strategie u nás začíná jako nosná myšlenka — trend, návrat k průměru, sezónnost. A myšlenka se nejdřív zkoumá, ne rovnou programuje: napíšeme si skript v TradingView (Pine) a sledujeme ji přímo na grafu, obchod po obchodu. Je to nejrychlejší způsob, jak nápad vidět v akci dřív, než mu věnujeme jakýkoli výpočetní čas.
V téhle fázi hodnotíme kvalitu myšlenky a ptáme se na jedinou podstatnou otázku: vidíme za ní edge, skutečnou výhodu? Edge je totéž, co má kasino proti hráči: na jednom otočení rulety může prohrát, ale přes tisíce otoček vyhrává, protože pravidla mu systematicky přejí. Přesně takovou systematickou výhodu chceme vidět na grafu i my. Bez viditelné výhody se dál nejde — žádné parametry, žádné testy, konec.
Teprve slibná myšlenka se přetaví v šablonu s parametry: jeden kód, ve kterém parametry (stupně volnosti) určují např. délku klouzavého průměru, násobek volatility pro velikost odstupu, práh nerovnováhy v knize objednávek nebo míru tlaku kupců a prodejců — ale samotná logika je jen jedna. (Typům a počtu parametrů se věnujeme níže, u krajiny nastavení.) Tenhle jeden kód pak beze změny poběží v testech i naživo — takže co změříme, to později skutečně obchodujeme.
Jak probíhá první backtest obchodní strategie?
První backtest neběží na doladěných parametrech, ale na výchozích hodnotách — jeho úkolem není vydělat, ale prokázat, že strategie dělá přesně to, co jsme navrhli. Je to quick start, ne finální nastavení. Jako první jízda prototypu: nezajímá nás čas na kolo, ale jestli auto zatáčí a brzdí.
Následuje iterační kultivace — tam a zpět mezi třemi místy. Na grafu sledujeme, jestli vstupy a výstupy sedí s původní myšlenkou. V TradingView skriptu přepisujeme, co nesedí. A v šabloně — kódu strategie pro náš engine — opravujeme implementaci. Když drhne sama myšlenka, ladíme nápad nebo módy strategie, ne jen čísla parametrů.
Souběžně strategie dostává pojistky: ochranné mechanismy pro situace, se kterými původní nápad nepočítal, ale trh je dřív nebo později přinese. A hodnotíme ji dvojím pohledem — riziko (co udělá, když trh udělá něco ošklivého) a kvalita kódu, protože chyba v implementaci umí vyrobit falešný zisk stejně snadno jako ztrátu. Celé to běží na enginu, který se chová jako živý trh, takže chování z této fáze platí i dál v protokolu.
Jak funguje in-sample / out-of-sample test obchodní strategie?
In-sample/out-of-sample test rozdělí jednu dlouhou historii na úsek, na kterém strategii ladíme (in-sample), a na úsek, který strategie nikdy neviděla (out-of-sample) — teprve shoda výsledků obou úseků odliší skutečnou statistickou výhodu od štěstí jedné historie. Funguje to jako zkouška: cvičné testy může student umět nazpaměť, ale až otázky, které nikdy neviděl, prozradí, jestli látce opravdu rozumí.
U nás proto tato fáze běží jako jeden dlouhý test rozdělený na obě části a sledujeme na něm dvě věci:
- Přenositelnost parametrů — hodnoty vyladěné na in-sample musí obstát i na out-of-sample. Když výsledek drží jen jedna přesná kombinace (např. jediná délka klouzavého průměru), strategie se nejspíš naučila šum místo signálu.
- Korelace výsledků — výkon na obou úsecích si musí odpovídat. Skvělý in-sample a mrtvý out-of-sample je nejčastější podoba přeoptimalizace.
Podmínkou celé fáze je statistická významnost: ve vzorku potřebujeme velký počet obchodů, protože na malém vzorku vypadá přesvědčivě i čistá náhoda. Samotný princip děleného testu pak v dalších fázích zpřísňujeme do podoby walk-forward analýzy, kde se dělení opakuje v čase.
Jak najít robustní parametry, a ne jen nejlepší backtest?
Nejdřív ale slovo o tom, co vlastně ladíme. Parametry — stupně volnosti strategie — zdaleka nejsou jen délky indikátorů. Optimalizovat lze periody a okna výpočtů, poměry a násobky (odstup stopu v násobcích volatility), prahy pro vstup a výstup, veličiny z knihy objednávek (hloubku, nerovnováhu nákupní a prodejní strany), tlak kupců a prodejců odvozený z objemů, filtry tržních režimů — a připojit lze i externí data typu sentimentu či financování pozic. Naopak burza, instrument nebo timeframe parametry nejsou: o vstupu do pozice nerozhodují, jsou to metadata strategie.
O robustnosti přitom spolurozhoduje už samotný počet parametrů. Nosných parametrů — těch, které skutečně rozhodují o vstupu a výstupu z pozice — musí být rozumně málo. Čím víc stupňů volnosti, tím snáz optimalizace najde kombinaci přesně vyladěnou na jednu konkrétní historii — přeoptimalizaci; a tím hůř se prostor testuje a hledají se v něm souvislé klastery. Vedle nosných parametrů mohou žít podpůrné — režim obchodování, způsob určení hlavního trendu a podobné filtry; krajinu komplikují mnohem méně.
A záleží i na koncepci. Nejlépe se osvědčují stupně volnosti „bezparametrové": poměry, koeficienty a multiplikátory navázané na dění v trhu — tedy odstup měřený v násobcích aktuální volatility, ne pevné číslo. Takový parametr se trhu přizpůsobuje sám. Napříč naším katalogem strategií přitom platí jednoduché pravidlo: čím blíž je parametr rozhodnutí o vstupu, tím spíš je to poměr; čím blíž exekuci příkazu a řízení kapitálu, tím spíš absolutní hodnota.
Krajina výsledků je mapa výkonu strategie přes všechny testované kombinace parametrů — robustní nastavení se v ní pozná jako široký klaster, ne osamělá špička. Malý prostor parametrů projdeme přesným gridem (každá hodnota s každou), velký prohledá genetika — obojí si můžete osahat na živých grafech v samostatném článku. Každý bod krajiny je plnohodnotný backtest a jeho výšku určuje zvolená metrika — např. PROM, Sharpe nebo profit factor.
Výsledky nečteme jako žebříček, ale jako reliéf. V paralelních souřadnicích (PCP) a 3D krajině sledujeme, kde terén drží — souvislé klastery funkčních nastavení — a kde jsou nebezpečné lokality: propady, v nichž malý posun parametru znamená strmý pád výkonu. Záměrně kontrolujeme i okrajové hodnoty rozsahů. Nepřehlížíme někde klaster jen proto, že leží na kraji mapy?
Vybíráme výhradně bohaté, široké klastery. Je to jako stavění stanu v horách: postavíte ho na náhorní plošině, ne na skalní jehle. Úzký klaster vybrat nelze — při walk-forward optimalizaci by výběr tendoval k přeoptimalizaci: trefili bychom šum jednoho bodu, ne skutečnou vlastnost strategie. Široká plošina odpouští; strategie na ní vydělává v mnoha sousedních variantách.
Robustnost prověřujeme ještě z další strany — reverzním testem. Strategii otočíme na opačnou stranu trhu (z longu na short a naopak) a testujeme i její zrcadlo. Přesně o tohle v celém protokolu jde především: ne o jedno hezké číslo, ale o robustnost — aby výhoda držela napříč podmínkami, směry i trhy, ne jen v jediné konstelaci.
Jak walk-forward rozhodne, které nastavení strategie pustit do produkce?
Walk-forward analýza simuluje skutečné rozhodnutí o nasazení: nastavení strategie se vybírá na in-sample datech a soudí se výhradně podle out-of-sample úseků, na které se nikdy cíleně neoptimalizovalo. Každé okno walk-forwardu přehrává situaci, před kterou stojíme naživo: „teď je potřeba něco pustit — jaké nastavení je to správné?" Uvnitř každého okna proto běží celá genetická optimalizace, ne jeden backtest.
Aby ta zkouška něco znamenala, musí testovací data zažít všechna počasí: růstový (býčí) trh, klesající (medvědí) i dlouhé chození do strany (konsolidaci) — a k tomu období vysoké i nízké volatility či různě silných obchodních objemů. Obecně platí: čím delší testovací historie, tím lépe. Jedno omezení ale žádná historie nepřekoná — bias černé labutě: to, že se něco v datech nikdy nestalo, neznamená, že se to stát nemůže. Extrapolace minulosti je slepá právě k událostem, které v ní chybí — psali jsme o nich v článku o černých labutích a eliminaci černých labutí na trhu se budeme věnovat v některém z příštích článků.
Nepřetestováváme ale jen vítěze in-sample — na out-of-sample data pouštíme všechny kandidáty. Zajímá nás totiž přenositelnost metrik: seřadíme kandidáty podle zvolené metriky na in-sample a pak podle téže metriky na out-of-sample — a měříme, jak moc si obě pořadí odpovídají (statistika pro to má korelaci pořadí, tzv. Spearmanovu). Drží-li žebříček podle profit factoru, PROM či kompozitních metrik i mimo trénink, je metrika u dané strategie přenositelná a dá se podle ní vybírat. Metrika, která pořadí neudrží, je pro výběr k ničemu.
Každá metrika navíc říká něco jiného — je to jiná výšková osa téže krajiny (proto jim říkáme metriky osy Z: právě ony tvoří výškový profil 3D reliéfu). A každá má svou past. Metriky trestající drawdown umějí optimalizaci dotlačit k nastavením, která raději neobchodují vůbec — žádný propad, ale také žádné obchody. Čistý konečný zisk je naopak nejagresivnější: ukazuje strop potenciálu strategie, jenže nedosažitelný — vykoupený hlubokými propady po cestě a téměř jistou přeoptimalizací. Proto se nikdy neřídíme jedinou metrikou.
Přenositelnost sledujeme u celé rodiny pohledů: série výher a proher po sobě a jejich velikost, počet obchodů a jejich rozložení v čase, procento času v trhu — při pyramidování množství kapitálu v trhu — a podobně (metriky podrobně rozebíráme zde). Každá strategie si pak žádá trochu jiné vedení optimalizace — jinou metriku či jejich směs podle toho, kde performuje a kde strádá — a jiný přístup k výběru jedince v bodu rozhodnutí.
Stabilitu parametrů čteme na čtyřkvadrantním pohledu — in-sample dobré/špatné proti out-of-sample dobré/špatné. Hledáme nastavení z kvadrantu „dobré tam i tam"; hvězdy tréninku, které venku pohoří, jsou učebnicová přeoptimalizace.
- IS/OOS bod zlomu — kolik dat dostane učení a kolik ostrá zkouška — je jedno z nejdůležitějších rozhodnutí celé fáze.
- Železné pravidlo: výsledná walk-forward equity se vždy skládá jen z ostrých out-of-sample úseků — nikdy z trénovacích dat.
K čemu slouží Monte Carlo simulace při testování obchodní strategie?
Monte Carlo test se seed variantami přidává do tržních dat kontrolovaný šum a spouští strategii na mnoha mírně odlišných variantách historie, takže z jedné equity křivky vznikne celá distribuce možných výsledků. Historie se totiž odehrála jen jednou. Že na ní strategie vydělala, může být signál stejně dobře jako náhoda. Proto v páté fázi našeho protokolu vezmeme strategii s adaptivními nastaveními z walk-forward analýzy a necháme ji obchodovat na mnoha zašuměných verzích trhu; každou definuje jiný seed.
- Kontrolovaný šum — do cen vneseme malé, řízené odchylky. Trh vypadá stejně, jen se liší v detailech, jako by se týž den odehrál znovu s jiným mikroprůběhem. Šum přitom umí měnit i amplitudu pohybů — někde výkyvy zesílí, jinde zeslabí.
- Seed varianty — každý seed vygeneruje jinou zašuměnou historii. Strategie tak neobchoduje jeden svět, ale mnoho paralelních. A protože stejný seed vytvoří na týchž datech vždy stejnou variantu, je každý z těch světů kdykoli znovu reprodukovatelný — k libovolnému běhu se lze vrátit a přezkoumat ho.
- Vějíř místo křivky — výsledky skládáme do percentilů a čteme medián a spodní pásmo, ne nejhezčí běh.
Strategie, která vydělá jen v jednom konkrétním světě, je převlečená náhoda. Ta, která přežije napříč seed variantami, má šanci přežít i budoucnost — protože budoucnost není nic jiného než další varianta historie, kterou jsme ještě neviděli. Metodu detailně rozebíráme v článku o Monte Carlo simulaci.
Proč testovat strategii na celém vesmíru instrumentů, ne jen na jednom trhu?
Vesmír instrumentů — koš trhů definovaný pravidly, ne výčtem jmen — testujeme genetikou i walk-forwardem zároveň; teprve obojí dohromady dá o strategii celkový přehled. Genetická optimalizace nad košem ukáže, kde v prostoru parametrů strategie žije napříč instrumenty (symboly); walk-forward tutéž zkoušku roluje v čase, okno po okně. Jeden trh umí lichotit — vesmír lichotky škrtá.
Hlavní zjištění téhle fáze: když stejný klaster nastavení funguje na větším množství instrumentů, je to další známka robustnosti. Nastavení, které obstojí na jediném trhu, může být jen šum vyladěný na jeho náhodu. Klaster, který drží přes celý koš — např. přes akcie jednoho odvětví nebo příbuzné futures — popisuje chování trhů, ne štěstí jednoho z nich.
Vesmír navíc umožňuje globální známku. Když strategie projde stejně silným testem na desítkách instrumentů — třeba padesáti — na stejném časovém úseku, lze všechny out-of-sample křivky agregovat do jednoho celkového obrazu a strategie mezi sebou globálně porovnávat. Programově se tak pozná, jestli má strategie skutečnou systematickou výhodu (edge), nebo je to brak. Tvrdé číslo ale nikdy nečteme samotné; vždy k němu patří měkčí pohledy — okolnosti strategie, její povaha a kontext, ve kterém výsledky vznikly.
Nasazení pak není uniformní: na každém instrumentu strategie nakonec běží s trochu upraveným nastavením — klidnější index snese např. pomalejší periodu než rozevlátý akciový titul. Podstatné je pořadí. Doladění se pohybuje v rámci robustního klastru, nikdy mimo něj: nejdřív nastavení, které obstojí přes celý vesmír, teprve pak ladění pro konkrétní trh. A kladný výsledek téhle fáze znamená víc než známku — rovnou diverzifikované nasazení, ne jednu sázku.
A tentýž princip platí o patro výš. Strategii je zdravé prověřit i napříč odvětvími a třídami aktiv — na akciích i kryptu, napříč sektory od rizikového růstového kapitálu přes spotřebu domácností po zdravotnictví. Co obstojí ve více odvětvích, diverzifikuje už svou podstatou: vzniká portfolio portfolií, druhé patro skládání. Okrajově do téhle úvahy patří i zajištění — pojištění pozic, případně protisázky na predikčních trzích (např. Polymarket) jako hedge. Jen naznačujeme šíři možností.
Jak určit velikost pozice a kdy strategii vypnout?
Velikost pozice dimenzujeme frakčním Kelly na levý ocas Monte Carlo distribuce — extrémní scénáře i maximální sérii proher známe dřív, než strategie otevře první obchod. Z Monte Carlo simulací máme tisíce možných průběhů equity, dobrých i špatných. Kapitál neplánujeme na ten průměrný, ale na celý životní cyklus strategie včetně nejhorších větví — stejně jako se most nedimenzuje na průměrné auto, ale na nejtěžší povolený náklad s rezervou. Frakční Kelly pak drží sázku vědomě pod matematickým optimem, protože optimum nepočítá s tlustými konci.
Tenhle přístup má i psychologickou pointu: co je spočítané předem, nemůže překvapit. Když z distribucí víme, jaké drawdowny a jak dlouhé série ztrát jsou pro strategii normální, jsme na ně připraveni — ztrátový obchod ani propad equity nejsou šok, ale očekávaná statistika.
Panika u nás strategie nevypíná. Mantinely ano. Každá strategie má předem dané meze — a jejich překročení znamená vypnutí. Žádné doufání, žádné „ono se to otočí": buď se strategie chová v rámci toho, co jsme nasimulovali, nebo končí.
Stav strategie se pak čte jako semafor. Zelená: všechny sledované hodnoty v mezích — jedeme. Oranžová: stále v normě, ale nekomfortně — třeba equity pod středem Monte Carlo vějíře; nic nehoří, ale je namístě zbystřit. Červená: mimo předem stanovené meze — hlubší drawdown, než jaký byl deklarován, příliš dlouhá série ztrát, počet obchodů výrazně mimo očekávání (oběma směry), náhlý propad profit factoru, PROM či jiné metriky. Červená znamená vypnout — a případně poslat strategii znovu do testů.
A jedna zkušenost navrch: v nesouladu zpravidla nebývá celé portfolio, ale jednotlivec. Když jsou silní všichni ve skupině, je robustní celá skupina — a slabého jedince střídáme tehdy, když neplní očekávání. Ne tehdy, když v rámci své známé povahy dělá přesně to, na co byl navržen.
Jak sestavit portfolio obchodních strategií?
Hladká equity nevzniká přeoptimalizací jedné strategie, ale skládáním více strategií vybíraných podle korelací a času v trhu tak, aby se doplňovaly. Kdo leští jedinou strategii, dokud nemá hladkou křivku, obvykle jen přeoptimalizoval. My jdeme opačnou cestou: strategie smí mít slabá místa, portfolio je zakryje.
Skládáme podle dvou os. První jsou korelace — strategie, které prodělávají ve stejnou chvíli, diverzifikaci jen předstírají. Druhou je čas v trhu: mezery, kdy jedna strategie pozici nedrží, vyplní jiná a kapitál nezahálí. Proč je čas v trhu druhá osa výkonu, rozebírá článek o position sizingu. V portfoliu se tak potkává long i short (podle typu účtu — cash vs. margin), trend following vedle mean reversion a různé instrumenty i třídy aktiv: akcie a tradiční finance, krypto, predikční trhy…
Náš engine zvládá spoty, akcie, futures i opce a další typy instrumentů — a celý souběh počítá na jedné společné equity, ne jako součet oddělených backtestů. Jak pyramida skládání roste patro po patru, popisujeme v článku o soubězích strategií. A plán do budoucna: stejným způsobem skládat celá portfolia napříč tržními obory.
Jak se otestovaná strategie dostane do živého obchodování?
Do živého provozu jde u nás tentýž soubor strategie, který prošel všemi testy — jedno kliknutí, žádný přepis, nulový rozdíl mezi testem a produkcí (zero-delta). Právě přepisování „testovací verze" do „produkční" je totiž místo, kde se tradičně rodí chyby, které žádný backtest nezachytí. My jsme ten krok odstranili.
Pro pořádek k rolím: reálnou exekuci obchodů provádí vždy burza či broker — regulovaný subjekt, u kterého má obchodník účet (u kryptoaktiv poskytovatel služeb s licencí CASP podle evropského nařízení MiCA). Platforma obchod připraví, odešle a hlídá; párování a vypořádání je práce burzy.
Živý běh přitom není bez dozoru:
- Monitoring proti mantinelům. Strategie běží uvnitř předem stanovených mezí — např. maximální pokles kapitálu (drawdown) odvozený z testů. Překročení mantinelu znamená vypnutí. Automaticky, bez diskuse.
- Obnova nastavení ve walk-forward rytmu. Parametry se pravidelně přepočítávají na čerstvých datech — přesně tak, jak to strategie nacvičila ve walk-forward analýze. Nasazením se provozní rytmus nemění, jen pokračuje.
A protože backtest u nás od začátku běží jako živý trh, je ostrý provoz jen dalším oknem téže smyčky — ne skokem do neznáma.
Tím se celá cesta uzavírá. Jedna šablona strategie, tisíce testů, všechny fáze — od prvního backtestu přes optimalizaci až po živý dohled — orchestrované v jedné platformě. A teprve potom, na konci té cesty, riskuje strategie první korunu v trhu.
Přes všechny fáze se táhne jediná niť — robustnost. Nehledáme strategii, která jednou zazářila, ale takovou, která obstojí i v podmínkách, jež jsme jí nenachystali. To je celý smysl protokolu — a důvod, proč té první koruně v trhu můžeme věřit.
Chcete svou strategii provést celým protokolem — od nápadu po živé nasazení? Kontaktujte nás →