Na svůj první článek (https://www.fxstreet.cz/olympuskohodnoceni-mos.html) jsem dostal dost ohlasů a doplňujících otázek. Většina dotazů se týká konkrétních metod testování mechanických obchodních systémů, způsobů jejích použití v běžných podmínkách (bez specializovaného aplikačního SW), nebo minimálně ideového přístupu k reálnému testování, které umožní rychle a efektivně vyhodnotit klíčové charakteristiky. Co dává právo sebevědomě prohlašovat „Tento robot je k ničemu“? Jak poznat kvalitu MOSu a získat základní údaje o varinatach jeho chování v budoucnu? Jak lze toto chování namodelovat?
Často narážím na fórech na věty typu „tomuto AOS věřím“ nebo „tomuto AOS nevěřím“. Sice souhlasím, že víra je věc intimní, a na druhou stranu může spojovat třeba národy, ale kdybych volil obchodní strategii na základě víry, dopadlo by to tragicky. Efektivnější variantou je spočítat očividní číselné koeficienty, které, jsou-li spočítány správně, na rozdíl od víry, nemohou selhat, a pro výpočet stačí tužka, papír a znalosti statistiky na úrovni bakalářského studijního programu.
Statistika nabízí metody testování modelů s povahou „blackboxů“ s určitými vstupy a výstupy, jsou-li k dispozici příklady vstupu a vzorových výstupů. Nejjednodušší metodou je rozdělení všech příkladů na dvě skupiny: trainingovou (vzdělávací) a testovou. Na trainingových příkladech se provádí hodnocení parametrů modelu, na testových se hodnotí přesnost modelu. Výsledkem vývoje dané metody je cross-testování.
Například, model, který přijímá na vstupu historii cen, a na výstupu dává prognózu budoucí ceny, může být pomocí této metody otestován. Lze pro to připravit příklady předchozího vývoje cen a následujícího vývoje procesu např. na období 2000-2007. Pak provést optimalizaci parametrů modelu na příkladech za rok 2000, 2002, 2004 a 2006, poté provést testování na létech 2001, 2003, 2005 a 2007. Varianty kombinací traningových a testových období mohou být klidně i jiné.
Problém MOSů spočívá v tom, že pro ně neexistuje sada (seznam) příkladů vstupu a vzorových výstupu. Samozřejmě lze sestavit sadů příkladů historie vývoje cen a posloupnost optimálních obchodních rozhodnutí. Optimální posloupností obchodních rozhodnutí se tady rozumí posloupnost, která vede k maximálnímu zisku s minimálním drawdownem na dané historii vývoje cen. Ale problém je v tom, že to bude optimální pouze za podmínky, že známe celou historii vývoje cen. Historie, kterou MOS inkasuje na vstupu, neobsahuje úplné informace. Pokusem přinutit MOS ke přijetí podobných globálně optimálních rozhodnutí předem dáváme MOSu nesplnitelnou úlohu. MOS musí přijímat optimální rozhodnutí v podmínkách pro ně dostupných informací. A právě posloupnost těchto rozhodnutí nám není známa. Navíc, optimálních posloupnosti obchodních rozhodnutí může být více.
Připomenu, že klíčovou charakteristikou jakéhokoliv obchodování a obchodního systému je norma zisku a ztrát (procentuální roční nárůst depozitu a relativní maximální drawdown v procentech vzhledem k počátečnímu depozitu).
Máme-li představu o drawdownu, kterého může být dosaženo v budoucnu, můžeme určit poměr objemů obchodů a současné bilance. Čim je menší, tim větší mohou být objemy nebo menší počáteční depozit. Lze se zachovat i jinak – zafixovat normu zisku a dále snižovat rizika krácením objemů nebo navýšením počáteční bilance.
Cross-testování.
Pokud má MOS nastavené parametry, je potřeba tyto parametry optimalizovat. Ale stejně důležité je také vyhodnotit „práci“ MOSu. Na optimalizačním období ukazuje MOS předem lepší výsledky, než jaké budou v reálu. Vyhodnotit MOS lze na testovém období. Vzniká však problém, jak správně zvolit toto období, jeho hranice a dobu trvání. Velmi často za přijatelné testové období se považuje 6 až 12 posledních měsíců. A přitom výsledky testování na různých měnových párech (je zvykem testovat stejné principy i u jednoduchých robotů na různých párech) se analyzují zvlášť. Je zvykem předpokládat, že pokud má MOS na konkrétním měnovém páru špatné výsledky, že to je spíše problém tohoto páru. Investor prostě svůj MOS na tomto páru nepouští. To je tragický omyl:
1. Pro získání spolehlivých hodnocení je potřeba mít k dispozici sadu nezávislých kontrolních bodů. Za takto krátké období nelze tyto body získat. V průběhu jednoho roku může působit jediný cenový trend, není vůbec známo jak se model zachová v případě působení opačného trendu.
2. Každý obchod je kontrolním bodem MOSu. Za roční období testování na jednom měnovém páru standardní (dostupný) MOS dává v průměru 30 až 70 obchodů. Tento počet je nedostatečný pro spolehlivé hodnocení charakteristik MOSu. Podle mých zkušeností je potřeba mít cca 500 obchodů za podmínky, že byly provedeny na různých měnových párech na období s délkou trvání cca 9 let. Jinými slovy, je potřeba mít minimálně 500 nezávislých kontrolních bodů, to je mnohem více, než obecně vyžaduje aplikovaná statistika. Ale je potřeba mít na vědomí, že úloha efektivního prognózování forex není standardní úlohou aplikované statistiky (z důvodu nedostatečnosti, nejednoznačnosti, vysokého podílu „hluku“ atd.)
Je očividní, že nelze používat k reálnému obchodování MOS, jehož charakteristiky jsou špatně prostudovány. Nechme, že máme MOS, který dobře funguje na minulém období a na krátkém budoucím období. Ale malý počet obchodů na testovém období a krátkost samotného období nám neumožňují dávat spolehlivé hodnocení. U podobného MOSu nemůžeme prokázat prakticky nic, nevíme, zda je přijatelný pro reálné obchodování, a zbývá asi skutečně jenom spoléhat na víru, Boha a na šamanství vodoo. Kolik to má společného s forexem a jak to dopadne asi není potřeba rozebírat.
„Kde si mám vzít 9 let testování, vždyť ještě potřebuji období optimalizace parametrů MOS?“ – zní otázka investora. Řešení existuje, i když není úplně jednoduché. Ve statistice v případě malého počtu příkladů existuje následující trik. Ze sady příkladů se vylučuje jeden příklad, na ostatních se provádí optimalizace parametrů modelu. Pak se určuje chyba modelu na vyloučeném příkladě. Vyloučený příklad se vrací do sady příkladů. Pak se vylučuje další příklad. Opakuje se proces optimalizace parametrů na zbytku příkladů a určení chyby na čerstvě vyloučeném příkladě. Tímto způsobem se to má pokračovat až do okamžiku, kdy každý příklad se zúčastnil dané procedury. Výsledky změření chyb se analyzují a ve finále máme hodnocení přesnosti modelu.
V případě s forexem, provést cross-testování lze rozdělením historického období na množství různých variant optimalizace a testování. Nechme, že historické období je 1999-2007, pak tabulka rozdělení by mohla vypadat následovně (lze ji sestavit i jinak, ale na stejném principu):
Výsledky, které máme na různých testových obdobích dále shromažďujeme do jednotné tabulky uskutečněných obchodů uspořádaných podle data uzavření pozice. Podle této tabulky lze spočítat určité průměrné charakteristiky, ale faktem je, že reálné charakteristiky vždy mají určitý rozptyl vzhledem k charakteristikám průměrným. Pro hodnocení reálných charakteristik a rozptylu je potřeba vyhodnotit pravděpodobnost všech variant vývoje procesu obchodování. Tabulka seřazených obchodů slouží v tomto případě jako předpoklad pro statistické modelování budoucího obchodování.
Statistické modelování budoucího obchodování.
I když MOS funguje na určitém předem určeném principu, element náhodnosti přináší samotná náhodná charakteristika forexu. Proto nelze přesně předpovědět výši zisku MOSu na budoucím období. Lze jenom vyhodnotit průměrné, minimální a maximální hodnoty. Před samotným testováním je nutné udělat několik poznámek:
1. Volba délky budoucího období je subjektivní věc. Moje zkušenosti říkají, že přijatelné je testové období 8-9 let a 6-měsíční budoucí období.
2. Miminální možná hodnota je taková hodnota, méně než které nebude na budoucím období dosaženo s přijatelnou mírou pravděpodobnosti.
3. Maximální možná hodnota je taková hodnota, více než které nebude na budoucím období dosaženo s přijatelnou mírou pravděpodobnosti.
4. Je potřeba modelovat skutečnost neměnnosti základních zákonu forex na delším časovém období (podrobně v článku https://www.fxstreet.cz/olympuskohodnoceni-mos.html )
Nechme, že máme MOS, 60% obchodů kterého mají kladný zisk. Průměrný kladný zisk je 50$. Průměrný záporný zisk je -50$. Průměrný čistý zisk za 100 obchodů můžeme spočítat jako (50*0.6 – 50*0.4)*100=50*0.2*100=1000$. To vypadá, že tento MOS má garantovaný kladný čistý zisk. Zisk z obchodů můžeme ukázat jako náhodnou posloupnost čísel. Není těžké vygenerovat náhodnou posloupnost ze 100 čísel podle následujícího algoritmu:
1. Náhodně se volí číslo p z úseku [0,1]
2. Je-li p>0,6, pak se posloupnost doplňuje číslem -50
3. Je-li p <= 0.6, pak se posloupnost doplňuje číslem 50
4. Není-li posloupnost do konce zformována, vracíme se ke kroku 1
Pro generaci posloupnosti podle algoritmu v Excel stačí dosadit do 100 buňek vzoreček „=IF(RAND()>0,6;-50;50)“ . Generováním podobných posloupností velmi rychle dostaneme sumu čísel, která je záporná. Příklad možné změny bilance při práci popsáného výš MOSu je prezentován na obrázcích 1,2,3. Typická situace je na obrázku 3, ale pravděpodobnost záporného čistého zisku se rovná 0,05 (1 ku 20). A to je s vědomím, že 60% obchodů jsou ziskové a rovnost podle modulu průměrného kladného a záporného zisku je pro forex velmi dobrým výsledkem.
Obrázek 1 – Příklad možného vývoje procesu obchodování s kladným průměrným ziskem vedoucím k zápornému čistému zisku.
Obrázek 2 – Příklad možného vývoje procesu obchodování s kladným průměrným ziskem vedoucím k nulovému čistému zisku.
Obrázek 3 – Příklad možného vývoje procesu obchodování s kladným průměrným ziskem vedoucím ke kladnému čistému zisku.
To je modelový příklad, ilustrující, že rizika při obchodování s MOS, který je na krátkém období ziskový, jsou dostatečně velká. Ve skutečnosti, v případě obchodování na forex, rizika jsou ještě větší. V modelovém příkladě hodnota zisku nezávisí na hodnotě předchozích zisku (Markovský proces). Při obchodování na forexu velmi často dochází ke dlouhým sériím ztrát. Intenzitu a délku těchto ztrát nelze vysvětlit obecnou shodnosti. Hodnota současných kotací částečně závisí na hodnotách předchozích kotací. V modelovém příkladě bylo usnadněno:
- - Jsou možné pouze 2 typy zisku
- - Hodnota zisku nezávisí na hodnotách předchozích zisků
- - Pravděpodobnosti hodnoty zisku jsou předem známé
V realitě jeto hodně těžší. Rozložení hodnot zisku je nepřetržité a není předem známo. Hodnoty zisků závisí na hodnotách předchozích zisků. Vše, co víme jsou výsledky obchodů. Ale základní věci můžeme určit již podle toho, např. rangovou metodou (neparametrická metoda hodnocení rozložení náhodné proměnné). Opakuji, že pro pevné hodnocení je dobré mít 500 obchodů na 9-letém testovém období a zhruba na 10 nejlikvidnějších měnových párech.
Po provedení a po získání hodnocení rozložení hodnot zisků a jiných závislosti lze namodelovat velké množství variant vývoje procesu obchodování (metoda Monte Carlo). Analýzou těchto variant můžeme vyhodnotit důvěrné hranice hodnot maximálního drawdownu a čistého zisku.
S pozdravem