V minulé kapitole jsme se zabývali optimalizačními testy, které patří mezi základní nástroje testování robustnosti. O optimalizačních testech mluvíme především v návaznosti na plnohodnotné využívání sofistikované softwarové platformy TradeStation. Další nástroj, který v této platformě velice intenzivně využívám a v vnímám ho jako zásadní konkurenční výhodu oproti jiným platformám, je Cluster Walk Forward optimalizace (dále „CWFO“). Předtím, než Vám vysvětlím princip a největší výhody CWFO v příštím článku, je zapotřebí, abyste naplno pochopili princip testování a validace na out-of-sample datech. Out-of-sample testování je totiž fundamentálním základem CWFO. Pro plnohodnotné uchopení problematiky je ale nejdříve zapotřebí znát,jaký je rozdíl mezi in-sample a out-of-sample historickými daty. Když provádíte backtest na historických datech, vždy je dobré si ponechat určitou časovou periodu na otestování validity výsledků. Konkrétně máme-li k dispozici soubor 10 let historických dat, rozdělíme si tento soubor v námi zvoleném poměru. Tento poměr si každý může zvolit dle individuálního zvážení. Mnoho traderů například využívá poměru 70% In-Sample data, 30 % Out-Of-Sample data. Máme-li tedy soubor 10 let historických dat, rozdělíme si ho na 2 části:
70% = 7 roků historických dat pro In-Sample
30% = 3 roky historických dat pro Out-Of-Sample.
Na Obrázku 1 můžete vidět, jak rozdělení In-Sample a Out-Of-Sample vypadá graficky.
Obrázek 1: In-Sample a Out-Of-Sample testy
Nyní máme určeno, kolik časového úseku z dostupných dat vymezíme na in-sample a out-of-sample data. Nyní vykonáme backtest obchodního systému na in-sample datech (prvních 7 roků dat). Pokud v rámci in-sample testování pro určité nastavení hodnot parametrů (o hodnotách parametrů jsme si řekli více v předchozím článku) získáme stabilní a ziskové výsledky, ten samý backtest obchodního systému pro stejné hodnoty parametrů potom vykonáme na out-of-sample datech (zbývající 3 roky dat). V případě, že se nám ukáže, že obchodní systém je stabilní a ziskový i na out-of-sample datech, validujeme si tím funkčnost systému na neznámých datech. Jinými slovy toto rozdělení na dva vzorky dat je velmi důležitým procesem hodnocení potenciální ziskovosti automatického obchodního systému (dále „AOS“), neboť nám umožňuje testovat pravidla dle určitého testovacího kritéria na neznámém vzorku dat (out-of-sample), který nebyl součástí tvorby, neboli optimalizace AOS. Jedním z testovacích kritérií může být například podmínka, že out-of-sample výsledky jsou stejně efektivně ziskové jako in-sample výsledky. Vzhledem k tomu, že in-sample a out-of-sample data mívají vždy jiné procentuální poměry (například 70% in-sample, 30% OOS out-of-sample, nebo 60% IS a 40% OOS, 80% IS a 20% OOS), musíme tuto efektivitu standardizovat přepočtením ziskovosti na den, jelikož například 70% IS bude vykazovat samozřejmě vyšší zisk než 30% out-of-sample dat. Výsledek pak bude určité procento efektivity out-of-sample výsledků od 0% výše. Pokud se efektivita out-of-sample dat bude rovnat 55%, budeme konstatovat, že AOS je na OOS datech z 55% výkonný vůči IS datům. V TradeStation tento procentuální poměr reflektujr Robustness Index, který nám tuto efektivitu vyjadřuje v procentuálních hodnotách. Pokud by Robustness index dosáhl hodnoty 120%, znamenalo by to, že AOS byl efektivnější na out-of-sample datech. Jak se Robustness index konkrétně počítá není předmětem tohoto článku, ale určitě to zjistíte v dalších článcích, které pro Vás chystám.
K testování in-sample a out-of-sample si přidáme další nástroj a tím je optimalizace AOS. V předchozím článku jsme si vysvětili optimalizaci na případě obchodního systému křížení dvou klouzavých průměrů. Příkladů není nikdy dost. Protentokrát však do problematiky optimalizace hodnot parametrů rovnou zakomponuji i rozdělení historických dat na in-sample a out-of-sample.
Obchodní systém nazveme HIGHLOWCLOSE CONDITIONS. Pro jasnou ilustraci se zaměříme pouze na vstupní podmínky a jakékoliv výstupní podmínky pro demonstrativní účely tentokrát necháme stranou. Vstupní podmínka AOS na stranu long je: Když aktuální Low dnešního dne je vyšší než Close předchozího dne, pak vstoupíme na aktuálním High dnešního dne příkazem buy market. Nyní si představme, že bychom podmínku close předchozího dne změnili za podmínku close 2 dny nazpět, nebo close 3 dny nazpět, či close 4 dny nazpět atd. Proč bychom měli mít vůbec zájem tuto optimalizaci provádět? Našim cílem je přeci vždy za každých okolností nalézt co nejefektivnější AOS – tedy co nejvyšší Robustness Index, protože vycházíme z premisy, že právě tyto systémy mají největší potenciál ziskovosti v budoucnosti při živém obchodování. Ouf-of-sample data nám totiž simulují živé obchodování, neboť s nimi nakládáme jako s neznámými daty. pro možnost vykonání optimalizace na in-sample a out-of-sampe datech si ale nejprve musíme stanovit nějaké testovací kritérium a metodiku, podle které budeme vybírat nejlepší in-sample nastavení parametrů hodnot pro validaci na out-of-sample datech. Tuto metodiku profesně nazýváme tzv. Fitness function, podle které budeme AOS a konkrétní nastavení hodnot parametrů hodnotit a vybírat. Může to být například nejvyšší hodnota Profit factoru, Net profit, Net Profit/Max. Drawdown atp. Pro diskréčního tradera je prakticky nemožné danou optimalizaci na in-sample datech vykonat, neboť se jedná o neskutečně časově náročný proces. Pro tradera, který pracuje s automatickými obchodními systémy, ale optimalizace vůbec nepředstavuje neřešitelný problém. Zkrátka a dobře definuje proměnnou close dne X dní nazpět s tím, že X může testovat od 1 až do libovolného počtu dní. Pokud si automatizovaný trader vybere proměnnou X od 1 do 10, vykoná pak softwarová platforma jako TradeStation optimalizační testy za něj (v tomto příkladě by se vykonala optimalizace s celkem 10 testy). V rámci tohoto optimalizačního testu trader zjistí, že nejlepší výsledky backtestu na in-sample datech pro vybranou fitness function (v tomto příkladě NetProfit/Max Drawdown) vykazuje Close 2 dny nazpět, protože z 10 provedených testů právě Close 2 dny nazpět vykazuje nejvyšší ziskovost při nejnižším drawdownu. Nyní tedy aplikujeme obchodní strategii HIGHLOWCLOSE CONDITIONS s Close 2 dny nazpět na Out-of-sample data. Out-of-sample data nám určitým způsobem nahrazují budoucí data a poskytují nám důležité informace o tom, jestli má obchodní systém silné předpoklady, že bude v budoucnosti na živých datech vydělávat reálné peníze. Metrikou pro toto hodnocení je pak již zmiňovaný Robustness Index. Jinými slovy pokud obchodní systém v rámci backtestu na in-sample datech bude vykazovat dobré výsledky dle fitness function v čase a out-of-sample test nám tuto stabilitu ziskovosti potvrdí, pro tradera je to velice dobrý signál, že obchodní systém může být robustní. Slovo robustní si jako tradeři rozhodně zařaďte do svého slovníčku, neboť se s ním budete setkávat velmi často. Robustní obchodní systém je ten, který je schopný adaptovat se na měnící se podmínky v trhu a být v dlouhodobém horizontu stále ziskově stabilní. Pozor, neznamená to, že by robustní obchodní systém nemíval ztrátové období! Pouze se ta ztrátová období pohybují v mezích, které jsme na základě backtestu dokázali předpovědět a nadefinovat. Za pomoci kombinace in-sample a out-of-sample testu můžeme robustní obchodní systémy s vysokou pravděpodobností identifikovat. Bylo by však bláhové domnívat se, že nám k tomu stačí jeden obyčejný in-sample a out-of-sample vzorek dat. Od toho je tady právě komplexní a velice propracovaná Cluster Walk Forward optimalizace (CWFO) dostupná v platformě TradeStation, která nám vykoná obrovské množství in-sample a out-of-sample testů v různých procentuálních poměrech (např. 80% IS a 20% OOS nebo 70% IS a 30% OOS) rozdělení dat na in-sample a out-of-sample pro různá časová období. CWFA je natolik komplexní záležitost, že se ji budeme intenzivně věnovat v příštím článku.
Na závěr si ukážeme dvě equity křivky rozdělené na in-sample a out-of-sample data. Na Obrázku 2 vidíme, jak vypadá slibný out-of-sample test s potenciálně vysokou hodnotou Robustness Indexu a jak vypadá out-of-sample test, který jasně naznačuje, že AOS je na neznámých datech nefunkční a bude mít tedy nízkou hodnotu Robustness Indexu (Obrázek 3).
Obr. 2 In-sample test (modrá křivka) obchodní strategie vykazuje nadějné výsledky, protože equity křivka má tendence tvořit neustále nový vrchol. V tomto případě out-of-sample test (zelená křivka) naznačuje, že AOS má potenciál vydělávat na budoucích datech v živém obchodování, protože na neznámých datech v podobě out-of-sample testu vykazoval stabilitu a korelaci (podobnost distribuce zisků a ztrát) s in-sample daty. Samozřejmě, že je zapotřebí ještě provést další komplikovanější testy v podobě Cluster Walk Forward Analýzy.
Obr. 3 In-sample test (modrá křivka) AOS vykazuje nadějné výsledky, neboť equity křivka má tendence tvořit neustále nový vrchol. Bohužel nevyhovující Out-of-sample test (červeně vyznačená křivka) nám jasně naznačil, že obchodní systém nemá potenciál vydělávat na budoucích datech v živém obchodování.
Shrnutí
V tomto článku jsme si vysvětlili princip in-sample a out-of-sample testování v kombinaci s optimalizačními testy. Vysvětlili jsme si k této látce základní pojmy jako testovací kritérium a fitness function. Je zapotřebí, abyste těmto pojmům v maximální možné míře porozuměli, neboť s nimi budeme pracovat v rámci Cluster Walk Forward optimalizace v příštím článku.
Petr
(c) AOStrading.cz
Předcházející kapitola: Význam optimalizace parametrů obchodního systému v TradeStation
Následující kapitola: Walk Forward analýza v TradeStation – základní nástroj testování robustnosti AOS