Automatizované analytické workflow s naprosto minimálními náklady? Ano je to možné.
Za poslední měsíce jsem na Finančníkovi napsal hned několik článků týkajících se většího zapojování automatizace do svého obchodování. A jelikož postupně vše nabralo skutečně vysoké obrátky, chci dnes upozornit na některé věci, které vás možná nadchnou a posunou stejně jako mě.
Foto (c)123rf.com
|
Vše se u mě dalo do pohybu někdy v průběhu loňského roku, kdy jsem začal mít potřebu více pracovat na integraci a zefektivnění svých obchodních přístupů. Je možné, že za tím stál plánovaný přírůstek do rodiny (a tudíž výrazně větší nároky na volný čas), částečně patrně i potřeba vystoupit po letech z komfortní zóny a zkusit se posunout dále. Vlastně jsem neměl konkrétní plán, jen jsem vnímal, že by šlo některé věci propojit a dělat lépe. Například do intradenního obchodování více využívat některých vstupů (a pravděpodobností) z opčních strategií a tendencí ze swingových strategií. Dlouhou dobu uvažuji nad tím více automatizovat spreadové strategie a podobně. Dlouho jsem přemýšlel, kterým směrem se vydat. Obzvlášť proto, že jsem naposledy programoval v Basicu na základní škole a nikdy jsem neměl zájem stát se programátorem. Uvědomoval jsem si možnou cestu nechat si nějaké řešení naprogramovat, ale to nebylo úplně to, co jsem hledal. Jak už z předchozích článků víte, nakonec jsem se přiklonil k používání Pythonu řekněme na „uživatelské úrovni“. A zpětně musím konstatovat, že věci se postupně začaly hýbat opravdu rychlým směrem a k mé ohromné spokojenosti.
Ono totiž i s relativně malými programátorskými znalostmi a neustále zapnutým vyhledáváním v Google jde v dnešní době provádět na počítači neuvěřitelné věci.
Mé ambice byly nemalé. V zásadě jsem chtěl především vytvářet řešení, která budou svým způsobem pracovat sama a šetřit mi čas. Budou efektivní.
Pochopitelně, že už dříve jsem pracoval s různými skripty, například v Multicharts/Tradestation, ale bohužel to bylo vše hrozně fragmentované a vyžadovalo to mé neustálé zapojení. Patrně to znáte sami.
Má představa byla zadat počítači práci typu – otestuj například různé denní profily trhů a otevírací gapy. Najdeš tam nějaké základy edge? Pokud ano – zkus funkční řešení rozšířit například o testy volatility a sezónnosti. S tím, že finální výstupy bych jako tendence používal ve svých diskréčních přístupech, případně nechal obchodovat automaticky (například ve stylu obchodování FOMC dne) a skládal je do širších portfolií.
Samozřejmě, že i podobná řešení vyžadují čas tradera, ale především ten analytický, kdy člověk připraví ty správné otázky. Moje představa byla taková, že počítač bude poté sám dělat různé analýzy, které na sebe budou navazovat a ovlivňovat se podle předcházejících výsledků.
Zkoušel jsem různé cesty. Nejschůdnější se mi vždy jevila TradeStation, která se ale ukázala jako hrozně uzavřená. Díky zkušenému programátorovi to sice chvíli vypadalo, že bych mohl automatizaci dotáhnout přes jejich optimization api, ale bylo to dost komplexní, vyžadující seriózní programátorskou práci, pomalé a bohužel s řadou dost zásadních limitů. Kdo zkusil, ví.
TradeStation mám rád pro programování jednodušších skriptů a automatické obchodování, ale jako srdce mého automatického analytického workflow neobstála. Chtěl jsem něco, co bude levné, stabilní, rychlé, nabízející všechny běžné nástroje technické analýzy, disponující pokročilými genetickými optimalizacemi a především – plně externě ovladatelné mými jednoduchými skripty.
Jak už řada z čtenářů Finančníka ví, nakonec jsem řešení objevil v Amibrokeru. Tento software, který patří k těm nejlevnějším na trhu, jsem vždy tak trochu přehlížel, ale pokud hledáte podobné řešení pro plnou automatizaci svých analytických procesů, tak doporučuji zaměřit svou pozornost tímto směrem.
Amibroker zcela vše ukládá do textových nebo XML souborů, které lze externě editovat – tedy není problém jednoduchými kroky upravovat například backtestované studie, nastavovat trhy, rozsahy testovaných období, timeframe atd. Současně má OLE rozhraní (viz en.wikipedia.org/wiki/Object_Linking_and_Embedding ). S pomocí jednoduchých externích skriptů tak lze v programu dělat cokoliv – spustit analýzu, optimalizaci, WFO, updatovat databázi atd. Prostě cokoliv. A v neposlední řadě je ten program neuvěřitelně rychlý.
Rychlost je dnes relativní pojem, neboť každý výrobce o svém programu píše jen samé superlativy. Pro ukázku jsem tak připravil video porovnání optimalizace použití Amibrokeru a TradeStation 9.5 (která je rychlejší než předchozí verze, protože má podporu multithreadingu). Jde o menší optimalizaci s 300 kombinacemi na minutových datech trhu ES za 3 roky. Jedná se skutečně jen o technické srovnání, které slepě optimalizuje jednoduchou Bollinger band strategii. Amibroker má práci hotovou za 32 sekund, TradeStation 9.5 má kompletní práci hotovou za 2 minuty 25 sekund. Oba testy jsem natočil a můžete si je vizuálně porovnat (běžely na stejném počítači, oba samostatně):
-- video již není na serveru k dispozici
Nechápejte mě špatně – nikdy jsem nebyl nějak vysazen na rychlosti optimalizace. Ale pokud enginy s podobnými rychlostmi necháte běžet dlouhodobě, tak je rozdíl odvedené práce opravdu výrazný. Jako neprogramátor se někdy nestačím divit, jak je možné, že to, co v jednom programu je samozřejmé, je u druhého takový problém.
Jak vypadá například automatické spuštění optimalizace v Amibrokeru externím skriptem v Pythonu?
NewA = AB.AnalysisDocs.Open(ApxToLoad);
NewA.Run(4)
while (NewA.IsBusy):
time.sleep(0.5)
NewA.Export(ResultsExportPath);
NewA.Close()
Tedy extrémně jednoduše i pro běžného neprogramátora, jako jsem já. Výsledky jsou přitom uloženy do csv, které je poté možné dál zpracovávat, procházet filtrovat a na jejich základě upravovat spouštěné analýzy a takto pokračovat stále dokola. Prakticky 100% automatizovaně.
Musím se přiznat, že i samotný průběh hledání a testování různých slepých cest a nuancí představoval docela náročný proces. Pokud tedy řešíte podobné výzvy, kterými jsem procházel já, tak mohu toto řešení plně doporučit.
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.