Shrnutí mých aktuálních poznatků s párovým obchodováním akcií
Hledáte-li stabilitu ve svém obchodování, patrně jste již také přišli na to, že jen těžko se dá dobře diverzifikovat „podobnými systémy“. Chce to pracovat nejlépe s různými logikami a zcela odlišnými „edge“. Jeden z takových je párové obchodování akcií, které letos znovu přidávám do svého portfolia. V dnešním článku shrnuji, proč je tato oblast pro mne zajímavá.
Stručný popis párového obchodování
V párovém obchodování (kterému se říká občas i statistická arbitráž) obchodujeme relativní změnu ceny dvou akcií. Nejčastěji takových, které mají hlubší fundamentální vztah. Ceny takových akcií se pohybují podobně. V obchodování pak můžeme spekulovat na situace, kdy se ceny sledovaných trhů příliš „rozejdou“. Velmi často se totiž poměr cen obou trhů po čase zase srovná, a celá situace tak může představovat zajímavou obchodní příležitost.
Příkladem může být například pár KIM-WRI, který patřil k mým oblíbeným již před více než 10 lety, kdy jsme na téma párového obchodování měli na Finančníkovi i kurz (na kterém jsem tento pár ukazoval ve svém portfoliu). Jde o akcie dvou realitních investičních společností Kimco Realty a Weingarten Realty. Obě společnosti se pohybují na stejném segmentu trhu a působí na ně velmi podobné fundamentální vlivy. Poměr cen obou společností by se tak s vysokou pravděpodobností mohl udržovat v určitém poměrně konzistentním vztahu.
Pár (vytvořený podílem cen KIM/WRI) si můžeme zobrazovat graficky:
Černá linka je samotná close cena páru (podíl KIM/WRI násobím ještě 100, abych nemusel pracovat s příliš malými čísly). Následně jsem do grafu doplnil i další nástroje, se kterými pracuji. Červené obálky představují indikátor Bollinger bands (s periodou 20,2). Zelená linka pak jednoduchý klouzavý průměr také s periodou 20.
Obchodování páru je pak velmi jednoduché. V okamžiku, kdy se cena vychýlí mimo druhou standardní odchylku (obchoduje se mimo Bollinger bands pásma), pár shortujeme (pokud se vychýlil nad pásmo) nebo nakupujeme (pokud se vychýlil pod pásmo). Obchod ukončuji v momentě, kdy se pár vrátí ke klouzavému průměru.
Existují i další různé způsoby, jak cenu páru počítat a sofistikovaněji stavět logiku obchodního systému. Ale upřímně - toto již zásadní rozdíly ve výsledcích nedělá. Pointa párového obchodování je jinde (a dostanu se k ní níže).
Na první pohled tak vidíte, že párové obchodování je z principu opravu jednoduché. Pokud zbacktestuji výše zformulovanou logiku na páru KIM-WRI, dostanu následující equity křivku:
Ta sama o sobě není nějak závratná, ale demonstruje, že obchodování daného principu má edge i v dlouhodobém OOS. Metoda generuje peníze.
Přitom stačí už jen velmi málo, aby věci začaly být opravdu zajímavé. Dané „kouzlo“, jak asi tušíte, spočívá v diverzifikaci – obchodování více párů najednou.
Takto pro ilustraci vypadá hrubý backtest mého aktuálně obchodového portfolia, kde pracuji současně s 10 páry.
Na portfolio páru aplikuji úplně stejný kód, který je popsán výše. Systém tak obchoduje na dlouhou i krátkou stranu a obchody jsou na obě strany velmi pěkně vyrovnány:
Výsledná equity křivka vytváří větší množství velmi stabilních výsledků (systém obchoduje s vysokou úspěšností 76 % a RRR blízko 1:1). Není divu, že velmi zajímavě vypadá risk i z pohledu monte carlo analýzy:
Šance, že systém bude vydělávat peníze i nadále, jsou zde opravdu vysoké.
Pokud párové obchodování shrnu, tak základní charakteristiky, které mi na daném stylu přijdou velmi atraktivní jsou následující:
Samotný obchodní princip (plně popsaný výše), je velmi jednoduchý a srozumitelný. Obchodní logiku jakkoliv neoptimalizuji. Na všechny páry je aplikována stejně.
Strategie neobchoduje „predikce časových řad“, ale vztahy mezi dvěma akciemi, které lze předpovídat s mnohem vyšší pravděpodobností a robustností.
Strategie je tzv. market neutrální. Ve svém přístupu neaplikuji žádné globální filtry na býčí či medvědí trhy. Vztahy mezi jednotlivými akciemi fungují stále stejně (maximálně jsou pohyby volatilnější).
Z uvedených principů mi párové obchody vždy přišly zajímavé. Jak už jsem i zmínil – řada z vás pamatuje informace, které jsme na Finančníkovi sdíleli před 10 lety.
Přesto jsem sám nikdy nealokoval v portfoliu párům více kapitálu, což letos plánuji změnit.
Proč jsem se párům nevěnoval v posledních letech více? Aneb, kde je reálná „pointa“ párového obchodování?
Největším důvodem jsou náročnější exekuce, pokud je děláme ručně. Přeci jen pokud člověk obchoduje 10 párů, je to 20 akcií. Obchodů je poměrně hodně a skoro každý den se tak „něco děje“. Páry je také nejlepší obchodovat na konci dne, např. pomocí MOC příkazů, kdy se dostávají nejlepší plnění v rámci uzavíracích aukcí. To už je při ručním obchodování poměrně otročina a v evropský večer již u počítače sedět nechci. A tak jsem pozornost věnoval v tradingu více jiným směrům.
Poslední roky se ale naplno věnuji nejrůznějším automatizacím, a tak automatizované exekuce párů již pro mě nejsou problém. Ostatně i řada absolventů swingového workshopu dnes na Finančníkovi zadává denně automatizovaně více příkazů, než je potřeba u párového portfolia, jen u systému Mopull limit a jistě by mi potvrdila, že to technologicky problém není (a vzhledem k automatizaci není třeba s tímto trávit žádný čas). Tím, že jsem se sám posunul v oblasti automatizací exekucí, se pro mě najednou stávají vysoce atraktivní přístupy, které jsem dříve právě pro tento důvod neupřednostňoval.
A také druhý hlavní důvod se točí kolem technologií a skriptování. Součástí systému párového obchodování je i výběr párů, které budeme obchodovat. Toto, jednoduše řečeno, představuje testování různých vazeb mezi akciemi, zkoumání korelací a kointegrací. A výběru párů, které mají historicky tendenci „vracet se k průměrné hodnotě“. Tedy zásadně se nerozcházet. A jak už to bohužel bývá, běžné retailové programy určené pro trading nejsou na podobné sofistikovanější operace vůbec dělané. Před lety jsem to řešil vlastním systémem, který mi pomohl dát dohromady programátor používající tradiční, spíše webové technologie (PHP atd.). Systém do určité míry fungoval, ale nebyl jsem příliš schopen jej rozšiřovat o nové nápady a taktiky. Ohromný zlom pro mě přišel až se studiem Pythonu (viz například můj tři roky článek Petrovy postřehy z cesty k algoritmickým strategiím). U něj jsem pochopil, že vše, co v tradingu potřebuji, lze často v Pythonu vytvořit pomocí pár řádků kódu. U párů toto není výjimkou – ostatně viz základní workflow v Pythonu, které má řada z vás k dispozici z mé přednášky na QuantExpu. V té době jsem se začal k párům vracet vyzbrojen především potřebnými technickými znalostmi.
Shrnutí
Dnešním článkem jsem chtěl především poukázat na zajímavý směr, který stojí za zkoumání pro všechny, kteří hledají další způsoby diverzifikace. Na výše uvedených příkladech můžete sami vidět základní charakteristiky tohoto stylu obchodování. Otestovat si jeden pár typu KIM-WRI pak není problém ani v běžných obchodních platformách. Sami pak můžete zkoušet testovat další páry a posouvat se v této oblasti vpřed.
Pokud hledáte technickou inspiraci, „jak konkrétně na to“, tak jsem pro všechny účastníky uzavřené skupiny TechLabu připravil videotutoriál Párové obchody v Amibrokeru obsahující všechny potřebné kódy a popisující, jak se v Amibrokeru dostat od samotné akcie k backtestu párového portfolia.
Má přednáška na QuantExpo
Pražské QuantExpo bude především o zahraničních osobnostech a jsem moc rád, že se do Prahy podařilo pozvat velmi zajímavé tradery s praktickými tématy. Jedním ze dvou česky prezentovaných témat (vše ostatní bude samozřejmě do češtiny tlumočeno) bude má přednáška. Co jsem si připravil a proč si myslím, že je dobré se na téma trochu připravit?
>
Systematické a algoritmické obchodování představuje mix několika základních dovedností – nápadů, datových analýz a programování. Myšlenek a prezentovaných obchodních přístupů je dnes k dispozici prakticky neomezené množství a každým dnem jsou publikovány nové. Málokterý obchodník je přitom zkušený trader a současně dobrý programátor v jedné osobě. A tak vzniká u mnoha traderů otázka – jak efektivně dostupné myšlenky ověřovat a adaptovat? Jak smysluplně vypadající modely rychle otestovat coby obchodní systém a najít takové, které stojí zato předat k robustnějšímu naprogramování?
Více než kdy jindy přichází ke slovu potřeba prototypování. To znamená velmi rychlého otestování obchodní myšlenky bez toho, aniž bychom museli dobře ovládat programování, složitě vytvářet dlouhé programovací kódy, ladit je a kompilovat. Ideálně s možností zcela volného využívání všech informací bez omezení ze strany používané platformy. Tedy například s využitím libovolných přístupů a dat (kdy osobně vidím velký prostor ve využívání a kombinování různých alternativních dat), bez nutnosti data složitě připravovat a čistit a s naprostou flexibilitou kombinování všeho, co kombinovat chceme (různé systémy do portfolií atd.). A bohužel tradiční dostupné softwary na toto stavěné nejsou.
Na QuantExpo tak chci ve své přednášce ukázat, jak snadno lze pro prototypování použít Python. Jeden z hlavních bezplatných nástrojů, který se dnes ve finančním světě pro tyto účely používá čím dál více. Pochopitelně nepůjde o „kurz používání Pythonu“, spíše plánuji prezentovat, že s hotovými moduly, které jsou pro Python dnes bezplatně k dispozici, jde prototypovat systémy opravdu velmi jednoduše. Vše budu ukazovat na konkrétním příkladu prototypování myšlenky obchodního systému statistické arbitráže, což je z mého pohledu mj. i zajímavý diverzifikační přístup do portfolií zejména v době vyšší volatility. Krok za krokem uvidíte, jak se až překvapivě rychle můžeme dostat od základní myšlenky k finální equity křivce i s tím, že pro výpočet hodnoty hedge pozice použijeme pokročilejší statistickou funkci.
Celý komentovaný kód pak budu poskytovat ve formátu jupyter notebook, ve kterém je velmi snadné jej upravovat, zkoušet a rozvíjet. Z mého pohledu tak jde o ideální start pro seznamování se s Pythonem, kdy trader nezačíná studiem nudných principů programovacího jazyka (byť jednoduchého), ale řeší konkrétní, pro něj zajímavou situaci. A teprve ta ho „donutí“ k tomu, aby se naučil i potřebné základy jazyka. Sám jsem s Pythonem začínal touto cestou a jsem za ní nesmírně rád, protože mi v důsledku v tradingu velmi rozšířila mé možnosti a schopnosti.
Pokud vás téma prototypování obchodních přístupů s Pythonem zajímá a chcete naplno využít informace, které budu na QuantExpo předávat, doporučuji zkusit si Python nainstalovat a začít jeho prostředí zkoumat (hlavně si najděte tutoriály na spuštění jupyter notebooku). Pokud nejste programátoři a nechcete řešit postupné doinstalování různých knihoven, tak bych začal stažením balíku Anaconda – určitě použijte instalátor s Pythonem 3.6. Po přednášce budete tak moci ve studiu hned pokračovat s pomocí mého dodaného Notebooku. A samozřejmě v rámci QuantExpo můžeme hned osobně probrat otázky, na které jste při zkoumání prostředí Pythonu z pohledu tradera narazili.
A mimochodem – minimálně Robert Carver má ke své přednášce o optimalizaci portfolií také k dispozici Python kódy. A co jsem viděl, tak ve stejném jazyce publikoval kód svého systému akciového portfolia i Andreas Clenow. S postupně získávanými znalostmi tak budete schopni hned prototypovat i jeho myšlenky (s přímo dodaným kódem), a rychle tak zapracovávat know-how do vlastních workflow.
Se všemi se těším na setkání 4.11.2017 v Praze na QuantExpo nejen na mé přednášce.