První měsíc algoritmického obchodování a cesta k pasivnímu příjmu

iconUž to budou dva roky, kdy jsem začal přemýšlet o financích jako o zdroji pasivního příjmu. V té době jsem narazil na blog winpes.cz, s jehož pomocí jsem si vytvořil plán, jak si vybudovat pasivní příjem dostatečně velký natolik, abych s ním mohl cestovat. Od té doby se udála spousta věcí, od původního nápadu jsem přešel přes plánování, realizaci a testování až do stavu, kdy začínám vidět plody mé práce a konečně tak zjišťuji, jak vypadá ten pasivní příjem.. To vše shrnuji v tomto článku, ale nejprve … jak to celé začalo.

Plány a malování budoucnosti
Kdysi dávno mě napadlo, že bych mohl vytvořit nějaký program, který by sám nakupoval akcie na burze a pak je prodával o chlup dráž. Já bych pak tržil zisk v podobě rozdílu mezi prodejní a nákupní cenou.  Zjistil jsem však, že za každý obchod na burze (alias nákup a prodej) se platí poplatky, díky kterým by tato strategie prodělávala a celou myšlenku jsem proto zavrhl. Je zajímavé pozorovat, jak v současnosti některé firmy trží obrovské peníze z HFT (high frequency tradingu), které dělají v zásadě to samé, jen mají smlouvu s burzami, která je osvobozuje od poplatků. Tak jako tak, tohle byla má úplně první myšlenka o pasivním příjmu.

Po nějaké době mi jeden člověk dal tip na blog winpes.cz (moc díky Ondro za doporučení). Blog se zabývá pasivním příjmem, obchodováním s akciemi a krom ostatního také popisuje automatický obchodní systém, který pomocí určitých pravidel vybírá a nakupuje zlevněné akcie a ty pak také sám prodává při splnění prodejních podmínek. Na blogu jsou také reporty za jednotlivé měsíce obchodování, podle kterých strategie dokáže vygenerovat zisk až 3 procenta měsíčně (s pákou 1:3 – tj. při vypůjčení si od brokera 2/3 peněz) z investované částky, což je krásných 36 procent za rok.

To mě utvrdilo v tom, že není nemožné vytvořit automatický systém obchodující na burze, který by generoval pasivní příjem a přitom by na něj nebyla potřeba obrovského vstupního kapitálu. V hlavě jsem si proto vytvořil plán, že takový systém do jednoho roku vytvořím a zároveň našetřím dostatečné množství peněz, které pak investuji. V hlavě jsem počítal s počáteční investicí 100’000Kč, což by mělo generovat 3’000Kč měsíčně (alias mé výdaje na bydlení). Začal jsem proto šetřit. Jako nejlepší se mi osvědčilo posílat velkou část výplaty na těžko dostupný účet hned, co mi přijdou peníze a zároveň neutrácet za zbytečnosti. K tomu mi pomohla reálná představa mého cíle. Doopravdy to funguje.. stačí si v hlavě udělát reálnou představu, co s pěnězi budete dělat. Pro mě to bylo rozhodnutí, zda si například koupím sladkosti za stovku a nebo budu mít měsíčně 3 koruny pasivního příjmu. Mimo to, začal jsem také pracovat na systému popsaném na výše zmíněném blogu, testovat ho a řešit další věci nutné pro jeho úspěšné nasazení.

Realizace
Jak to celé dopadlo? Od doby, kdy jsem začal pracovat na tomto plánu, uplynuly již dva roky. Zjistil jsem, že sto tisíc vstupního kapitálu je málo. Od zisku totiž musíte odečíst 15% daň z kapitálových obchodů, poplatky za obchody (1USD za nákup/prodej, za poslední měsích bylo 66 obchodů), poplatky za vedení účtu (cca 10USD/měsíc), burzovní data (aktuální ceny akcií, 10USD/měsíc) a pak také počítač, na kterém celý systém poběží (cca 100Kč/měsíc). Suma sumárum to dělá 3’000Kč * 0.85 – 66USD – 10USD – 10USD – 100Kč což při dnešním kurzu (4.9.2016) je zisk cca 457Kč/měsíc což je málo. Zároveň doba vývoje se protáhla na dva roky. To bylo způsobeno z části vytížeností na jiných projektech (ať už pro klienty nebo mé vlastní), leností, ale i občasným nedostatkem motivace.

Růžový start a ostrá realita
Nyní, po dvou letech, je systém hotový. Dalším pozitivem je, že i naspořená částka je vyšší a tak jsem se rozhodl spustit systém na ostro s kapitálem 10’000USD neboli něco pod 250’000Kč. Zároveň oproti páce 1:3 použité na blogu jsem systém nasadil s pákou jen 1:2 (proto je v grafu počítáno s 20k USD). Měsíční zisk by tak měl být „jen“ 2% ale zároveň se tím sníží risk u prováděných investic. Z 10k USD bych tak měl mít krásných 200USD měsíčně. A jak to celé vypadá po prvním měsíci provozu?

Screen Shot 2016-09-03 at 00.25.49

První týden byl úžasný! Systém bez potřeby jakéhokoli zásahu vytvořil zisk krásných 178USD, který se za další dva týdny vyšplhal až na 245USD (téměř 6’000Kč). Pak ale přišla tvrdá realita. Jednak došlo k obchodům, s celkovou ztrátou až 210USD, zároveň klesl kurz USD/CZK.

Screen Shot 2016-09-03 at 19.38.10

Systém tak v jednu chvíli byl v neuzavřené ztrátě až 11’000Kč. To se nyní už výrazně zlepšilo díky ziskovým obchodům (systém je aktuálně v celkovém uzavřeném zisku 140USD) a stejně tak i kurz se pomalu vrací na dřívější hodnotu. Podle původního předpokladu 200USD měsíčně byl tento měsíc však podprůměrný. Vše se proto uvidí až v delším časovém horizontu, což hezky shrnuje tento článek, podle kterého strategie s pákou 1:2 za poslední tři roky ostrého provozu vygenerovala cca ty 2% měsíčně.

První problémy
Obchodování ale bohužel provázely i technické problémy. 
Při uzavírání jedné ze ztrátových pozic došlo k vyexpirování obchodního příkazu (akcie firmy EXC se neprodaly zřejmě z důvodu nedostatečné poptávky?) viz záznam z logu:

[15:59:01.794] [INFO] Current: Date: 2016-08-18 Equity: 20234.10 Unused: 1113.12 Free pieces: 1
[15:59:01.800] [INFO] Sending order(1434) SELL(EXC) 171x MKT
[15:59:01.801] [INFO] Sending order(1435) SELL(SPG) 4x MKT
[15:59:01.802] [INFO] Sending order(1436) SELL(SO) 20x MKT
[15:59:02.073] [INFO] CLOSED: 4x SPG price 214.25 > SMA5 213.82 PROFIT: -1.88
[15:59:02.132] [INFO] CLOSED: 20x SO price 52.28 > SMA5 51.71 PROFIT: 14.80
[15:59:31.815] [ERROR] Error: OrderId(1434) is taking too long to process – cancelling
[15:59:31.819] [ERROR] Strategy finished with an error Error: OrderId(1434) is taking too long to process – cancelling

Akcie další den šla ještě níže a ztráta se tak prohloubila o cca 80USD. Naštěstí se situace o pár dní později zlepšila , kdy jsem pozici uzavřel manuálně a výsledná ztráta nakonec nebyla zas až tak hrozná. Poučení pro příště ale je, provádět nedokončené obchody hned druhý obchodní den při začátku obchodní seance. Zároveň je třeba počítat s tím, že tyto chyby se projeví až při ostrém provozu. Demo účet ani paper trading těmito neduhy a občasnými průsery prostě netrpí.

Druhým problémem byla chyba „103: Duplicate order ID„, díky které se neprovedlo hned několik obchodů. Každý odeslaný obchodní příkaz má svůj unikátní identifikátor a tato chyba nasvědčuje tomu, že systém odesílá již jednou použité id, což má za následek odmítnutí příkazu. V tomto případě opakuji příkaz s novým id.

Ponaučení
Kdybych měl vybrat tři hlavní věci, které jsem si z celého příběhu odnesl, bylo by to:

  • Obchodování na burze je jako jízda na horské dráze. Kapitál a především emoce jsou tu jednou nahoře a podruhé zase dole. Kritickou otázkou úspěchu pak je, zda na to člověk má žaludek, dokáže vydejchat případné ztráty a zároveň se umí učit z chyb.
  • Postavení obchodního systému je projekt jako každý jiný. Chce to mít plán, věnovat tomu čas a nedělat více věcí najednou, jinak se může stát, že nakonec nebude hotové nic (nebo bude systém dokončen s ročním zpožděním).
  • A nakonec.. žádný pasivní příjem není úplně pasivní. Ať Vám lidé slibují cokoliv, vždy se do toho musí ze začátku vložit spousta času a člověk musí poctivě dřít. Po čase se třeba začnou generovat nějaké peníze a investovaný čas se nakonec začne vyplácet, vždy ale bude třeba alespoň trocha pozornosti, aby se systém nezastavil (třeba kvůli nějaké chybě).

Další plány do budoucna
Tímto má cesta k pasivnímu příjmu samozřejmě nekončí. Investovaná částka 10k USD je jen začátek a postupem času, až vychytám většinu chyb, do strategie dám více peněz (třeba 40k USD?). Otázkou také je, jak nakládat se ziskem/ztrátou, zda jej vybírat nebo nechávat a těžit tak ze složeného úročení. Stejně tak mám tipy na další strategie – ať už ty automatické (např. rotační strategie Franka Grossmana) nebo manuální (např. opční strategie uvedená na blogu winpes.cz). Stejně tak si chci postupem času vybudovat více zdrojů pasivního příjmu, protože jednou z hlavních zásad investování je diverzifikace. V současnosti se tak zajímám i o P2P portály, které již byly popsány na výše zmíněném blogu.

Článek chci zakončit poděkováním adminovi z blogu winpes.cz, Ondrovi a dalším, kteří mi ukázali cestu k pasivnímu příjmu. Děkuji :-)

Update 7.9. (neotevřené pozice):
Dneškem by došlo k prodání akcií, které avšak 1.9. nebyly nakoupeny z důvodu „Duplicate order ID“ chybě. Jednalo se o tyto obchody:

[2016-09-01 15:59:02.218] [INFO] IB-API - SendOrder Sending order(2462) BUY(TWX) 26x MKT
[2016-09-01 15:59:02.219] [INFO] IB-API - SendOrder Sending order(2463) BUY(ABBV) 64x MKT
[2016-09-01 15:59:02.219] [INFO] IB-API - SendOrder Sending order(2464) BUY(NOV) 31x MKT
[2016-09-01 15:59:02.220] [INFO] IB-API - SendOrder Sending order(2465) BUY(UNH) 22x MKT

Zisk z nákupu těchto akcií by byl 100USD, což je polovina předpokládaného měsíčního výnosu 200USD. Mimo tyto obchody strategie vygenerovala 26USD a do průměru tak schází ještě 74USD.

28 comments

  1. Gratuluju, jen tak dál. To s tím OrderID se mi taky stalo, prvně v životě, ale takové věci se zkrátka stávají. Vydrž a ono to půjde ;-)

    1. Tak tak.. věřím, že je to jen o čase a trpělivosti, než se to vše vyladí.. :-)
      Ještě jednou děkuji a přeji hodně štěstí do budoucna..

  2. Nemám přesně prozkoumanou devadesátku, ale nejde spíš o vylepšení „kup a drž index“ strategie, než o pravidelný příjem? Základní parametry „kup a drž“ by pak zůstávaly stejné, tj. investiční horizont 10 a více let a drawdowny. Možná je lepší o té strategii uvažovat spíš jako o lepší alternativě ke koupení indexu, než o automatu který obchoduje minutová data.
    Jinak smekám před tím, že jste dotáhl naprogramování automatického obchodování, to se málokomu podaří.

    1. Strategie sleduje vybrané akcie, které při výraznějším poklesu nakoupí/dokoupí a při korekci pak zase prodá.. Jedná se tak spíše o swingový mean reversion system s průměrným držením akcí cca týden, který má ještě pojistku proti velkým drawdownům. Ta by měla zajistit stopnutí celého systému při velkých propadech, takže by neměly být takové poklesy jako má třeba index.. Jinak ale nejde o zaručený měsíční pasivní příjem, o tom žádná..

      1. S Pavlem Bambáskem jsem byl na obědě a vysvětloval mu to, ale on obchoduje spíše opce. Což je v pořádku. Na druhou stranu srovnávat devadesátku s „kup a drž“ je prostě nepochopení konceptu.

  3. Dik za clanek! Teda ze s tim bude az tolik komplikaci jsem necekal. I kdyz jsem se vzdycky obaval ze clovek napise skvelej algoritmus a pak na jednom „bugu“ vsechno prodela. Drzim palce do dalsiho pokracovani snad se ti i za nas za vsechny co na to nejsme dost odvazny bude darit :)

    1. Ony ty problemy prichazi tak nejak postupne, takze se diky bohu nemusi resit uplne vsechny najednou. Kazdopadne v puvodni verzi jsem mel, ze kdyz dojde k chybe, tak se cely proces zastavi a pripadne obchody dodelam rucne, coz se parkrat uz stalo a par dolaru to stalo. To je vlastne i jeden z duvodu, proc je dobre do toho jit s vetsim kapitalem .. aby si to na sebe proste vydelalo.

    1. Dekuji.. z vice jak 99% ma implementace kopiruje 90tku.. zmeny jsou reinvestice zisku a otevirani max dvou pozic misto jedne, pokud jsou si podobne v hodne nizkem RSI. Snazil jsem se strategii kopirovat co nejvice, protoze je uz otestovana a kazda vlastni uprava muze vyrazne ovlivnit vysledky strategie

  4. Ahoj Honzo, myslím, že by ti u IB stačilo Level 1 – NYSE NETWORK A/CTA místo US Value Bundle – zkus si zadat Tickery v Market Data Assistant – spadnou tam i NASDAQ tituly a ušetříš tím.
    Měj se a hezké obchodování

    1. Ahoj.. moc dekuji za tip. U toho US bundle je to tusim tak, ze kdyz udelas vice jak XYUSD na komisich, tak mas poplatek za data odpustena .. takze nektere mesice jsou alespon zdarma..

  5. Zdravim, mám otázku ohľadom kapitalizácie: Kapitál je pri 90tke rozdelený na 20 rovných dielov. Ak si použil 10k USD s pákou 2:1, máš 1 diel určený na 1000 USD? Lebo rozmýšľam nad tým, že keby si mal plne exponovaný účet, už nemáš peniaze na prípadné pohyby a broker ti môže pozície zavrieť. Alebo aj v prípade, že by si chytil zo začiatku pár % DD a následne by si mal mať investovaných 20 dielov, už by sa to proste nedalo bez doplnenia. Rád by som vedel ako a či si sa nad týmito otázkami zamýšľal. Winpes má totiž pri plnom exponovaní blokovaných len 18k a zvyšných 32k mu predpokladám že slúži presne na tento účel.

    Vopred ďakujem za odpoveď

    1. Ahoj, s tim rozdelenim kapitalu je to jak rikas, pri realnych 10k a pace 2:1 obchodujes se 20k, takze na jeden dil 90tky je prirazeno 1000 USD. Tvoje maximalni otevrena ztrata pak muze byt maximalne 50% z kapitalu, coz pro tebe znamena 100% tveho uctu, ale predpokladam, ze se broker s margin callem ozve mnohem drive. Maximalni otevreny %DD co mi vysel bylo 40% coz po zapocitani paky je 80% .. A jeste jedna vec – ono IB u CFDcek dava paku 1:8, takze blokovany margin bude mnohem mene.

      1. „Maximalni otevreny %DD co mi vysel bylo 40% coz po zapocitani paky je 80%“ – asi nerozumiem, chces tym povedat ze pri live obchodovani na 10k ucte si bol v 8000 otvorenej strate?

        1. Tohle mam z backtestu – v patek 31.5.2002 by otevrena ztrata byla 38.5% pokud dokupujes pri poklesu pod RSI10. Spocitano podle adjustovanych OHLC cen z quandlu, ale je klidne mozne, ze tam nekde mam chybu :D

          1. Ahoj, měl bych otázku. Píšeš, že dokupuješ při poklesu pod RSI10. Vycházelo to v backtestu lépe než v původní devadesátce, kdy se dokupuje při poklesu? Nebo je k tomu nějaký jiný důvod? Díky za odpověď.

  6. Ahoj, dokupuji pri poklesu pod RSI10 a to predevsim, protoze jsem to takhle mel puvodne a chci to do budoucna upravit. Backtesty u dokupu pri nizsi cene vychazi o trochu lepe, ale zvysi se tim i DD, coz bude zrejme prilis rychlym dokupovanim v dobach, kdy trh jde do strany. Jednou z testovanych variant je dokup pri poklesu o vice jak 0.5% ceny posledniho nakupu, ktery vychazi take dobre, ale ma mensi DD, takze zvazuji, ze pojedu tuhle strategii.

  7. Ahoj,

    libi se mi myslenka algotradingu a rad bych si s ni zacal hrat. Jsem uplny zacatecnik do obchodovani vubec, a tak jsem se te chtel zeptat jakeho pouzivas brokera? Podporuji obecne vsichni nejake api pro algoritmicke obchodovani nebo je treba nejaky konkretni?

    Diky a hodne zdaru!

    1. Cauko.. ja jedu na Interactive Brokers. Obecne pro algotrading je urcite potreba, aby broker mel nejakou svoji API, pres kterou muzes posilat prikazy na nakup/prodej a nacitani nejruznejsich dat. Konkretne u me se za rok udela nekolik stovek obchodu, takze je dobre mit co nejnizsi poplatky, v cemz ma IB vyhodu (uctuje si 1USD za nakup/prodej vs treba Fio ma nakup/prodej za tusim 100 CZK?).

      Vzdycky ale zalezi na te konkretni strategii, kterou chces jet… Preji hodne stesti :-)

      1. Ahoj,

        diky za odpoved. Dal jsem se trochu do hledani a nasel jsem quantopian.com a quantconnect.com. Znas je? Pokud jo, proc jsi se rozhodl je nepouzit? Nemel bys problem s vlastnim stahovani dat ze screeneru.

  8. Ahoj,
    při hraní si s IB API jsem narazil na podobný případ jako ty – někdy čekám na vyplnění příkazu 25-50s. Zatím teda jedu jen s paper účtem. Jak často se ti stává, že čekáš více než 30s na vyplnění příkazu (live)? Pozoruješ nějaké výrazné rozdíly mezi plněním na paper účtě a live? Aby vyplnění příkazu trvalo tak dlouho mi v závěru dne připadá divné.
    Díky za odpověď

    1. Ahoj, behem paper tradingu – cca 1 az 2 mesice jsem s delayem orderu nemel problem. Az pak na ostrem uctu se mi stalo jednou nebo dvakrat za posledni rok, ze se cekalo delsi dobu jak minuta a ordery se nestihly vyridit vcas. Ale to uz bylo davno. Dobre je obchodovat likvidni tituly..

      1. Je to zvláštní, například prodej BIIB teď v pátek o velikosti 473 akcií trval asi 20 vteřin. 19.9. pak prodej CHTR o velikosti 129 akcií trval 50 vteřin…no hádám že počkám na live, snad nebudu překvapen.
        Díky za odpověď a ať se ti daří

        1. Zajimave .. mozna se snazi nejak simulovat ruznou likviditu. Zkus na ostrem uctu a uvidis, ja s tim uz ale dlouho problem nemam.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *