Petrovy postřehy z cesty k algoritmickým strategiím
Nedávno jsem s jedním traderem rozebíral mé zkušenosti s vyděláváním peněz pomocí algoritmického obchodování. Chtěl zejména vědět, jak jsem se do této oblasti dostal a jak by měl sám nejefektivněji začít. A jelikož je to příběh docela zajímavý, připravil jsem jej i na Finančníka.
Foto (c)depositphotos.com
|
Proč jsem algoritmicky dlouho neobchodoval?
Tato otázka se přímo nabízí jako první a naštěstí je na ní jednoduchá odpověď. Protože nejsem programátor a principy, které vnímám v trzích jako perspektivní, jsem neuměl algoritmicky zpracovat. Ano, TradeStation jsem si pořídil již asi před 9 lety, ale naštěstí jsem velmi rychle pochopil, že práce s jednoduchými indikátory a jejich optimalizace není to, co bych v trzích považoval za perspektivní a netrávil tím mnoho času. Vždy mě zajímaly principy vycházející ze základních fundamentů fungování trhů – sezónnost, časový rozklad prémia opcí, intradenní obchodování v kontextu profilů a orderflow. A to jsou taktiky, které nelze v retailových platformách snadno algoritmizovat (zejména z pohledu situace před několika lety). Jistě, i dříve šlo naprogramovat různé věci, ale to už hovoříme o profesionálním programování, kterému jsem prostě nikdy neporozuměl (i díky tomu, že jsem nikdy vlastně neměl nějakou zásadní motivaci skutečně chtít se jazyky jako C++ naučit a stavět si své platformy).
A co služby programátorů?
Pokud si něco nedokáži udělat sám, je vždy možné požádat někoho jiného. Jistě a sám jsem spoustu podobných pokusů dělal. A byla to dobrá škola, ze které pro mě vyplynula řada ponaučení. Především v tom, že algoritmické obchodování představuje kontinuální vývoj, neustálé kolečko prototypování a testování nových myšlenek. Tedy vesměs nefunguje to, že máte nějakou základní myšlenku, tu necháte naprogramovat a s výsledkem bude možné následně pracovat spokojeně X let. To funguje u jednodušších nástrojů (typu plugin do SierraChart), ale s komplexnějšími implementacemi tuto zkušenost nemám. Obzvlášť ve fázi, kdy se vytváří prvotní algoritmy.
A v tom bývá právě zakopán pes – trader potřebuje ve výzkumu flexibilitu. Pokud implementace nové myšlenky vyžaduje dlouhodobé úsilí externího programátora/programátorů, tak to ztrácí efekt a velmi těžko se dochází k nějakému cíli. Obzvláště, když řada testů končí tak, že se prostě hypotéza neověřila a je potřeba se přesunout na testování dalších.
Z dnešního pohledu vnímám, že právě ona prototypovací fáze byla něco, co mě dříve v dosažení úspěchu v algoritmickém obchodování chybělo. Samozřejmě jsem „prototypoval“ diskréčně, ale rozdíl mezi těmito dvěma světy je často tak odlišný, že nelze závěry snadno přenášet do programovacího jazyka. Ani dnes nejsem programátor, ale spíše řekněme hodně schopný datový analytik. Většinu zkoumaných modelů trhů jsem schopen si „špinavou cestou“ naprototypovat sám. Při samotném vývoji často měním směr přemýšlení jednoduše proto, že při testování naleznu nová vodítka, která dál využívám. Finálně edge, který najdu, je již zcela jasně definován a je možné jej dále jednoznačně komunikovat s programátory.
Trnitá cesta k sofistikovaným datovým analýzám a vlastnímu prototypování
Bývá pravidlem, že zásadní změna nastává v životě tak nějak neplánovaně. Byť současně platí, že pro využití daného impulsu musí být člověk připravený.
U mě změnu spustilo zkoumání fungování různých světových fondů a jejich působení v trzích. Daná oblast mě zajímala jak z principu, tak z pohledu dalšího vylepšování orderflow strategií, kde o motivech vstupů podobných skupin účastníků trhu hodně přemýšlím. Postupně jsem začal narážet na kódy v jazycích R a Python, které se dnes v algoritmickém finančním světě hodně používají a i zkoumané fondy jejich prostřednictvím publikovaly různé myšlenky. Ty na mě z počátku působily jako kterékoliv jiné programovací kódy do doby, než jsem narazil na poměrně jednoduché implementace toho, co jsem vždy sám chtěl algoritmicky testovat.
Ať již to bylo orderflow, práce s profily nebo testování různých sezónností. Překvapovalo mě, jak byl kód vždy poměrně jednoduchý a jak rychle se člověk dostal k základním výsledkům. Řadu informací jsem navíc nacházel v Pythonu sdílenou prostřednictvím Jupyter notebooků obsahujících jak kód, tak komentáře. Často byly volně k dispozici on-line. Zde je třeba jeden, který se zabývá zpracováním informací z reportů Commitment of Traders, což je něco, s čím také pracuji: https://github.com/rsvp/fecon235/blob/master/nb/qdl-COTR-positions.ipynb#dt_2015-11-25_103609. Pochopitelně, že kódům jsem z počátku nerozuměl. Ale poměrně brzy jsem nabyl přesvědčení, že podobné prostředí je přesně to, co jsem vždy pro prototypování hledal. A tak jsem se začal učit testovat své myšlenky v Pythonu.
Jak jednoduché je naučit se jazyk typu Python?
Pro programátora je Python určitě velmi jednoduchý. Nejsou tam potřeba žádné deklarace, syntaxe jsou velmi podobné angličtině. Byly začátky Pythonu jednoduché pro mě? Bohužel nemohu říct, že by to byla vyslovená zábava, a že by to šlo nějak závratně rychle. Začátky byly nuda stejně jako v čemkoliv, kde se člověk prokousává nezbytnými základy, které v dané chvíli ještě nelze využít pro reálné aplikace.
Osobně se snažím v takovém případě aplikovat taktiku „každý den se alespoň trochu posunout“. V mém případě to znamenalo, že jsem cca 2-3 hodiny denně procházel různé tutoriály a prostě se pomalu posouval dopředu. Za cca 2 měsíce už jsem byl schopen dělat první prototypy svých myšlenek a věci začaly být výrazně zajímavější. Ohromně důležité je ale mít u podobných činností motivaci a důvod se do podobných dobrodružství pouštět. Asi nemá moc smysl začít se studiem podobného jazyka jen proto, že „se to používá ve fondech“. Já měl dost jasnou představu co chci testovat a v zásadě jsem se o to aplikacemi základů tak dlouho pokoušel, až jsem začal dostávat výsledky.
A k čemu podobné znalosti tedy jsou?
Vedou zejména k velké flexibilitě. Zejména ve vlastním výzkumu a prototypování myšlenek. Stále se třeba hodně zabývám výzkumem dalších ziskových situací pro své orderflow obchodování. Dneska už pro mě není žádný problém vzít soubor s tickovými daty, vytvořit si z nich v Pythonu numbers bary v mnoha podobách, a ty podrobovat nejrůznějším testům. A pointa je, že to jde velmi rychle – je to práce spíše na hodiny než dny. Myšlenky, které mají zajímavý fundamentální základ a ověřitelnou výkonnost jsem pak schopen posunout dále ke zpracování do algoritmické podoby (například profesionálním programátorem), nebo je použít coby analytický nástroj pro diskréční obchodování.
Je v dnešních trzích výhoda být programátorem?
Určitě to není na škodu, ale neřekl bych že je to nějaká zásadní výhoda (proto, aby se člověk stal nezávislým traderem). Pokud chce člověk uspět jako trader, musí ovládnout řadu oblastí. Přičemž to nejméně podstatné a nejsnáze delegovatelné je profesionální naprogramování jasně definované obchodovatelné myšlenky. Tedy i programátor bude muset překonávat mnoho jiných překážek. A je otázka, co je snazší.
Konkrétní odpověď není, ale možná proto, že existuje řada pohledů na to, co se člověk snaží v trzích využívat jako svou výhodu. Hodně programátorů jde na věc skrz taktiku „data first“ – tedy často brutální silou dolovat z historických dat nejrůznějšími algoritmy patterny, které věří, že se budou opakovat i v budoucnu. Já o robustnosti této cesty nejsem přesvědčený a jsem příznivcem opačného principu „idea first“, kde si trader programováním ověřuje nějakou hypotézu vycházející z „vyšších tržních principů“. Aby se k takové hypotéze dostal, musí mít s daným oborem dostatek zkušeností. To vyžaduje i spoustu jiných znalostí než jen programování. Tedy ať již člověk začne z kteréhokoliv konce, vždy jej v tradingu čeká hodně práce i na sobě samém.
Jak už jsem uvedl, prototypování algo myšlenek byl pro mě onen potřebný můstek k tomu, abych byl schopen více objevovat svět algoritmického obchodování. Tipy a zkušenosti s vytvářením komplexnějších systémů a některých postřehů z fungování dnešních systematicky orientovaných fondů přinesu v některém z dalších článků.
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.
- 1