Jump to content
Co nového? Mé kurzy
Články a tutoriály:
Na této stránce
Archiv článků Psychologie obchodování Jak na obchodní plán Mé obchodní strategie
  • Jak na první daytrading autotrader [včetně funkční strategie a kódu]

    Obsah článku:

    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:

    Pětiminutové otevírací rozpětí vyznačené v grafu indexu Nasdaq 100.

    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ů:

    1. Čekáme na uzavření první pětiminutové úsečky.
    2. 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.
    3. 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.
    4. Profit target se umisťuje na úroveň 10násobku riskované částky (tj. rozsahu vstup – stop-loss).
    5. 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ě:

    Backtest long/short mechanické breakout strategie otevíracího rozpětí vs. držení benchmarku.

    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].


    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.

    • Líbí se 5
    • Děkuji 1

    Další články na toto téma

    Automatizované obchodování – jak to děláme na Finančník.cz

    V dnešní době se stále více obchodníků setkává s potřebou zautomatizovat části svého tradingového procesu, nebo tradingu jako celku. Systematické obchodování, které na Finančník.cz používáme, vede k tvorbě jasných a konzistentních pravidel, podle kterých obchody uskutečňujeme. A protože je systematické obchodování založeno na předem definovaných mechanických pravidlech, je pro mnohé z nás posun k automatizaci rutinních činností logickým krokem. V následujícím textu bych rád ukázal, jak k takové automatizaci přistupujeme a co všechno to obnáší.
    Obsah:
    Automatické obchodování skrz skripty – jak to děláme na Finančník.cz Proč zvolit systematický přístup k obchodování Automatizace nemusí být komplikovaná Řešení autotraderu na Finančník.cz Nová verze autotraderu – SignalTrader Ukázka jak SignalTrader může pomoci v praxi Závěrečné myšlenky k automatizaci v tradingu Automatizované obchodování skrz skripty – jak to děláme na Finančník.cz
    Většina obchodníků, kteří obchodují spolu se mnou na Finančníkovi, přešla stejně jako já na systematický trading.
    To znamená, že vyhledáváme reálně ověřitelné výhody v trzích, vytváříme funkční logiky, které skládáme do diverzifikovaných portfolií, a následně při samotném obchodování jen následujeme signály vycházející z předem definovaných plánů.
    Tato cesta je nesmírně efektivní z hlediska času a také pomáhá udržet stabilitu psychiky obchodníka.
    Systematické přístupy lze obchodovat manuálně. Například tak, že se před otevřením obchodní seance zadají ručně příkazy do brokerské platformy a tím se na daný den vyřeší veškerá aktivita okolo samotných vstupů a výstupů. Nicméně jakmile se naučíte dodržovat striktní pravidla, nabízí se možnost automatizovat celý proces obchodování a v podstatě se zbavit denní rutiny. Tím uvolníme energii na to nejdůležitější – na další výzkum, studium a testování nových myšlenek.
    Je důležité zdůraznit, že pokud s tradingem teprve začínáte, není automatizace nezbytná a jsou mnohem důležitější principy, na které je v začátcích důležité soustředit pozornost. Mnoha obchodníkům pomůže projít si „ruční fází“ zadávání příkazů, aby důkladně porozuměli fungování trhů a rozvíjeli zkušenosti s reálným sledováním chování trhů. V momentě, kdy získáte větší zkušenost, se ovšem otevírá velký prostor pro úsporu času, a právě tehdy dává přechod k větší míře automatizace opravdu smysl.
    Proč zvolit systematický přístup k obchodování
    Než se pustíme do samotné automatizace, pojďme si stručně zrekapitulovat, proč vůbec obchodovat systematicky.
    Systematické obchodování přináší řadu výhod. Předně je to konzistentní realizace ověřených strategií. Mnozí obchodníci se potýkají s emočními tlaky, které často vedou k „překrucování“ plánů v průběhu samotného obchodního dne. Přidáme-li k tomu zbytečný stres a možné chyby při zadávání příkazů, není divu, že se mnoho dobrých obchodních nápadů v praxi zvrtne do ztráty. Systematický přístup sice není zárukou výdělků, ale dává vysokou míru jistoty, že vše bude probíhat tak, jak předem stanovíme.
    Když se systematický přístup navíc spojí s automatizací, získáme:
    Minimum potřeby se denně zabývat zadáváním obchodů. Větší možnost spravovat více strategií současně. Časovou flexibilitu – není nutné sedět u počítače v určité hodiny. Omezení chyb, které vznikají z rutinního kopírování příkazů. Automatizace nemusí být komplikovaná
    I když je možné systematicky obchodovat čistě ručně, pracná stránka přichází v okamžiku, kdy máte v portfoliu větší počet strategií. Obchody je potřeba kontrolovat, zadávat a neustále porovnávat se stavem otevřených pozic v brokerské platformě.
    Automatizace takových procesů může být v zásadě velmi jednoduchá a u pomalejších stylů (typicky swingové obchodování) skutečně stačí následovat podobný postup:
    Obchodní plán systematizujeme a převedeme do skriptovacího jazyka běžně dostupných programů (na Finančníkovi používáme hodně Amibroker nebo TradeStation). Každý den spustíme používaný software, který provede kontinuální backtest našeho obchodního systému a vytvoří sadu otevíracích a uzavírajících příkazů pro daný den. S využitím skriptů (například v Pythonu) se napojíme na brokera skrz API (na Finančníkovi používáme Interactive Brokers) a stáhneme si aktuální otevřené pozice, stav účtu atd. Skripty porovnáme otevřené pozice s pozicemi vygenerovanými v bodě 2, vyřešíme duplicity v obchodovaných trzích a možné rozdíly v otevřených pozicích vůči tomu, co bychom měli mít otevřené dle backtestu. Skripty převedeme platné signály na obchodní buy/sell příkazy a skrz API je předáme do brokerské platformy. Tím celá denní práce končí a můžete se věnovat dalším aktivitám.
    Řešení autotraderu na Finančník.cz
    Pro swingové obchodování sdílíme na Finančníkovi v TechLabu univerzální autotrader skript vytvořený v Pythonu, který popsanou automatizaci realizuje.
    Jde o otevřené řešení, které si každý může uzpůsobit podle svých potřeb. Traderů, co obchodují systematicky, přibývá, a proto považuji za důležité, aby podobné nástroje byly snadno dostupné. Obchodníci tak mají možnost rychle začít s vlastní automatizací, a to bez nutnosti tvořit vše od nuly. V TechLabu je autotrader navíc poskytován s průběžnou výukou – jak tvorby strategií, tak například práce s Pythonem a hodně obchodníků si tak postupně swingový autotrader rozšiřuje podle svých potřeb.
    Nová verze autotraderu – SignalTrader
    Protože se v TechLabu věnujeme automatizaci dlouhodobě, celé řešení postupně vylepšujeme. Aktuálně (březen 2025) jsme publikovali výrazně vylepšenou verzi, kterou nyní nazýváme SignalTrader – snadněji se tak řešení swingového autotraderu odliší od specializovaných řešení pro intradenní autotrader, která jsou k dispozici v TradingRoom.
    SignalTrader je primárně určen k tomu, abychom mohli odesílat příkazy do trhu i z běžného počítače, tedy bez nutnosti speciálního serveru nebo VPS. Ke zpracování vstupů a výstupů z pozic v rámci swingových přístupů skutečně stačí jediný denní start skriptu.
    Přehled novinek k březnu 2025:
    Změna názvu na SignalTrader. Nově jsme upravili strukturu kódu tak, aby byla každá strategie ošetřena proti chybám samostatně. Pokud se tedy vyskytne chyba v jedné strategii, ostatní proběhnou bez přerušení celého procesu. Změnili jsme princip připojení k IB, kdy držíme jedno připojení po celou dobu běhu skriptu. Při startu programu se vytvoří objekt IB, který zůstane aktivní, dokud neproběhnou všechny dotazy. Součástí řešení je skript Generátor, který slouží k přípravě obchodních signálů. Ten jsme rozšířili o možnost získání signálů z dashboardu TradingRoom a Techlabu. Nově tak může pracovat ve třech režimech Amibroker/TradingRoom/TechLab. Vytvořili jsme vlastní knihovnu ib_utils, která zjednodušuje komunikaci s IB a sdružuje funkce pro práci s daty. Také jsme připravili nový modul logování (zápisu informací o průběhu skriptu), nově se do jednoho logu zapisují informace o průběhu všech skriptů. Jedním z hlavních cílů upgradu bylo začlenění dalších typů příkazů. Úpravou logiky vytváření příkazů jsme získali možnost odesílat do trhu většinu typů příkazů podporovaných IB. Změnili jsme způsob vytváření výsledného reportu, nově se používá šablona, která umožňuje změny vzhledu reportu pomocí HTML kódu. Kompletní popis změn a link ke stažení SignalTraderu naleznete v TechLabu zde: https://www.financnik.cz/forum/topic/5282-signaltrader-popis-zmen-v-nove-verzi-autotraderu/#comment-322413
    Ukázka, jak může SignalTrader pomoci v praxi
    Pokud s tradingem začínáte, snadno můžete mít představu, že celý úspěch v obchodování spočívá v tom, že budete čekat na určitý pattern v trhu, vyčkáte, až se objeví, a pak začnete vydělávat. Praxe je ovšem odlišná. V dnešním světě plném algoritmických systémů je třeba umět pracovat s různými přístupy a skládat je do portfolií.
    Ve Workshopu profitabilního obchodování od A do Z, se kterým na Finančníkovi většina traderů začíná,  například pracujeme s pěti swingovými systémy – jedná se o long mean reversion, short mean reversion, momentum strategii a nákupy dipů do trendu. Každý z těchto systémů má v čase období, kdy generuje profit, ale také fáze, kdy si prochází drawdownem.
    Takto vypadají výkonnostní křivky jednotlivých systémů:

    Vzájemnou kombinací jednotlivých systémů ovšem dostáváme vyváženou portfolio-equity, která může vykazovat mnohem hladší růst bez extrémních propadů (portfolio equity křivku reprezentuje horní modrá linka ukazující, jak se mění stav účtu po jednotlivých obchodech individuálních strategií - poplatky dle Interactive Brokers jsou započítány):

    Konkrétně výukové portfolio Workshopu právě v březnu 2025 vytvořilo nová maxima, a to navzdory poklesu amerických akcií v uplynulých týdnech. Opět to ukazuje, že diverzifikace je velkou přidanou hodnotou systematického obchodování.
    Celé podobné portfolio můžeme sice obchodovat ručně, avšak v praxi to vyžaduje denní kontrolu a zadávání příkazů (byť to vše je operace na max. půl hodinu denně).
    S využitím SignalTraderu lze celý proces výrazně zjednodušit. Stačí jej spustit, nechat ho, aby zkontroloval generované signály, zrevidoval otevřené pozice a odeslal příkazy do trhu. Zde je ukázka, jak vše konkrétně funguje:

    SignalTrader načte signály z uvedeného zdroje – mohou to být vaše vlastní signály generované z Amibrokeru či jiného softwaru, nebo signály z Trading Room a postará se o jejich zadání do Interactive Brokers. A to včetně toho, že podle zadaných pravidel ošetří i uzavírání obchodních pozic.
    Závěrečné myšlenky k automatizaci v tradingu
    Automatizaci sám vnímám jako klíčovou činnost (nejen v tradingu). Snažím se automatizovat jakékoliv rutiny.
    Pokud obchodujete diskrečně, měli byste si sami odpovědět na to, jestli se vám skutečně vyplatí věnovat čas tomu, abyste třeba hodiny pozorovali trhy a pak ručně provedli nákup nebo prodej. Podle mě lze čas investovat lépe.
    A věřte mi, že drtivá většina činností spojených s tradingem lze efektivně automatizovat a ušetřit opravdu hodně času.
    Pro automatizaci je možné využít hotových komerčních řešení jako je například TradeStation či mnoho podobných programů. Pro práci s Python skripty jsme se rozhodli kvůli univerzálnosti. Dnešní doba je velmi dynamická a člověk snadno narazí na určitý vlastní způsob tradingu, který není v klasických retailových platformách běžně nebo snadno implementovatelný. V Python skriptech toto není problém, protože nabízejí naprostou svobodu v tom, jak si je připravíme. Navíc s dnešními možnostmi programů typu chatGPT dokáže Python skripty upravovat i naprostý neprogramátor (ostatně sám jsem ještě před pár roky neuměl naprogramovat ani makro v Excelu).
    Na Finančníkovi vycházíme z toho, že je ideální mít hotové a funkční řešení, které stačí jen nainstalovat a spustit a získávat praxi. Postupně pak zvažovat vlastní rozšiřování a úpravy. Proto je k dispozici SignalTrader, který se dá snadno implementovat podle podrobných návodů v TechLabu. Není nutné vědět, jak přesně Python skripty fungují. V ideálním případě vás ale nové možnosti motivují k dalšímu studiu a začnete Python využívat i v oblasti správy dat nebo k jiné automatizaci (viz přehled minikurzů dostupných v rámci TechLabu: https://www.financnik.cz/forum/info/ostatni/minikurzy-prehled). Postupem času tak sami zjistíte, jak si hotové řešení upravit podle svých představ, a stanete se skutečně plně automatizovanými tradery stejně jako my.
     

    Developer

    V rámci algoritmického obchodování (vývoj tzv. aos) představuje developer klíčovou osobu, která se zabývá návrhem, vývojem a údržbou automatických obchodních systémů. Jeho úkolem je propojit teoretické know-how o trzích a programovací dovednosti do fungujícího softwaru, který dokáže samostatně identifikovat obchodní příležitosti a zadávat příkazy na burze.
    Požadované znalosti a dovednosti
    Developer se orientuje ve finančních trzích, aby dokázal aplikovat vhodné matematické a statistické modely. Současně ovládá programovací jazyky (například Python, C++ nebo Java) a rozumí práci s databázemi, protože automatizovaný systém musí pracovat s velkým množstvím dat v reálném čase. Důležitá je také schopnost optimalizovat algoritmy a efektivně pracovat s výpočetní technikou.
    Proces vývoje
    Práce developera obvykle začíná tvorbou obchodní strategie na základě hypotéz, testováním na historických datech (backtest) a poté vyhodnocením robustnosti výsledků (např. kontrolou out-of-sample období). Následně probíhá implementace do reálného provozu, kdy systém provádí obchodní transakce. Developer průběžně sleduje jeho chování, reaguje na změny tržního prostředí a v případě potřeby strategii či kód systému přizpůsobuje.
    Význam pro obchodníky
    Díky práci developera dokáže systematický obchodník udržet odstup od emocí a spolehnout se na jasně definovaný algoritmus. Výhodou je také schopnost rychle analyzovat a obchodovat velké množství trhů, což by manuálně nebylo možné. Developer je proto pro moderní systémové obchodování nepostradatelným článkem, který posouvá možnosti využití digitálních technologií v oblasti tradingu.

    Mé workflow vývoje intradenních systémů

    S tím, jak postupně do svého automatizovaného portfolia nasazuji i intradenní systémy, jsem si pro sebe definoval určité „workflow“, s nímž systémy tvořím. Zde jsou tipy, které mohou pomoci i vám.
    Obsah článku:
    Jak na intradenní obchodní systémy? Vývoj systémů na denních datech Intradenní stop-lossy na denních datech Prototypování systémů vs. jemné testování Ukázka workflow Závěr K příspěvku mě dovedl tento dotaz v Trading Room:

    Jak na intradenní obchodní systémy?
    Předně žádná cesta v rámci intradenního obchodování nebude bez práce. Tedy samozřejmě kromě té, kdy si koupíte nějaký zázračný software, kde vám po stisknutí tlačítka začne sám připravovat zaručeně robustní AOS.
    Sám na podobné zázraky nevěřím, a tak nezbývá než investovat čas do ručního testování různých nápadů, ze kterých následně tvořím reálné „idea first“ obchodní systémy.
    Potíž s intradenními systémy je především v tom, že pracujeme s ohromným množstvím dat. Bez ohledu na zvolený software je vše výrazně pomalejší, náročnější na hardware a do velké míry i na know-how. S jemnými intradenními daty lze vymýšlet násobně více taktik než na denních datech, což s sebou přináší i výrazně vyšší riziko přeoptimalizace, chyb v kódech či v následném automatizovaném obchodování.
    Osobně se mi tak osvědčilo vyvíjet intradenní systémy na denních datech.
    Vývoj systémů na denních datech
    Denní data obsahují informace o otevírací a uzavírací ceně, denní minimální ceně a denní maximální ceně. S denními daty se proto pracuje velmi efektivně – za rok máme přibližně 250 úseček. Pracovat pak lze v programech, jejichž ovládání známe ze swingového obchodování (např. Amibroker).
    Ovšem jak na denních datech vyvíjet intradenní systémy? Tím, že nevidíme „dovnitř“ denních úseček, tak pochopitelně můžeme vyvíjet jen určité typy intradenních systémů. Například jednoduché breakout či mean reversion systémy vycházející z denní otevírací ceny či jiného fixního bodu denních grafů.
    Nemůžeme tak například vytvářet obchodní systém obchodující průlom např. 5minutového otevírací rozpětí popisovaného v článku Jak na první daytrading autotrader [včetně funkční strategie a kódu]. Z mé zkušenosti to ale tolik nevadí. Protože i jen na denních datech lze najít mnoho funkčních intradenních přístupů (sám jsem takto dříve vyvinul Finwin, který dnes obchoduji řadu let).
    Intradenní stop-lossy na denních datech
    Největším úskalím při vývoji intradenních obchodních systémů na denních datech jsou stop-lossy. Na denních datech nevidíme „dovnitř“ úseček a jen těžko se odhaduje, jestli byla u obchodu dříve zasažena úroveň stop-lossu, vstupu či výstupu.
    Osobně tak začínám s vývojem strategií s velmi vzdáleným, nebo žádným stop-lossem. Ve svých systémech často pracuji s indikátorem ATR a jedním z typických příkladů vzdáleného stop-lossu je 1xATR. Takový už bývá spolehlivě identifikovatelný i na denních grafech.
    Ve svých testech tak chci nacházet strategie, které relativně stabilně fungují i s velkými stop-lossy. A teprve až takovou strategii objevím, otestuji ji na intradenních datech.
    Prototypování systémů vs. jemné testování
    Svou práci tak můžu rozdělit do dvou základních kroků:
    Prototypování systému na denních datech Finální backtest hotového prototypu na intradenních datech Pokud jste vývoj intradenního systému nikdy nezkoušeli, možná nevidíte v rozdělení práce do zmíněných bodů žádný zásadní benefit.
    Pro mě tam rozdíl je – především v efektivitě. Nejsem programátor a s jakýmkoliv skriptováním bojuji. A skriptování na intradenních datech je pro mě násobně náročnější než na denních. Při hledání nových obchodních přístupů testuji průběžně řadu různých myšlenek. Mohu například zkoumat signály vycházející z korelace či divergencí trhů, sezonality, market internals a podobně. Podobné testy mám na denních grafech hotové velmi rychle.
    A pokud vypadá nějaká myšlenka nadějně, tak teprve potom věnuji pozornost přípravě intradenního kódu, pro který nejčastěji používám TradeStation či Python.  V momentě, kdy vím, co přesně potřebuji naskriptovat, už to nemusí být tolik složité.
    Ve finálních testech s intradenními daty navíc první backtesty provádím se vzdáleným stop-lossem podobně, jako jsem to dělal ve fázi prototypování. A logicky bych měl dostávat podobné výsledky, čímž si ověřuji funkčnost svých kódů.
    Ukázka workflow
    Na denních datech testuji různé myšlenky. Jedním z dobrých směrů může být například intradenní breakout na akciovém indexu. Např. Nasdaq 100. Breakout systém má v principu jednoduchou konstrukci. Vezmeme nějaký počáteční bod – např. denní open, poslední close, nejvyšší high za posledních x dnů a podobně, přidáme k bodu určitou vzdálenost (sám rád pracuji s násobkem ATR), a pokud trh tuto úroveň překoná, zaznamenáme long breakout a držíme pozici do dosažení profitargetu či do konce dne. Pokud se trh obrátí, vystoupíme na stop-lossu. Jak jsem zmínil, u prototypů podobných systémů na denních grafech používám vzdálený stop-loss (např. 1xATR).
    Testy na uvedené úrovni jsou např. v Amibrokeru velmi jednoduché s tím, že do popsané kostry systému budete chtít zakomponovat pravděpodobně ještě nějaký „filtr“. Bez toho nebude systém reálně obchodovatelný.
    A takto může vypadat výsledek prototypu:

    Pro ilustraci jsem zobrazil equity křivku prototypu „long intradenní breakout v Nasdaq 100“ vytvořenou pouze z denních úseček (modrá barva) vs. finální backtest s využitím intradenních dat (oranžová barva). 
    Equity křivky nejsou úplně stejné zejména proto, že v tomto případě intradenní backtest probíhal v Pythonu, kde se mi trochu jinak počítá ATR než v Amibrokeru. Podobné detaily nejsou z mé zkušenosti podstatné, protože ve finálním živém obchodování se do procesu živého obchodování na burze stejně dostává určitý prvek náhody.
    Ale to podstatné je jistě patrné – prototyp se vzdáleným stop-lossem (1xATR) odpovídá finálnímu intradennímu backtestu.
    Funguje to samozřejmě i na delší historii dat:

    Finální myšlenku pak už ladím v samotném intradenním backtesteru. Zde zejména testuji jemnější práci s bližšími stop-lossy. Protože ty z mé zkušenosti nelze na denních datech používat – vedou k příliš optimistickým závěrům.
    Dobře je to patrné na tomto screenshotu:

    Zde jsem v prototypu na denních datech snížil stop-loss na 0,4x ATR (modrá linka) a následně provedl stejný backtest na intradenních datech (oranžová linka). Je zde patrné, že pokud bychom malý stop-loss použily už v prototypu pracujícím s denními daty, budou naše závěry z backtestu příliš optimistické.
    Závěr
    Dnešní tip ukazuje, že pokud budete určitý typ intradenních systémů prototypovat na denních datech, můžete se poměrně dobře na výsledky spolehnout za předpokladu, že budete pracovat se vzdálenějšími stop-lossy (např. 1xATR).
    Pokud se tak chcete do vývoje intradenních systému pustit, můžete začít právě na denních datech. A teprve až budete mít hotový funkční prototyp (jakože najít obchodní systém trvá určitě týdny až měsíce), pak už není zas takový problém konkrétní jednu finální myšlenku převést do příslušného intradenního backtesteru (např. s použitím TradeStation).
    Jinými slovy – není třeba se od počátku stresovat z potřeby ovládnutí dalšího softwaru. Ale je možné začít na stejném softwaru, který používáte pro analýzy denních grafů a teprve, až budete mít jasnou představu o potenciálním intradenním obchodním systému (podloženou funkčním prototypem) tak řešit, jak systém finálně otestovat na intradenních datech.
×
×
  • Vytvořit...