Automatizované testování hypotéz a obchodních myšlenek
Ve svém intradenním obchodování rád testuji své hrubé myšlenky pomocí jednoduchých automatizovaných obchodních strategií nebo jejich částí. Stejně, jako jsem to dělal na ukázce v minulém článku. Na delší historii dat mohu velmi rychle poznat, zdali má daná myšlenka dobrý základ a hlouběji ji pak rozvíjet do konkrétního obchodního plánu třeba ve svém diskréčním tradingu. Podobné testování je dnes velmi jednoduché a na funkčním příkladu z minulého článku si dnes ukážeme, jak konkrétně na to.
Cílem článku je tedy ukázat, že automatizované testování nejrůznějších myšlenek není díky ohromným množstvím dostupných nástrojů složité a přitom může ušetřit spoustu času. Sám je používám především na dílčí testování. Například začnu v trhu vnímat určitý cenový pattern, který se jeví coby jednoznačně definovaný a potenciálně mechanicky obchodovatelný. Situaci během pár minut hrubě naprogramuji a podívám se, jak by vypadalo hypotetické obchodování situace za poslední dva roky. Často zjistím, že pattern pouze vypadá funkčně z pohledu například posledních dvou týdnů, ale před pár měsíci se trh choval v oblasti patternu zcela odlišně. Jindy narazím na situaci, která se tváří robustně i z dlouhodobého pohledu a takovou pak detailně zkoumám a rozvíjím.
Jak tedy konkrétně na automatizované testování hypotéz? V první řadě potřebujeme software umožňující vytváření vlastních kódů pro simulované obchodování a vyhledávání námi popsaných situací. Takových programů dnes existuje ohromné množství, ovšem výrazně se liší náročností na vytváření kódů z pohledu uživatelů ne programátorů. Zůstanu-li u obchodování komodit a akcií, pak nejdostupnější program je patrně NinjaTrader, v jehož bezplatné verzi lze vytvářet sofistikované kódy a aplikovat je na historická data. Ovšem většinou jen pokud patříte mezi zkušenější programátory a dokážete si sehnat do NinjaTrader kvalitní dlouhodobá data v příslušných formátech. Podobné je to třeba se Sierra Chart. Tento program používám velmi spokojeně pro intradenní obchodování, ale pokud jsem v něm kdy programoval cokoliv automatizovaného, velmi rychle jsem dosáhl svých limitů coby neprogramátora.
Nakonec tak používám pro testování již mnoho let TradeStation, což je software spojený s účtem u stejnojmenného brokera. V rámci tohoto článku se nechci pouštět do hlubšího popisu tohoto řešení, jen chci ukázat, jaké přístupy dnes v tradingu používám a jak zhruba náročné to je. Mimochodem – u TradeStation je celá platforma zdarma (včetně historických dat), pokud za měsíc zobchoduji 10 kontraktů, což v rámci intradenního obchodování není žádný problém.
Řekněme, že se rozhodneme prozkoumat myšlenku uvedenou v minulém článku.
Chceme tedy otestovat následující pravidla:
1. Trh je v uptrendu. Za uptrend je považována situace, kdy se trh obchoduje nad svým 200denním klouzavým průměrem.
2. Následně se generuje nákupní signál v okamžiku, kdy trh uzavírá nejníže za posledních sedm dnů (close úsečky je níže než posledních sedm close).
3. Pozice je ukončena v momentě, kdy trh uzavírá nejvýše za posledních sedm dnů (close úsečky je výše než posledních sedm close).
Celý tento jednoduchý systém je možné v TradeStation napsat na dva řádky poměrně srozumitelného kódu:
Podmínky pro vstup:
If Close > Average(Close, 200) and Close
Podmínka pro výstup:
If MarketPosition = 1 and Close> Highest(Close[1],7) Then Sell this bar at close;
Toť vše. Navíc vidíte, že kód je srozumitelný v okamžiku, kdy umíte alespoň trochu anglicky. Například první řádek obsahuje nejprve podmínku Close > Average(Close, 200) vyhledávající situace, kdy Close aktuální úsečky je nad svým 200denním klouzavým průměrem (kód aplikujeme na denní data). Druhá podmínka Close vyhledává situace, kdy denní úsečka uzavírá níže, než bylo uzavření kterékoliv z předchozích sedmi úseček. Pokud jsou obě podmínky splněny, je na close baru (buy this bar at close) otevřena dlouhá pozice.
Pochopitelně, že kód jde nejrůzněji modifikovat – můžeme nakupovat za market následující úsečku a podobně. Ještě jednou raději upozorním, že daný kód nepředstavuje kompletní obchodní systém, ale hrubé testování určité myšlenky.
Výstupní podmínka obsahuje opět jen dvě podmínky. První MarketPosition = 1 zjišťuje, zdali je systém v dlouhé pozici, a pokud ano, pak čeká na splnění podmínky Close> Highest(Close[1],7) – tedy, že trh uzavře výše než kdykoliv v předcházejících sedmi úsečkách. Pokud jsou obě podmínky splněny, je na close baru dlouhá pozice uzavřena.
Následně stačí kód aplikovat na historická data. A to je další oblast, kde mi TradeStation přijde hodně efektivní, neboť zde mám všechna historická data k dispozici, aniž bych je musel složitě importovat nebo upravovat. V minulém článku jsem popisovaný systém aplikoval na trh SPY. V rámci testování různých myšlenek zkouším robustnost na různých trzích. Rozhodnu se například pro e-mini Russell 2000 a chci systém aplikovat jen na denní seance.
Do TradeStation zadám symbol @TF.D (denní seance trhu e-mini Russell 2000) a příslušnou historii – například posledních deset let:
Podle zvoleného timeframu a délky historie počkám na načtení dat a aplikování připraveného kódu. TradeStation mi na načtených datech zobrazí oblasti vstupu a výstupu:
A pochopitelně si mohu prostřednictvím nabídky View > Strategy performance report zobrazit jak konkrétní equity, tak i podobné statistiky aplikace daného kódu na zvolený trh:
Na první pohled z podobných výsledků vidím, že daná myšlenka má něco do sebe. A to hned na několika různých akciových indexech a mohu ji rozvíjet dál. Třeba i tak, že ji určitým způsobem zapojím do diskréčního intradenního obchodování. Přeci jen 75% pravděpodobnost s průměrným RRR více než 1:2 je něco, co napovídá o určitém silné krátkodobé tržní tendenci.
Shrnutí
Cílem dnešního článku bylo ukázat, že testování různých myšlenek je dnes poměrně snadné a není třeba se bát programování. Jen je nutné si najít ten správný nástroj, který bude spolehlivý a současně použitelný i z pohledu vašich schopností. Jak jsem uvedl, podobných nástrojů existuje dnes celá řada, a to včetně bezplatných. Určitě tak stojí zato si alespoň některé vyzkoušet a následně je používat i v případě, že člověk nevyvíjí automatizované obchodní strategie. Zejména při obchodování nejrůznějších patternů je možné pomocí zkoumání trhů dílčími mechanickými kódy ušetřit spoustu času.
Petr Podhajský
Fulltime obchodník věnující se tradingu více než 20 let. Specializace na systematické strategie obchodované na futures a akciích. Oblíbený styl obchodování: stavba automatizovaných portfolio systémů, které využívá i při správě většího externího kapitálu.