Algoritmické obchodování opčních strategií

Baví vás pořád koukat do obchodní platformy? Mě teda ne. Užil jsem si toho za posledních 10 let vrchovatě a popravdě mi to nijak nepomohlo. Čím více jsem měl potřebu neustále sledovat otevřené pozice a hypnotizovat grafy, tím méně se mi dařilo. Tuto zkušenost nemám pouze já. Bavili jsme se o tom nedávno v Plzni s Vaškem Pechem, který na to má podobný názor.

Před pár lety jsem se tedy rozhodl, že s diskrečním přístupem nadobro skoncuju. Nejsem z těch, kteří diskreční obchodování odsuzují. Z vlastní zkušenosti vím, že je to funkční a ziskový přístup. Vyžaduje však daleko více pozornosti, které mám s plynoucím časem čím dál míň. Odjakživa jsem sice vyznával kvantitativní přístup, ale přechod na plně autonomní obchodování je přece jenom zcela jiný level. Přesto jsem se do toho v roce 2014 pustil a dneska mohu říct, že období, kdy jsem musel vysedávat u obchodní platformy mám už za sebou.

Dnes vám ukážu, jak jsem s algoritmickým obchodováním v roce 2014 začínal. Nejprve jsem přemýšlel, jak to celé uchopit. Nechtěl jsem se pouštět do intradenního obchodování, protože jsem tam viděl několik nevýhod. Konkrétně to byla vysoká hladina stochastického šumu, obtížně sehnatelná a drahá data a také daleko větší konkurence na nízkých timeframes. Velkou překážku jsem také viděl v samotné exekuci obchodů. U intradenního obchodování by totiž tato exekuce musela být automatizovaná. Musel bych využít TWS API, s čímž jsem sice měl zkušenost z hedge fondu Charles Bridge, ale právě proto jsem věděl, že to není uplně spolehlivé řešení a je tam hodně omezení. Nehledě na riziko chyb, které by v tomto případě mohly být hodně drahé.

Měl jsem tedy jasno, že to budou nízkofrekvenční dlouhodobější obchody, u kterých bude stačit je zadat jednou za čas ručně. Dále jsem řešil co obchodovat. Většina retailového zájmu o algotrading se soustředí na forex, ale ten jsem rovnou vyloučil kvůli manipulacím s cenovými daty a malým dohledem na činností těchto brokerů. Chtěl jsem se držet regulovaných burz a velkých zavedených brokerů. Podmínkou tedy bylo, aby se strategie obchodovala přes IB. Navíc jsem nechtěl znova objevovat kolo, tedy stavět od nuly novou strategii. Měl jsem v plánu použít některou moji stávající strategii a pouze ji plně algoritmizovat. Rozhodoval jsem se mezi komoditními spready a opční strategií na komoditní a měnová ETF. Nakonec jsem vybral opční strategii.

Algoritmizovat takovou opční strategii není vůbec jednoduché. Zjišťoval jsem možnosti opčních dat, ale ty byly jednak drahé a hlavně se mi nedařilo najít dostatečně kvalitní data feed. Mám mnohaletou zkušenost s data feedy pro futures a to i těmi komerčními. Moje firma je oficiálním ditributorem futures dat CME Group. Z této zkušenosti vím, jak je obtížné najít data feed, který by byl bez chyb, nemluvě o historických datech. Opční data navíc mají oproti futures jeden rozměr navíc (strikes). Větší množství dat proto znamená ještě větší pravděpodobnost výskytu chyb.

Z těchto důvodů jsem se na to rozhodl jít uplně jinak. Moje opční strategie byla postavena na vertikálních opčních spreadech, které jsou navíc vycentrované at-the-money. Napadlo mě, že by nemuselo být vůbec složité takovou pozici namodelovat. Navíc mě vlastně nezajímaly ceny opcí jako takové, ale spíše rozdíl cen opcí tvořících vertikální spread. Během pár minut jsem tedy vytvořil jednoduchý lineární model vertikálního opčního spreadu. Ten jsem poté naprogramoval a zkoumal jeho chování za různých tržních situací.

Možná to bude znít odvážně, ale troufám si tvrdit, že i s tak jednoduchým modelem dokážu vytvořit lepší strategii, než s historickými opčními daty. Proč? Z několika důvodů:

  • 1) Můj model zcela řeší problém chyb v datech. V reálných historických datech mezi typické chyby patří ujetá desetinná čárka nebo chybějící hodnota, resp nula místo správné ceny. Obojí znamená odchylku o jeden a více řádů. To dokáže pěkně zamávat s normalizačním algoritmem pro vstupní data do jakéhokoliv obchodního systému.
  • 2) Opce mívají obecně širší bid/ask spread oproti podkladu. U vzdálenějších expirací nebo méně likvidních podkladů to může být tak významné, že již tyto ceny nelze použít. Potom se zpravidla volí mid, který je ale někdy v reálných tržních podmínkách nedosažitelný. Nakonec tak člověku stejně nezbyde než částečně modelovat dosažitelnou cenu.
  • 3) Opce na ETF většinou nejsou k dispozici ihned po vzniku ETF. Může to trvat i několik let, než se ETF stane natolik likvidním, aby se na něj začaly obchodovat opce. Navíc to že se opce obchodovat začnou, nemusí znamenat že budou hned likvidní. V důsledku to znamená, že klidně i několik let existence ETF jsou historická opční data nepoužitelná.

Můj model samozřejmě neodpovídá realitě zcela přesně. Vzhledem k bodům 1) a 2) však může být tržní realitě blíže než historická data. Tím hlavním důvodem, proč se s ním dá postavit lepší strategie je ale bod 3). Mohu modelovat historické obchody i za období, kdy historická opční data na podklad ještě vůbec neexistovala nebo byla velmi nekvalitní. Delší období relevantních historických obchodů -> větší trénovací množina -> výrazně robustnější strategie.

Než jsem se pustil do algoritmizace samotné opční stratgie na komoditní ETF podle COT, chtěl jsem si trochu pohrát a otestovat svůj opční model. Během několika dní na podzim roku 2014 jsem proto vytvořil jednoduchý program, který uměl sám vyhledávat ziskové strategie na zadaném podkladu. Na podobném principu funguje i skvělý program StrategyQuant. Rozdíl byl ten, že můj program nevyhledával klasické long short obchody, ale simuloval vstupy a výstupy prostřednictvím zmíněných vertikálních opční spreadů podle mého modelu. Signály pro vstup poskytoval jednoduchý pattern recognition algoritmus, který jsem pro ten účel vytvořil. Ten vlastně sledoval podkladové ETF a hledal v datech cenové vzory, které v minulosti opakovaně vedly k tomu, že se cena ETF pohnula určitým směrem s nějakou statistickou významností.

Od začátku jsem se snažil programovat strategii modulárně, takže jsem bez problému vytvořil ještě program na backtest a především optimalizační podprogram. Ten hledal optimální hodnoty vstupních parametrů a hlavně testoval robustnost konkrétních nalezených strategií.

Vyzbrojen tímto jednoduchým vstupním algoritmem a optimalizačním programem, jsem to celé vypustil na několik různých ETF. S money managementem jsem se moc nepáral, takže pro jednoduchost jsem jej nastavil tak, že každý den se otevírala jedna pozice, tj jeden 2-bodový vertikální opční spread s pevně danou expirací. Vzdálenost opční expirace byla nastavena podle optimalizačního programu, resp jako nejlepší hodnota z nějakého rozsahu expirací.

Pro zajímavost přikládám některé výstupy. První je strategie na SPY s optimálním nastavením parametrů, tak jak je nalezl můj program. První graf je backtest strategie (upozorňuju že program pracuje s namodelovanými opčními daty). Druhý graf je potom test robustnosti konkrétní strategie. Všechny testy počítají s komisemi $1 per side, což odpovídá tomu kolik si účtuje za opční obchod Interactive Brokers.

spy_backtest

spy_robustness

Vidíte že to není vůbec špatné, nejlepší nalezená strategie má return/drawdown poměr 5.62, což je za téměr 20-letý backtest opravdu úctyhodné. Strategie také dokáže projít testem robustnosti a udržet si ziskovost. Dále tu mám ukázku nasazení na GLD, tedy ETF na zlato. Opět jde o 2-bodový vertikální opční spread.

gld_backtest

gld_robustness

I na GLD dokázal můj systém najít ziskovou strategii s příjemným return/dradown poměrem 1.61. Test robustnosti už ale tak pěkný není. Je vidět, že stačí trochu změnit vstupní parametry a ze ziskové strategie se stane strategie ztrátová. Takovou strategii je lepší vůbec neobchodovat. Stačí totiž, že se určitým způsobem změní chování trhu a strategie přestane fungovat.

A do třetice ještě ukázka na TLT, což je velmi likvidní ETF na americké vládní dluhopisy s dlouhou splatností.

tlt_backtest

tlt_robustness

Tady můj program dokázal poskládat strategii s Ret/DD 1.93, což už je velmi slušná hodnota. Bohužel test robustnosti už tak pěkně nevypadá.

Když jsem se s někým o těchto strategiích bavil, nejčastější otázka byla zda je obchoduji v reále. Odpověď je že nikoliv. Obecně totiž chovám velkou nedůvěru k automatickým strategiím postaveným pouze na cenových datech. To se týká i různých indikátorů jako jsou RSI, MACD, Momentum apod., což jsou vlastně jenom deriváty ceny. Důvodem je fenomén, kterému se říká „bias-variance tradeoff“. Ve zkratce jde o to, že každý machine learning algoritmus osciluje mezi stavem, kdy dokáže dobře popsat vztahy ve vstupních datech, přičemž je ale příliš citlivý na na drobné změny a situací, kdy algoritmus je sice odolný proti malým odchylkám v datech, ale nedokáže dostatečně dobře pochopit vztahy v podkladových datech. Cílem je vždy najít rovnováhu mezi těmito dvěma stavy, což je ale v praxi často obtížné. Tento problém trápí všechny algoritmické strategie. Přijde mi ale, že strategie založené pouze na ceně jsou na toto chování obzvlášť citlivé. Drtivá většina automatických strategií, co jsem za poslední roky viděl, měla vysokou variance. To znamená, že vykazovala chování známé jako „curve fitting“ nebo „overfitting“. Model se příliš uzpůsobil závislostem obsaženým v datech trénovací množiny, takže nebyl schopen správně generalizovat, tj fungovat i na out-of-sample datech které model ještě neviděl. Když jste pak takovou strategii vypustili do trhu, moc dobře nefungovala. Příkladem je strategie, kterou můj systém našel na GLD.

Jsou ale strategie, které projdou testem robustnosti a jsou tedy dostatečně kvalitní. Příkladem je strategie, kterou můj program našel na SPY. Proč tedy ani takovouto kvalitní strategii nechci obchodovat? Jak už jsem řekl, příliš nevěřím automatickým strategiím postaveným pouze na cenových datech. Možná je můj pohled zkreslený, ale myslím si že pouze v cenových datech je jenom omezené množství funkčních závislostí, které může systém využít. Tyto systémy proto tak snadno sklouzávají k overfittingu. To vlastně vyplývá i z jednoduché úvahy. Velké tržní pohyby vznikají v důsledku fundamentálních faktorů nabídky a poptávky, případně excesivního sentimentu na jednu či druhou stranu. Cenová akce je pouze důsledek, nikoliv příčina. Logicky pro úspěšný odhad budoucího tržního vývoje je nutné přihlížet i k těmto dalším faktorům, ne jenom k ceně.

Strategie na SPY by pravděpodobně v reále byla zisková. Podle mě hlavně proto, že akciové indexy mají bias směrem na long, což je výhoda kterou se můj algoritmus dokázal naučit. Stačí vhodné opční uchopení a máte pěknou ziskovou strategii, můj program je toho důkazem. Moje nedůvěra k čistě cenovým strategiím je však silnější, což je důvodem proč ji neobchoduji. Existuje mnoho algoritmických strategií postavených pouze na ceně, které projdou i testy robustnosti. Přesto i takové strategie fungují většinou jenom omezenou dobu, dokud trh danou cenovou neefektivitu nenapraví. Většina lidí obchodujících AOS to řeší tak, že si staví portfolio mnoha strategií, které průběžně doplňuje, aby tak nahrazovali strategie, které přestanou fungovat. To je platný a funkční přístup.

Přesto já osobně jdu svou vlastní cestou cestou. Nechci tvořit desítky jednoduchých strategií, které vydrží fungovat omezenou dobu. Vrátím se na začátek článku, kde jsem zmiňoval Vaška Pecha. To je ryze diskreční obchodník, který přitom úspěšně obchoduje už mnoho let. Ve svém obchodování využívá nejenom čistou cenu, ale i spoustu dalších fundamentálních faktorů, především pak COT. Právě proto se za ty roky několikrát dokázal přizpůsobit měnícímu se chování komoditních trhů. A to je přesně můj cíl. S hodně velkou nadsázkou se dá říct, že si chci naprogramovat takového vlastního Vaška. Je otázkou jestli je něco takového vůbec možné. Cílem je mít jeden systém, který bude schopen fungovat spoustu let bez jakéhokoliv zásahu z venčí. Proto nebude mít jenom několik jednoduchých podmínek, ale poměrně komplikovanou stavbu. Prestože půjde o jeden model, bude umět pochopit silně nelineární závislosti mezi vstupními daty a vlastně tak obsáhnout obrovské množství strategií. Takový model proto musí být schopen zpracovávat velké množství tržních dat a neustále se učit. Stejným způsobem pracujeme i my lidé. To je také důvod, proč i jenom jeden jediný člověk dokáže na trzích vydělávat klidně desítky let.

Pavel Hála

Pavel Hála

Jsem zakladatelem společnosti SpreadCharts s.r.o., která kromě jiného provozuje aplikaci na analýzu komoditních futures a spreadů. Dva roky jsem byl členem investičního výboru hedge fondu Charles Bridge Global Macro, kde jsem měl na starost optimalizaci opčních strategií na volatilitu a vývoj nových strategií. Od dubna do prosince 2015 jsem pracoval jako portfolio manager ve společnosti Colosseum a.s. Na finančních trzích se pohybuji od roku 2007. Od začátku jsem se zaměřoval na obchodování komodit v USA. Nejprve prostřednictvím komoditních spreadů, časem pomocí opčních strategií na komoditní ETF. Jsem absolventem Masarykovy univerzity, obor Teoretická fyzika a Astrofyzika. Působení ve vědecké oblasti od začátku výrazně ovlivnilo i můj přístup k tradingu. Proto se zaměřuji na kvantitativní obchodování. Vyvinul jsem mnoho vlastních programů na analýzu trhů, jako např vyhledávání sezonality, hledání arbitrážních hranic na spreadech na zrninách, vizualizaci dat Commitment of Traders, predikování rozpadu ETF a jiné. Posledních pár let jsem se v rámci výzkumu věnoval aplikaci nejmodernějších metod umělé inteligence (deep learning, ConvNets) na hromadné zpracování spekter vesmírných objektů. Aktuálně pracuji na využití těchto metod na algoritmické obchdování opčních strategií.

Komentáře

    Přidat komentář

    * Nezapomeňte na povinné pole.