Algo trading pro každého: Uvažování nad vstupními podmínkami a jejich mechanizace (2. díl)

V minulé kapitole jsme si rozebrali úvod do algoritmického obchodování, kde jsme si řekli celkový úvod do tohoto seriálu včetně toho, co vše budeme probírat v budoucnu. Dnes začneme druhou kapitolu našeho seriálu o algoritmizaci a podíváme se na uvažování nad vstupními podmínkami a jejich mechanizace, což je velmi důležité téma, které nás bude potkávat při každé tvorbě jakékoli strategie. V dnešní kapitole probereme postup, jakým způsobem uvažovat v mechanizaci vstupních a výstupních podmínek.
Problém subjektivity v tradingu
Jedním z hlavních problémů ručního obchodování je vysoká míra subjektivity. Obchodník často vstupuje do trhu na základě pocitu, vizuálního dojmu nebo volně definovaného pravidla, například že „trh vypadá silně“, „cena odmítla support“, „momentum slábne“ nebo že „struktura trhu naznačuje pokračování pohybu“. Takové uvažování může mít své místo u diskrečního obchodování, kde trader rozhoduje podle zkušeností, kontextu a vlastního čtení trhu. Pro algoritmické obchodování je však tento přístup problémový, protože počítač nedokáže vyhodnotit neurčité pojmy typu „silný trh“ nebo „hezká reakce na úroveň“, pokud nejsou převedeny do přesných a měřitelných podmínek. Právě zde vzniká rozdíl mezi běžným retailovým přístupem a systematickým. Základním přístupem je, že profesionální obchodování nestojí na pocitech, ale na datech, statistice, testování a přesně definovaných pravidlech. Institucionální obchodník se nesnaží odhadovat každý jednotlivý obchod podle aktuální nálady, ale vytváří strategii, u které zná očekávaný výnos, maximální drawdown a typické série zisků a ztrát. Zároveň tráví většinu času vývojem, backtestováním a optimalizací strategií, nikoliv manuálním procházením grafů a hledáním situací, které „vypadají dobře“. Z toho plyne důležitá myšlenka pro algoritmizaci: subjektivní tržní nápad je pouze začátek, nikoliv hotová strategie. Aby bylo možné strategii naprogramovat, otestovat a později automaticky obchodovat, musí být každé pravidlo přepsáno do objektivní formy. Místo formulace „vstoupíme, když je trh silný“ musíme říct například: „vstoupíme do long pozice, pokud je zavírací cena nad 20periodovým klouzavým průměrem, zároveň je objem vyšší než jeho 30periodový průměr a cena prorazila maximum předchozích X svíček“. Teprve v takové podobě se z obchodního dojmu stává mechanizované pravidlo, které lze jednoznačně vyhodnotit, zakódovat a zpětně ověřit na historických datech.
Trading Strategy Elements
Jakmile si uvědomíme problém subjektivity, dalším krokem je rozložit obchodní strategii na jednotlivé části, které lze přesně popsat a později mechanizovat. Obchodní strategie totiž není pouze samotný vstup do trhu. V systematickém přístupu musí být předem definováno:
1. Kdy do obchodu vstoupíme?
2. Kdy z něj vystoupíme?
3. Za jakých podmínek realizujeme zisk?
4. Kde omezíme ztrátu?
5. Jak velkou pozici otevřeme?
Tento rámec popisujeme pomocí základních prvků strategie:
1. Vstupní logika
2. Výstupní logika
3. Take-Profit
4. Stop-Loss
5. Position sizing
Právě tyto části tvoří kostru každého obchodního systému. Pokud některá z nich chybí nebo je definována příliš obecně, strategie zůstává neúplná a nelze ji spolehlivě otestovat ani automatizovat. Například pravidlo „nakoupíme při proražení rezistence“ samo o sobě nestačí. Musíme vědět, co přesně znamená rezistence, jak bude proražení měřeno, na jaké svíčce vstoupíme, kdy obchod ukončíme, jaký bude stop-loss, zda použijeme take-profit a jak velká bude obchodovaná pozice. Teprve když jsou všechny tyto prvky přesně definované, můžeme o strategii uvažovat jako o objektivním systému, který lze převést do kódu a následně ověřit na historických datech. Tento postup je důležitý i proto, že nutí obchodníka přemýšlet strukturovaně. Místo snahy „najít dobrý obchod“ se zaměřuje na vytvoření pravidel, která lze opakovat, měřit a vyhodnocovat. Tím se trading postupně posouvá od subjektivního rozhodování k systematickému procesu.
Vstupní logika
Vstupní logika zahrnuje všechny podmínky, které při svém splnění spustí otevření long nebo short pozice. Strategie by měla být navržena tak, aby otevřela obchod pouze tehdy, když jsou splněny všechny předem definované vstupní podmínky. Tyto podmínky musí být jasné, konkrétní a objektivní, aby je bylo možné převést do kódu. Například u bias strategie může být obchodní myšlenka postavena na otázce, jak by si vedla strategie, která shortuje futures na S&P 500 každý den v 9:30 ET a uzavírá pozici v 10:00 ET. Vstupní logika by zde byla velmi jednoduchá: otevřít short pozici přesně v 9:30 ET, přičemž splněnou podmínkou je čas 9:30 ET. U mean reversion strategie může být obchodní myšlenka například taková, že pokud EuroStoxx50 klesá, zatímco S&P 500 roste, strategie otevře long pozici na EuroStoxx50 a zároveň short pozici na S&P 500. Splněné podmínky by v tomto případě byly dvě: výnos EuroStoxx50 je menší než 0 % a výnos S&P 500 je větší než 0 %. Základní princip je tedy vždy stejný, obchodní pravidla musí být definována tak přesně, aby bylo jednoznačně jasné, kdy má strategie do trhu vstoupit.
Výstupní logika
Výstupní logika představuje soubor pravidel, která určují, kdy má být již otevřená obchodní pozice ukončena. Stejně jako u vstupní logiky platí, že tato pravidla musí být jasná, objektivní a snadno převoditelná do kódu. Nestačí tedy říct, že obchod ukončíme „až bude zisk dostatečný“ nebo „když se trh začne otáčet“. Algoritmus potřebuje přesně vědět, za jakých podmínek má pozici zavřít. Výstupní logika proto obvykle zahrnuje tři základní části: take-profit, stop-loss a případné dodatečné výstupní podmínky. Take-profit určuje, kde strategie realizuje zisk, stop-loss definuje maximální přijatelnou ztrátu a dodatečné podmínky mohou zahrnovat například časový výstup, trailing stop nebo ukončení obchodu při změně indikátoru. Dobře navržená výstupní logika je klíčová, protože strategie není kompletní pouze tím, že ví, kdy vstoupit do trhu. Musí také přesně vědět, kdy a proč z trhu vystoupit.
Take-Profit
Take-Profit představuje pravidlo, podle kterého strategie ukončuje obchod se ziskem. Stejně jako vstupní a výstupní logika musí být i take-profit definován objektivně, aby bylo jasné, za jakých okolností má algoritmus pozici zavřít. Existuje více způsobů, jak take-profit nastavit. Může být například fixní, tedy stanovený jako konkrétní částka nebo počet bodů od vstupní ceny. U long pozice by byl umístěn nad vstupní cenou, u short pozice pod vstupní cenou. Další možností je procentuální take-profit, kdy se obchod ukončí po dosažení určitého procentního pohybu. Take-profit může být také indikátorový, například při dosažení určité hodnoty RSI nebo při překřížení klouzavých průměrů, případně volatilní, kdy se cíl přizpůsobuje aktuální nebo historické volatilitě trhu. Další variantou je trailing take profit, který se posouvá spolu s příznivým pohybem ceny, časový výstup, kdy se pozice uzavře v předem určený čas, nebo škálování výstupu, kdy se pozice zavírá po částech na více cenových úrovních. Ideální je začínat u fixního take-profitu, protože je nejjednodušší, snadno se programuje a zároveň se dobře ověřuje, zda se strategie chová podle očekávání. Pokud strategie vykazuje dobré výsledky už s jednoduchým fixním take-profitem, může to být první signál, že základní logika strategie dává smysl. Později je samozřejmě možné testovat více variant take-profitu a pomocí optimalizace hledat vhodnější nastavení. Důležité ale je, že první hodnota nemusí být dokonalá. Na začátku stačí zvolit rozumný výchozí bod, který bude později možné systematicky otestovat a případně upravit.
Stop-Loss
Stop-loss představuje pravidlo, které určuje, kdy má strategie ukončit obchod se ztrátou. Stejně jako u take-profitu musí být i stop-loss jasně definovaný, objektivní a převoditelný do kódu. Jeho hlavním úkolem není předpovědět trh, ale chránit kapitál a omezit maximální ztrátu v případě, že se obchod nevyvíjí podle očekávání. Stop-loss může být nastaven několika způsoby. Nejjednodušší variantou je fixní stop-loss, kdy se obchod ukončí při dosažení určité peněžní ztráty nebo určité vzdálenosti od vstupní ceny. U long pozice je stop-loss umístěn pod vstupní cenou, u short pozice nad vstupní cenou. Další možností je procentuální stop-loss, který ukončí obchod po poklesu nebo růstu ceny o předem stanovené procento. Stop-loss může být také indikátorový, například při překřížení klouzavých průměrů nebo při dosažení určité hodnoty RSI, případně volatilní, kdy se jeho vzdálenost přizpůsobuje aktuální volatilitě trhu. Často se používá také trailing stop-loss, který se posouvá ve směru příznivého pohybu ceny a pomáhá chránit již dosažený zisk. Další variantou může být časový stop-loss, kdy se pozice ukončí po určité době bez ohledu na cenu, break-even stop, který po dosažení určitého zisku posune stop-loss na vstupní cenu, nebo podmíněný stop-loss, který reaguje na specifické tržní či externí události. Stejně jako v předchozím příkladu je ideální začínat u fixního stop-lossu, protože je jednoduchý, snadno se programuje a dobře se kontroluje při testování strategie. Přesná počáteční hodnota stop-lossu nemusí být dokonalá, protože v další fázi vývoje strategie lze testovat různé kombinace stop-lossu a take-profitu pomocí optimalizace. Důležité ale je stop-loss nevynechávat, protože jde o základní nástroj řízení rizika. Strategie může mít dobré vstupy i výstupy, ale bez jasně definovaného omezení ztráty se může stát kapitálově neudržitelnou. Zároveň platí, že poměr mezi rizikem a ziskem nemusí být vždy vyšší než 1. Strategie s vysokou úspěšností obchodů může být zisková i při horším risk-reward poměru, pokud její statistické výsledky dlouhodobě dávají smysl.
Position sizing
Position sizing neboli určení velikosti pozice je jeden ze základních prvků řízení rizika, podobně jako stop-loss. Zatímco stop-loss říká, kde bude obchod ukončen v případě nepříznivého vývoje, position sizing určuje, kolik kapitálu bude v daném obchodu skutečně vystaveno riziku. Při backtestování se často používá jednoduché nastavení, například jeden kontrakt, jedna akcie nebo jeden mikrolot, aby bylo možné nejdříve vyhodnotit samotnou logiku strategie. Před spuštěním strategie na reálném účtu je ale nutné velikost pozice přizpůsobit velikosti kapitálu a rizikové toleranci obchodníka. Ideální postup je ten, že se nejdříve zjistí maximální drawdown strategie v backtestu, poté se stanoví, jak velkou ztrátu je obchodník ochoten vzhledem ke svému účtu akceptovat, a nakonec se podle toho vypočítá odpovídající velikost pozice. Pokud například strategie při obchodování jednoho kontraktu dosáhla v backtestu maximálního drawdownu 1 000 USD a obchodník má účet 100 000 USD, ze kterého je ochoten riskovat maximálně 2 %, tedy 2 000 USD, potom může použít dva kontrakty. Tím se velikost pozice nenastavuje náhodně ani pocitově, ale podle vztahu mezi kapitálem, historickým rizikem strategie a osobní tolerancí ke ztrátě. Díky tomu se strategie škáluje realisticky a obchodník nepodstupuje větší riziko, než jaké je vzhledem k jeho účtu a charakteru strategie přijatelné.

Konkrétní ukázka: trendová strategie podle proražení trhu
Aby bylo lépe vidět, jaký je rozdíl mezi subjektivním a objektivním přístupem, můžeme si ukázat jednoduchý příklad trendové strategie založené na proražení předchozího cenového rozpětí.
Diskreční obchodník by takovou strategii mohl popsat například tak, že chce nakupovat ve chvíli, kdy trh vypadá silně a proráží důležitou rezistenci, a naopak prodávat ve chvíli, kdy trh vypadá slabě a proráží důležitý support. Takový popis ale stále obsahuje mnoho subjektivních pojmů. Není přesně jasné, co znamená „silný trh“, co je „důležitá rezistence“, kdy přesně je proražení platné, jak se bude určovat výstup, jak velká bude ztráta a jak velká pozice se má otevřít. Pro ručního obchodníka to může být srozumitelné, protože si vše vyhodnotí podle grafu. Pro algoritmus je to ale nepoužitelné, protože ten potřebuje přesné podmínky.
A) Subjektivní definice strategie
Trader si definuje strategii například následovně:
„Strategie bude vstupovat do trhu tehdy, když cena prorazí důležitou úroveň a bude zřejmé, že trh má sílu pokračovat ve směru průrazu. Pokud trh prorazí rezistenci a momentum bude silné, otevřeme long pozici. Pokud naopak trh prorazí support a bude patrná slabost, otevřeme short pozici. Z obchodu vystoupíme ve chvíli, kdy trh dosáhne rozumného zisku, případně pokud se ukáže, že průraz byl falešný. Stop loss umístíme za nejbližší významnou úroveň a velikost pozice přizpůsobíme podle aktuální situace na trhu.“
Toto je typický subjektivní popis. Problém je, že obsahuje výrazy jako „důležitá úroveň“, „trh má sílu“, „momentum bude silné“, „rozumný zisk“, „falešný průraz“ nebo „nejbližší významná úroveň“. Každý obchodník si je může vyložit jinak, a proto taková strategie nejde jednoznačně naprogramovat ani přesně otestovat.
B) Objektivní mechanizace strategie
Níže je stejná strategie převedená do přesnější podoby podle pěti základních prvků obchodního systému, které jsou následující: vstupní logika, výstupní logika, take-profit, stop-loss a position sizing.
Každý z těchto prvků může být rozdělen ještě na short leg a long leg, tedy na vstupy do longu a do shortu.
1.1. Vstupní logika
a) Long leg:
Strategie otevře long pozici, pokud zavírací cena aktuální svíčky uzavře nad maximem posledních 20 svíček. Zároveň musí být aktuální zavírací cena nad 50periodovým klouzavým průměrem, aby byl potvrzen rostoucí trend. Obchod se otevře na open následující svíčky.
Objektivní pravidlo pro long:
Close > Highest(High, 20)[1]
Close > SMA(50)
vstup na open další svíčky (zapsáno samozřejmě kodem)
b) Short leg:
Strategie otevře short pozici, pokud zavírací cena aktuální svíčky uzavře pod minimem posledních 20 svíček. Zároveň musí být aktuální zavírací cena pod 50periodovým klouzavým průměrem, aby byl potvrzen klesající trend. Obchod se otevře na open následující svíčky.
Objektivní pravidlo pro short:
Close < Lowest(Low, 20)[1]
Close < SMA(50)
vstup na open další svíčky
Tímto se subjektivní formulace „trh proráží důležitou úroveň a má sílu“ mění na přesné pravidlo. Důležitá rezistence je definována jako nejvyšší high za posledních 20 svíček, důležitý support jako nejnižší low za posledních 20 svíček a síla trhu je zjednodušeně potvrzena polohou ceny vůči 50periodovému klouzavému průměru.
2.2. Výstupní logika
a) Long leg:
Long pozice bude ukončena, pokud nastane jedna ze tří situací: cena dosáhne take-profitu, cena dosáhne stop-lossu, nebo se cena vrátí zpět pod 50periodový klouzavý průměr. Tím vzniká nejen pevné řízení zisku a ztráty, ale také dodatečná výstupní podmínka, která ukončí obchod, pokud trh ztratí trendovou strukturu.
b) Short leg:
Short pozice bude ukončena, pokud nastane jedna ze tří situací: cena dosáhne take-profitu, cena dosáhne stop-lossu, nebo se cena vrátí zpět nad 50periodový klouzavý průměr. Tím se strategie chrání před situací, kdy se trh po průrazu rychle otočí proti pozici.
Samozřejmě tento odstavec je především definován v rámci také profitu a stop-lossu, ale v tomto článku si pro pochopení uvádíme i tuto výstupní logiku, aby bylo všem vše jasné.
3.3. Take-Profit
a) Long leg:
Take-profit u long pozice bude nastaven ve vzdálenosti 2násobku risku od vstupní ceny. Pokud tedy strategie riskuje například 100 USD na jeden obchod, cílový zisk bude 200 USD.
Objektivní pravidlo pro long:
Take-Profit = Entry Price + 2 × Risk
b) Short leg:
Take-profit u short pozice bude nastaven ve vzdálenosti 2násobku risku od vstupní ceny. Pokud strategie riskuje 100 USD na jeden obchod, cílový zisk bude 200 USD.
Objektivní pravidlo pro short:
Take-Profit = Entry Price - 2 × Risk
Tím se neurčitý pojem „rozumný zisk“ mění na konkrétní pravidlo. Strategie tedy přesně ví, kde má zisk realizovat.
4.4. Stop-Loss
a) Long leg:
Stop-loss u long pozice bude umístěn pod minimum vstupní svíčky nebo ve vzdálenosti 1 ATR od vstupní ceny. Pro větší objektivitu můžeme použít volatilitu trhu přes indikátor ATR.
Objektivní pravidlo pro long:
Stop-Loss = Entry Price - 1 × ATR(14)
b) Short leg:
Stop-loss u short pozice bude umístěn nad maximum vstupní svíčky nebo ve vzdálenosti 1 ATR od vstupní ceny.
Objektivní pravidlo pro short:
Stop-Loss = Entry Price + 1 × ATR(14)
Tím se subjektivní formulace „stop-loss dáme za významnou úroveň“ převádí na přesné pravidlo. ATR navíc umožňuje, aby se stop-loss přizpůsobil aktuální volatilitě trhu.
5.5. Position sizing
Long i short leg:
Velikost pozice bude určena podle pevně stanoveného rizika na obchod. Například obchodník může riskovat maximálně 1 % účtu na jeden obchod. Pokud má účet hodnotu 100 000 Kč, maximální ztráta na jeden obchod bude 1 000 Kč. Velikost pozice se potom vypočítá podle vzdálenosti mezi vstupní cenou a stop-lossem.
Objektivní pravidlo:
Velikost pozice = maximální riziko na obchod / vzdálenost mezi vstupem a stop-lossem
Například pokud je maximální riziko 1 000 Kč a vzdálenost mezi vstupem a stop-lossem odpovídá 250 Kč na jeden kontrakt nebo jednotku, strategie otevře 4 jednotky.
Velikost pozice = 1 000 / 250 = 4 jednotky
Tím se subjektivní přístup „vezmu menší nebo větší pozici podle situace“ mění na přesný risk management. Strategie tak neřeší pouze to, kdy vstoupit a vystoupit, ale také kolik kapitálu je v konkrétním obchodu vystaveno riziku. Tento výpočet nebo přístup k riziku samozřejmě nemusí být ideální, ale pro ukázku si můžeme ukázat jednodušší přístupy, než přejdeme do složitějších.
Shrnutí ukázky a kapitoly
Na této jednoduché ukázce je vidět, že mechanizace obchodní strategie neznamená pouze napsat kód. Nejdříve je nutné vzít běžný obchodní nápad a přepsat jej do přesných pravidel. Subjektivní strategie říká, že chceme obchodovat průraz důležité úrovně ve směru silného trhu. Objektivní strategie už ale přesně definuje, co znamená důležitá úroveň, co znamená síla trhu, kdy se vstupuje, kdy se vystupuje, kde je take-profit, kde je stop-loss a jak se vypočítá velikost pozice. Teprve v této podobě lze strategii zakódovat, otestovat a později případně automaticky obchodovat.
Tento článek sloužil především jako rychlá a krátká ukázka toho, jakým způsobem budeme postupovat v budoucnu. Co byste si měli odnést z tohoto článku, je především následující osnova tvorby: vstupní logika, výstupní logika, take-profit, stop-loss a position sizing. Ke každé části navíc přibude short a long leg. Jelikož s touto osnovou budeme nadále pracovat a připravovat roboty tak, aby kód samotné strategie, respektive její podmínky, neměli šanci „uniknout“ tam, kde bychom je nechtěli mít, tedy jednoduše aby robot dělal to, co má dělat přesně podle našich podmínek.
V následující kapitole si ukážeme práci s platformou, ve které budeme vyvíjet naše obchodní roboty.
Radek Zalubil
Tým FXstreet.cz
Související články
Čtěte více
-
Úvod do algoritmizace obchodních strategií (1. díl)
Vítejte u nového seriálu s názvem Algo trading pro každého, ve kterém si ukážeme spoustu užitečných věcí, jak algoritmizovat obchodní strategie bez znalosti programování od A do Z. Algoritmizace obchodních strategií už dávno není jen doménou profesionálních programátorů, kvantitativních analytiků a velkých fondů. Dnes si může vlastní automatický obchodní systém postavit prakticky každý, kdo má jasně definovanou myšlenku, disciplínu a ochotu převést své rozhodování do přesných pravidel, a to i bez znalostí programování. V tomto seriálu si postupně ukážeme, jak z obchodního nápadu vytvořit funkční AOS (Automatický Obchodní Systém), jak jej otestovat na historických datech, vyhodnotit jeho výsledky a připravit pro reálné nasazení. Zaměříme se přitom na praktickou stránku celého procesu tak, aby byl seriál srozumitelný i pro ty, kteří nemají programátorské zkušenosti, ale chtějí přestat obchodovat čistě intuitivně a začít nad strategiemi přemýšlet systematicky, objektivně a s důrazem na měřitelné výsledky.
Diskuse ke článku
| Diskuse je přístupná pouze pro registrované uživatele. |
| Přihlásit se | Nová registrace |






