Autotrader
Autotrader odkazuje ve světě tradingu na softwarový systém, který provádí obchody na finančních trzích na základě předem definovaných pravidel a strategií bez nutnosti manuálního zásahu ze strany člověka. Tyto systémy jsou často naprogramovány zkušenými obchodníky nebo kvantitativními analytiky a mohou být napojeny přímo na API (Application Programming Interface) brokera, což je software umožňující dvěma aplikacím komunikovat mezi sebou.
Autotrader systémy sledují tržní podmínky a v reálném čase rozhodují o nákupu či prodeji finančních nástrojů, jako jsou akcie, dluhopisy, komodity nebo měnové páry. Rozhodování je založeno na zbacktestovaných algoritmech, které mohou zahrnovat technickou analýzu, statistické modely, umělou inteligenci a strojové učení. Tyto algoritmy (na Finančníkovi jim říkáme AOS - automatizované obchodní systémy) jsou navrženy tak, aby identifikovaly výhodné obchodní příležitosti založené na historických datech a předpověděli budoucí pohyby trhu.
Důležitou vlastností autotraderů je schopnost systematicky reagovat na měnicí se tržní podmínky, což umožňuje realizovat obchody efektivněji, než by to bylo možné pro lidské obchodníky.
Na Finančníkovi pracujeme s autotraderem vytvořeným v programovacím jazyce Python. V otevřené podobě (tj. včetně zdrojového kódu) jej sdílíme v rámci skupiny TechLab.
Jak na první daytrading autotrader [včetně funkční strategie a kódu]
Obsah článku:
Co je intradenní obchodování (daytrading)?
Kde získat funkční obchodní plán?
Co je intradenní breakout otevíracího rozpětí?
Pravidla obchodního plánu intradenního breakoutu
Jak strategii mechanicky otestovat?
Hotový kód mechanické intradenní breakout strategie
Automatizovaný daytrading - shrnutí
Daytrading může být hodně výdělečný. Zde je konkrétní plán, jak bych začal. A to včetně kódu strategie, kterou je možné pustit do trhu jako autotrader.
Co je intradenní obchodování (daytrading)?
Intradenní obchodování je styl tradingu, kdy pozice držíme jen přes den (tj. nikoliv přes noční seanci). Výhodou je, že coby obchodníci můžeme jít spát s čistou hlavou, je možné pracovat s vyšší pákou (brokeři mají pro intradenní držení pozic vesměs jiné požadavky na kapitál než pro pozice držené přes noc) a kapitál na účtu může pracovat s vyšší frekvencí, a tudíž více vydělávat.
Na druhou stranu je intradenní obchodování velmi náročné. Zejména diskreční, kdy obchodníci velmi často sklouzávají k tomu, že obchodují nikoliv dlouhodobé pravděpodobnosti, ale subjektivní „predikce“ toho, kam se trh vydá. A to nefunguje.
Intradenní obchodování je těžký boj i z pohledu nákladů. U pozic trvajících hodiny nebo minuty budeme z principu dosahovat průměrně nižších výdělků na jeden obchod, ale komise platíme brokerům stejně jako u kteréhokoliv jiného obchodu. Často se tak může stát, že poplatky spolykají všechny těžce vydělané peníze. Zejména, pokud bude obchodník provádět mnoho ultrarychlých obchodů denně.
Přesto má intradenní obchodování potenciál. Vidím jej zejména v momentě, kdy strategie automatizujeme a obchodujeme spíše s nižší frekvencí – například jeden intradenní obchod v trhu denně s dobou trvání spíše hodiny, než minuty.
Osobně intradenně obchoduji jak mean reversion, tak breakout strategii na akciových indexech. Intradenní strategie tvoří menší část mého portfolia, které je dále složené především z mechanických swingových a dlouhodobějších rotačních strategií.
Nicméně komplexnější portfolia vyžadují přiměřeně vysoký kapitál a pro řadu obchodníků tak může být zajímavé začít s daytradingem, kde jsou požadavky na kapitál nejmenší.
Pojďme si proto ukázat možnou cestou, jak konkrétně začít, pokud zatím žádnou AOS strategii ani systém pro autotrading nemáte.
Kde získat funkční obchodní plán?
Moje osvědčená cesta je inspirovat se tím, co funguje ostatním. To jde pochopitelně tím lépe, čím více zkušeností člověk má. Při stavbě úplně prvních systémů bych vyšel z těch nejvíce diskutovaných principů, které fungují dlouhodobě. Například na Finančníkovi roky diskutujeme intradenní breakouty v akciových indexech. V případě daytradingu je to určitě dobrý začátek. Na internetu lze najít i funkční obchodní plány. Například v různých akademických studiích, které jsou volně dostupné. Jde o ohromné množství dat, naštěstí ale existují služby, které je procházejí, katalogizují a popisované edge backtestují. Patrně nejlepší je quantpedia.com. Tu se svým týmem připravuje Radovan Vojtko, který v nedávném rozhovoru v newsletteru Quantopian zmínil například studii: Může být day trading skutečně profitabilní? Adresa ke stažení: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4416622
Ta backtestuje jednoduchý breakout otevírací rozpětí na 5minutovém grafu akciového indexu Nasdaq 100 v letech 2016 až 2023 a došla k závěru, že s použitím páky a intradenního obchodování breakoutů bylo možné ve sledovaném období dosáhnout přibližně 10x vyššího zhodnocení než při držení samotného indexu.
Breakouty na indexech nevymizí a s podobným principem bych se tak nebál začít v malém obchodovat.
Pochopitelně je třeba akceptovat, že systémy se široce veřejně diskutovanými pravidly patrně mohou časem degradovat a úplně bych se na ně nespoléhal s většími účty. Ale odněkud je třeba začít a zkušenosti získané živým obchodováním vám budou postupně přinášet inspiraci k tomu, jak plány posouvat dál. Sám například obchoduji intradenní breakout také ve velmi triviální podobě, ale s určitou nuancí, která věřím, že může přinášet dodatečnou obchodní výhodu. Na tu bych ale bez předchozí praxe v trzích patrně nepřišel.
Co je intradenní breakout otevíracího rozpětí?
Za otevírací rozpětí se považuje maximální a minimální cena sledovaného intervalu trhu po jeho otevření. V případě zmíněné studie „Může být day trading skutečně profitabilní“ jde o prvních pět minut obchodování. Pokud si zobrazíme trh skrz pětiminutový graf, pak otevírací rozpětí představují High a Low první úsečky.
V grafu jsem situaci zobrazil šrafovanou linkou:
Americké akciové indexy otevírají v USA ve stejnou dobu jako akcie. Obchodují se tedy od 8:30 centrálního časového pásma (CT), což většinu roku odpovídá českému času 15:30 (kromě několika málo týdnů, kdy je čas posunut o hodinu díky změně letního a zimního času, která neprobíhá v USA a Evropě stejně).
Šrafované linky odpovídají High (horní linka) a Low (spodní linka) první pětiminutové úsečky, což je otevírací rozpětí vycházející ze studie (existují i další principy pracující například s delším časem pro výpočet otevíracího rozpětí).
Pravidla obchodního plánu intradenního breakoutu
Studie definuje zcela mechanický obchodní plán, který je možné shrnout do následujících kroků:
Čekáme na uzavření první pětiminutové úsečky.
Pokud je první pětiminutová úsečka rostoucí (Close > Open), pak na otevírací ceně druhé úsečky otevíráme long pozici.
Pokud je první pětiminutová úsečka klesající (Close < Open), pak na otevírací ceně druhé úsečky otevíráme short pozici.
Stop-loss strategie umisťuje na úroveň low otevíracího rozpětí (první pětiminutové úsečky) v případě long pozice, resp. na úroveň high otevíracího rozpětí v případě short pozice.
Profit target se umisťuje na úroveň 10násobku riskované částky (tj. rozsahu vstup – stop-loss).
Strategie vystupuje buď na stop-lossu, profit targetu, nebo na konci obchodního dne.
Obchodovaným trhem diskutovaným ve studii je americký index Nasdaq 100. Konkrétně skrz ETF s názvem QQQ, které index následuje. V EU díky regulaci není možné tento ticker na běžných retailových účtech obchodovat, a tak nejbližší rozumnou volbou budou futures mikrokontrakty MNQ. Ty mají hodnotu bodu 2 USD.
Backtest strategie intradenního breakoutu s využitím trhu QQQ vypadá podle studie následovně:
Zdroj: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4416622
Černá linka je výkonnost strategie (long a short dohromady). Červená linka benchmark pro porovnání s držením QQQ (de facto držení indexu). Dobré je, že ve studii jsou zahrnuty i výsledky od začátku roku 2022, kdy trhy začaly klesat a dobře to dokresluje, jaké výhody nám poskytují krátkodobé long/short strategie. Černá equity křivka roste bez ohledu na to, že index samotný převážně klesá.
Jak strategii mechanicky otestovat?
Jelikož máme strategii definovanou naprosto mechanicky, byla by hloupost testovat a obchodovat ji ručně. Pochopitelně existuje celá řada způsobů, jak podobné strategie backtestovat a obchodovat plně automatizovaně. Sám například používám python skripty napojené na Interactive Brokers.
Na začátku je ale určitě dobré začít co nejjednodušeji. Z mé zkušenosti lze podobné systémy velmi snadno obchodovat u TradeStation. Ta integruje vše, co člověk potřebuje. Prostředí pro backtest, data a současně funguje jako autotrader. Perfektní je, že u TradeStation lze přepínat mezi simulovaným a živým obchodováním a v obou prostředích fungují zcela stejné skripty. Začal bych tedy tak, že skript pustím na simulovaný účet, budu jej sledovat, a pokud budu s chováním systému spokojený, přepnu se na živý účet a budu mít svůj první intradenní autotrader.
Hotový kód mechanické intradenní breakout strategie
Konkrétní skript není součástí studie. Nicméně převést uvedená pravidla do mechanického kódu EasyLanguage není těžké. Zde je strategie v podobě, kterou stačí jen překopírovat do TradeStation:
Vars: BuyPrice(0),ShortPrice(0), ShortRiskAmount(0), ShortStopLevel(0),ShortTargegLevel(0),LongStopLevel(0),LongRiskAmount(0),LongTargetLevel(0);
If Time = 0835 and C>O and MarketPosition = 0 then
begin
Buy ("LongOR") next bar market;
BuyPrice = Close;
LongStopLevel = L;
LongRiskAmount = BuyPrice - LongStopLevel;
LongTargetLevel = BuyPrice + (10* LongRiskAmount);
end;
If MarketPosition = 1 then
begin
Sell ("ORL SL") next bar at LongStopLevel stop;
Sell ("ORL PT") next bar at LongTargetLevel limit;
end;
If Time >= 1500 and MarketPosition > 0 then
Sell ("ORL TimeStop") next bar at market;
If Time = 0835 and C<O and MarketPosition = 0 then
begin
Sellshort ("ShortOR") next bar market;
ShortPrice = Close;
ShortStopLevel = H;
ShortRiskAmount = ShortStopLevel - ShortPrice;
ShortTargegLevel = ShortPrice - (10* ShortRiskAmount);
end;
If MarketPosition = -1 then
begin
Buytocover ("ORS SL") next bar at ShortRiskAmount stop;
Buytocover ("ORS PT") next bar at ShortTargegLevel limit;
end;
If Time >= 1500 and MarketPosition = -1 then
Buytocover ("ORS TimeStop") next bar at market;
Pokud s TradeStation začínáte, můžete se podívat na dříve publikovaný seriál, který ukazuje, jak s TradeStation pracovat.
Ale není to složité. Otevřeme graf s příslušným trhem (např. MNQ.D pro denní data mikro futures indexu Nasdaq 100), otevřeme EasyLanguage editor – vložíme skript, aplikujeme jej na graf a můžeme backtest případně rovnou autotraderovat. Ano, výše uvedený skript je v zásadě vše, co potřebujeme proto, aby TradeStation obchodovala intradenní breakout (kód ale publikuji výhradně pro studijní účely, sám bych jej případně spouštěl v simulaci a sledoval, jestli skutečně vše funguje, jak má).
Automatizovaný daytrading - shrnutí
Backtest i s použitým kódem vypadá velmi perspektivně – ostatně přesně, jak naznačuje studie. Jediný zásadní rozdíl ve výsledcích je v position sizingu. V našem kódu pro zjednodušení pracujeme s jedním kontraktem, což může být kontraproduktivní. Absolutní výše risku bude hodně záležet na aktuální volatilitě trhu a je výhodnější volatilitu tzv. normalizovat, aby byl absolutní risk stále stejný.
Na druhou stranu práce s konstantním jediným kontraktem má také výhody. Například tu, že nám stačí velmi malý účet. Například u TradeStation je potřeba pro otevření mikro kontraktu MNQ.D jen cca 460 dolarů. Tedy strategii lze obchodovat s účtem cca 800–1000 dolarů. A to není pro začátek vůbec špatné.
Plus je třeba nezapomínat na to, že máme mnoho možností, jak strategii posouvat dál. Můžeme zkusit testovat jiné periody breakoutů, další trhy (strategie dobře funguje i na mikro futures indexu S&P 500) a určitě je dobré otestovat zmíněnou normalizaci volatility.
Líbí se vám toto téma? Prosím sdílejte odkaz článku, který jsme publikovali na náš X (https://twitter.com/financnik) a Facebook (https://www.facebook.com/financnikcz) účet. V případě zájmu mohu pokračovat v rozvinutí myšlenky do dalších testů a třeba i více komplexnějších přístupů.
Breakout trading a řízení rizik [komodity vs ETF vs CFD]
V pokračování článku se zaměříme na Breakout trading a řízení rizik [komodity vs ETF vs CFD].
Python
Trading, ať už je to na akciovém, komoditním nebo měnovém trhu, vyžaduje stále sofistikovanější nástroje a postupy, aby trader mohl konkurovat a zůstat o krok napřed před trhem. Jeden z nástrojů, který získal značnou oblibu v oboru tradingu, je programovací jazyk Python.
Python je programovací jazyk, který je známý svou čitelností a pružností, což z něj činí ideální volbu pro rychlé prototypování a vývoj komplexních algoritmů.
Profesionální trader může využívat Python k analýze dat, backtestingu obchodních strategií nebo dokonce k automatizaci svých obchodů. Díky široké škále knihoven, jako jsou Pandas pro manipulaci s daty, NumPy pro výpočty nebo QuantConnect pro backtesting a obchod, může trader snadno a rychle vytvářet nástroje a aplikace přizpůsobené jeho specifickým potřebám.
Python rovněž umožňuje snadné propojení s různými datovými zdroji, od tradičních databází po real-time streamingové služby. Toto umožňuje traderovi mít vždy aktuální informace a rychle reagovat na měnící se tržní podmínky.
Navíc, díky komunitě vývojářů, která za Pythonem stojí, je zde obrovské množství dostupných zdrojů, tutoriálů a knihoven, což umožňuje traderům neustále se zdokonalovat a rozšiřovat své schopnosti v oblasti programování a analýzy dat.
Na Finančníkovi vytváříme v Pythonu všechny skripty, které nám slouží k analýze dat a obchodování. Aplikace Trading Room je vytvořena v Pythonu a také náš autotrader. Jak se naučit skriptovat v Pythonu od nulových znalostí (sami nejsme programátoři) vyučujeme průběžně v TechLabu.
Oficiální stránka Pythonu: https://www.python.org/