Praktické příklady v oblasti – finanční

Z ryze praktického pohledu jsou GA jednoduše nástrojem, který vám pomůže mnohem rychleji a efektivněji zvládnout optimalizaci vícero proměnných v rámci vašeho obchodního systému. Díky rychlosti a efektivitě GA je však možné využití daleko širší. GA se dnes v podstatě používají dvojím způsobem: k navrhování obchodních systémů a pokročilé optimalizaci.

Navrhování systémů s pomocí GA

Této fázi se říká také D&P process neboli Design & Prototype. Pokud jste někdy v minulosti zkoušeli stavět obchodní systémy, pak víte, jak pracné může něco takového být. Řekněme, že máte například jednoduchou ideu, že otestujete AOS s myšlenkou vstupovat long nebo short do trhu e-mini Russell vždy, když NYSE TICK překročí určitou úroveň svého klouzavého průměru. Idea jednoduchá, existuje zde ale příliš mnoho otázek k praktické realizaci:

  • Jaký typ klouzavého průměru použít (SMA, EMA, WMA, KAMA, TMA apod.)?
  • Jakou periodu klouzavého průměru použít?
  • Jaký zvolit výstup?
  • Je rozumné aplikovat posun na BE? O kolik a kdy?
  • Je rozumné aplikovat profit target? Na jaké hodnotě?
  • Měl bych aplikovat nějaký další filtr? (Mám například 3 nápady na filtry a potřebuji všechny otestovat).
  • Jaký timeframe zvolit?

Vidíte, že už z otázek výše plyne obrovské množství možných kombinací/permutací. Přitom některé kombinace mohou být výrazně lepší než jiné (a některé kombinace nemusí fungovat vůbec), takže nemáte jinou možnost než všechny možné kombinace vyzkoušet. K tomu je třeba vyzkoušet i různé periody nastavení, takže pokud budete opravdu efektivní, máte práci minimálně na celý další týden.

Existuje ale i jiná možnost – zapojení GA. Pokud disponujete inteligentním softwarem a trochou programátorského umu (pár tipů na software zmíním na konci), pak jednoduše nastavíte do GA softwaru veškeré potřebné idikátory, rozsah parametrů – a o zbytek už se postará počítač. GA totiž mohou pracovat s jednotlivými nástroji (indikátory) jako s takzvanými „switches“ (přepínači), takže samy postupně zkoušejí kombinovat různé indikátory dohromady, dokud najdou tu pravou kombinaci, která nabízí největší potenciál. GA budou postupně zkoušet různé typy klouzavých průměrů, různé druhy výstupů, různé hodnoty nastavení a dokonce i různé timeframy, dokud nenajdou to, co po nich žádáte. A pokud GA žádné řešení nenajdou, tak jednak víte, že zkrátka a dobře vaše idea nemá potenciál a jednak jste s nefunkční ideou nestrávili více jak 2 hodiny času.

Optimalizace s pomocí GA

Optimalizace s pomocí GA je opět něco úplně jiného než klasická brute force metoda. První výhodou je rychlost. Nedávno jsem například prováděl optimalizace position sizingu. Jednalo se o jednoduchý nápad mého kamaráda (jinak našeho bývalého studenta, dnes již úspěšného tradera na plný úvazek), kdy dle 20 různých scénářů systém zvolí, zda použít 0-3 kontrakty do aktuálního obchodu. Hlavním cílem mé optimalizace bylo najít pro každý ze scénářů optimální počet kontraktů, což znamená, že existovalo celkem 4 na dvacátou = 1099511627776 možností. Při testu 1 možnosti za vteřinu bych na optimalizaci čekal 35 000 let(!), s GA optimalizací většinou vše zvládnu do druhého dne (to už je opravdu pořádé ušetření času). To vše navíc s cílem maximálního profitu s minimální drawdownem (FF).

Možná se nyní ptáte, jak je to s robustností takových výsledků a zda se nejedná o extrémní přeoptimalizaci? Správná otázka. I v tomto ohledu jsou GA mnohem dále než dnes již mimořádně zastaralá technika brute force (obzvláště, pokud jí provádíte v prehistorických programech bez podpory více jádrového výpočtu, jako například Genesis Trade Navigator). GA totiž fungují opět trochu jinak a tak namísto takzvaných „lokálních“ optimálních hodnot hledají „globální“ optimální hodnoty. Jinými slovy, GA už samy od sebe berou v potaz nutnost, aby fungovaly i okolní možné parametry a aby tudíž finální výsledek byl nejenom funkční, ale také robustní. Inteligentní software (viz dále) jde pak ještě dále: automaticky již rozdělí testovaná data na in-sample a out-of-sampe, optimalizaci provede na in-sample datech a funkčnost následně okamžitě ověří na out-of-sample datech. To vše zcela automaticky, takže opět máte mnoho ušetřené práce a času. Dobrý GA software tedy již v základu ošetří, abyste se vyhnuli možné přeoptimalizaci. Efektivnost GA v ohledu na možnou přeoptimalizaci je mnohem vyšší než klasická brute force metoda.