Poměrně často se poslední dobu setkávám s tradery, kteří mívají velice zajímavé nápady pro generování automatických obchodních systémů (dále „AOS“) pro algoritmický trading. Bohužel velice často nabývám dojmu, že mnoho traderů se spoléhá pouze a jen na výsledek základního backtestu, jako je tomu v příkladě obchodního systému a jeho equity křivky (viz Obrázek 1). V dnešní době umí mnoho softwarů pro trading jako NinjaTrader, MetaTrader, AmiBroker či TradeStation tento základní backtest provést. Každý z těchto programů má vlastní specifický programovací jazyk, pomocí kterého definujeme vstupní a výstupní podmínky obchodního systému s nadefinovanými obchodními příkazy. Důvod, proč mou jasnou volbou byl software TradeStation, je kvůli pokročilým testům robustnosti, který žádná jiná komerčně nabízená platforma nenabízí.
Obr. 1 Equity křivka pro potenciálně robustní obchodní systém, zdroj: Platforma TradeStation
Backtest sám o sobě může být první indikací kvality systému, ale v žádném případě není dostatečnou analýzou k učinění závěru, že systém bude profitabilní i v reálném obchodování v budoucnosti. Je kritické, abyste vnímali základní backtest pouze a jen jako jednu část hodnocení výkonnosti procesu. Například já na něj nahlížím pouze jako na test, který mi ukáže potenciál ziskovosti obchodního systémů v rámci historických dat pro vybraný trh. Problém však je, že obchodní systémy pracují například s
- indikátory,
- open, high, low, close určitého počtu barů pro vybraný trh a timerame nazpět,
- číselnými konstantami atp.
Na následujícím příkladě si vysvětlíme, proč základní backtest k hodnocení kvality obchodního systému nikdy nestačí:
Představte si, že jste si vytvořili obchodní systém, jehož základní podmínkou pro vstup a výstup bude křížení dvou indikátorů klouzavého průměru (MA). Na Obr.2 můžete vidět konkrétní příklad tohoto křížení:
Obr. 2 Příklad křížení dvou klouzavých průměrů
„Rychlý“ klouzavý průměr (dále „RKP“) počítá a vykresluje do grafu hodnotu aritmetického průměru posledních 15 CLOSE hodnot nazpět (modrá linie) a „Pomalý“ klouzavý průměr (dále „PKP“) vykresluje hodnotu posledních 30 CLOSE hodnot nazpět (fialová linie). Na Obr. 2 můžete v levé části vidět, že pokud RKP překříží nad PKP, obchodní systém vstoupí do dlouhé pozice (LONG) příkazem BUY MARKET na CLOSE úsečky. V opačném případě když RKP překříží pod PKP vystupujeme z dlouhé pozice příkazem SELL MARKET a zároveň při tom vstoupíme do pozice SHORT na CLOSE úsečky. Prakticky jsme tak v pozici nepřetržitě, neboť neustále dle překřížení vstupujeme do dlouhé (LONG) či krátké pozice (SHORT). Samozřejmě rozhodně nedoporučuji s žádným takovým obchodním systémem jakkoliv obchodovat. Prezentuji ho zde pouze jako ilustrační příklad.
Jako tradeři musíme přemýšlet kriticky a měli bychom si položit otázku, zdali automatický obchodní systém (AOS) vykazuje takové vlastnosti, že s většinou nastavení číselných hodnot (např. 5, 10, 15 atp.) klouzavých průměrů vykazuje schopnost být dostatečně profitabilní pro různá nastavení parametrů. Zde vycházíme z jednoduché premisy, že máme zájem obchodovat s takovým systémem, který bude vykazovat v rámci historických dat profitabilitu pro různá nastavení hodnot indikátorů. Jelikož jsou trhy nestacionární časová řada a historická data se neopakují, musíme si být jisti, že pro většinu nastavení parametrů na historických datech AOS vykazuje ziskovost. Nemůžeme si dovolit učinit tak odvážné rozhodnutí bez podložených faktů, že právě to dané nastavení parametrů, pro které jsme obchodní systém vyvinuli, bude ziskové i v budoucnosti. Pokud ale v rámci historických dat zjistíme, že na široké škále nastavení hodnot parametrů AOS vykazoval stabilitu a ziskovost, dostáváme indicii, že obchodní systém vykazuje tzv. robustnost – tedy schopnost vydělávat na živých datech bez ohledu na to, jaké nastavení hodnot parametrů zvolíme. Vrátím-li se k našemu příkladu, kde máme RKP o hodnotě 15 a PKP o hodnotě 30 a toto nastavení hodnot se může jevit na první pohled profitabilně, musíme otestovat, zdali jiné nastavení hodnot parametrů (například pro RKP hodnota 10 a PKP hodnota 40) vykazuje na historických datech ziskovost. Řekněme tedy, že provedeme testování hodnot parametrů na historických datech a vyzkoušíme různé kombinace nastavení hodnot klouzavých průměrů a to například:
RKP: 5 10 15 20 25 30 35 40 45 50
PKP: 55 60 65 70 75 80 85 90 95 100
Jednoduchou matematikou tedy zjistíme, že pro RKP a PKP dostáváme 100 kombinací (10 x 10 = 100). Toto protestování kombinací různých námi zvolených nastavení hodnot parametrů nazýváme optimalizačním testem.
Jednou ze základních výhod platformy TradeStation je možnost provádět kvalitní testy optimalizace. Kromě toho ale po vykonání tohoto testu můžeme zároveň provést tzv. Cluster Walk Forward analýzu, což je vůbec ten nejpokročilejší test robustnosti, který nám jakákoliv dostupná softwarová platforma pro trading nabízí. Více se o tomto testu robustnosti dozvíte v dalších kapitolách. V Tabulce 1 vidíte výsledky optimalizace našeho příkladu a 35 seřazených vzestupně od nejziskovějších nastavení hodnot parametrů. Celkový počet testů je samozřejmě 100, ale tabulka je natolik obsáhlá, že by bylo zbytečné ji sem dávat v plném rozsahu.
Tabulka 1: Výsledky optimalizace obchodního systémů využívající křížení dvou exponenciálních klouzavých průměrů
Z příkladu jednoznačně vyplývá, že z celkového počtu 100 nastavení hodnot RKP a PKP obchodního systému je pouze 20 profitabilních (viz sloupeček Net Profit označený černou barvou v Tab. 2). Jedná se tedy pouze o celkový počet 20% ziskových kombinací. A to je jednoznačně nedostatečný podíl. Cílem samozřejmě je, aby většina kombinací v rámci optimalizace byla profitabilní. Příklad, který jsme si zde představili, je opravdu velice zjednodušený a v praxi neaplikovatelný. Precizně vykonané optimalizační testy představují velmi podstatné know-how a k mému překvapení není mnoha traderům absolutně vůbec tato důležitá část hodnocení obchodního systému známá a nebo tuto problematiku nemají správně uchopenou. Jaký konkrétní postup a metodologii používám na vyhodnocování optimalizačního testu, je předmětem školení Testování robustnosti a kvalitní stavba portfolia AOS pro pokročilé.
Shrnutí
V tomto článku jsme si řekli, že optimalizační testy představují jeden ze základních nástrojů testování robustnosti nad rámec základního backtestu. Kvalitní testy optimalizací lze provádět v softwarové platformě TradeStation. Máte-li zájem se o této platfotmě dozvědět více, přečtěte si o ní více informací zde. Pro mě se jedná o naprosto klíčovou softwarovou platformu, kterou využívám pro můj algoritmický trading.
Petr
(c) AOStrading.cz
Předcházející kapitola: EasyLanguage – programovací jazyk TradeStation pro „neprogramátory“
Následující kapitola: Out-of-sample testování a optimalizace v TradeStation