Kam Chodit Na Trading Signály - Software Pro Vývoj Strategií

SOFTWARE PRO VýVOJ STRATEGií

Za dlouhou praxi v tradingu a to jak v retailovém, tak institucionálním, jsem zjistil, že nejožehavější téma je – kam chodit na neortodoxní myšlenky k vývoji strategií.

Hned na začátek je zapotřebí říct, že toto téma je pro trading klíčové a samozřejmě záleží, na jaký trh či soubor trhů danou myšlenku budete vyvíjet. 

Jak již bylo zmíněno v minulé kapitole, jedná se o základní aspekt vývoje strategií. U samotného vývoje strategií bývá obvyklé, že se v zásadě jedná o to přijít s myšlenkou na vstupní podmínky a výstupní podmínky. 

V dnešní době vysoké konkurence není jednoduché přijít s neortodoxní a zajímavou myšlenkou, která má potenciál. Tradeři, kteří léta letoucí pozorují trhy, jak se v daných situacích chovají, se mohou, jak již víte, docela jednoduše naučit programovat právě v EasyLanguage a svou myšlenku na trzích otestovat.

 Další možností je hledat inspiraci na internetu, v knihách, různých školeních. V poslední dekádě se rovněž i velice rozmohly technologie strojového učení a s tím i dostupné softwares, které dokáží tradingové myšlenky dokonce samy generovat. Samozřejmě neopomineme ani tuto zajímavou problematiku a zaměříme se na ni. 

A samozřejmě je zapotřebí říci, že tyto „trading ideas“ můžeme tvořit na základě samotné ceny daného trhu, ceny jiných trhů (například na základě korelací), externích fundamentálních dat (vyhlašování výsledků firem, reporty o nezaměstnanosti v USA, sentimentu z internetu, kdy kvantifikujeme články, tweety a různé další publikace do číselné podoby a vyhodnocujeme, jestli se jedná o pozitivní či negativní zprávu), atd. 

Důležité je vždy mít na paměti, že vstupní podmínky by měly mít za každých okolností prediktivní sílu a výstupní podmínky jasnou vnitřní logiku, proč by právě ty k dané vstupní podmínce měly fungovat. Pri vstupních a výstupních podmínkách by mělo být jasně dokázáno pomocí testů robustnosti, že skutečně fungují. 

Zkrátka možností a nápadů můžeme v tradingu mít pomalu nekonečné množství. A proto bude nejlepší se v tom pro začátek zorientovat a přehledně si trading idee kategorizovat:

Kategorizace trading nápadů dle:

Typu signálu

  • Vstupní (Entry)
  • Výstupní (Exit)

Typu využitých dat

1. Cenová data daného trhu použitá k predikci stejného trhu

  • Cenové patterny (Open, High, Low, Close)
  • Indikátory (Klouzavý průměr, RSI indikátor)

 

2. Cenová data jiných trhů použitá k predikci daného trhu

  • Přímá korelace trhů
  • Nepřímá korelace trhů

 

3. Fundamentální data (vyhlašování nezaměstnanosti)

4. Sentiment data (Tweety, News, atd.)

 

Způsobu hledání tradingových nápadů

  • Pozorování trhů
  • Převzaté myšlenky z internetu, knih
  • Technologie strojového učení (Genetické algoritmy atp.)

 

Jít s dobou… Aneb. Nebraňte se nejnovějším technologiím a nechte počítač hledat myšlenky za Vás

Problém diskréčních traderů spočívá v jejich naivitě. Na tomto světě se pohybuje obrovské množství amatérských traderů, kteří falešně věří signálům na vstupy a výstupy z pozic. 

Učí se různé formace v cenových datech, používají kdejaké indikátory, ale kdyby si danou strategii přeprogramovali do algoritmu a otestovali by ji, zjistili by na základě backtestu ke svému zděšení, že s velkou pravděpodobností v rámci minulosti nikdy nefungovala. 

A když v sobě najdou vůli strategii nakonec přeprogramovat a otestovat, jejich motivace pokračovat v tradingu začne značně pokulhávat. Zjistí totiž, že ať už vyzkouší jakýkoliv „ověřený“ nápad, backtesty bývají mizerné. 

Velice dobře si vzpomínám, když jsem byl v podobné situaci. Když jsem si osahal EasyLanguage a úspěšně v něm nabyl schopnosti dělat si základní backtesty, ke svému zděšení jsem zjistil, že najít strategii na jakýkoliv libovolný trh se jevilo jako nadlidský úkol.  

Ale co teď? Při průzkumu internetu jsem narazil na jeden software, který nadobro změnil můj trading a to razantně k lepšímu. Psal se rok 2012 a poprvé jsem měl možnost vyzkoušet software Adaptrade Builder, který je založený na principu genetického programování. 

Při správném nastavení softwaru jsem byl najednou schopen generovat obrovské množství strategií při závratné rychlosti. Problém nalezení strategie na základě vlastních myšlenek se tak přesunul do jiné roviny: Najednou tak vyvstal úplně jiný problém: Jak správně vybrat z tak obrovského množství vygenerovaných strategií tu správnou. Pojďme ale krok po kroku a nejprve si od začátku vysvětleme princip, jak vlastně tento software funguje.

Adaptrade Builder a princip genetických algoritmů

Pokud se chcete intenzivně zabývat vývojem robustních strategií, tento program Vám může ušetřit opravdu hodně času. Jedná se totiž o software, který zcela samostatně na základě náhody v kombinaci s genetickými algoritmy generuje kódy strategií pro jazykový program EasyLanguage v TradeStation či Multicharts (včetně kódů pro programy jako MetaTrader4 či AmiBroker). 

Ve své podstatě tento software automatizuje tradiční přístup tradera k vývoji strategií. V tradičním přístupu trader vyvíjí obchodní systémy na základě předpokladu, jak trhy „fungují“. Posléze dochází k určitým modifikacím obchodního systému metodou pokus-omyl, dokud trader nedosáhne akceptovatelných výsledků.

 Adaptrade Builder tento proces vykonává automatizovaně. Program vygeneruje původní populaci obchodních systémů díky náhodné selekci pravidel obchodního systému a vstupních + výstupních příkazů. Tato původní populace je pak „vyvíjena“ skrze nejsilnější generace za využití genetických algoritmů, které jsou řízeny předem nastavenými výkonnostními kritérii (tzv. fitness functions). 

Program buduje obchodní systémy na tréninkových, tzv. in-sample datech. Představte si, že trénujete nějakou sportovní disciplínu. Naleznete tu nejlepší techniku, kterou můžete a dosahujete s ní pravidelně nejlepších výsledků. Analogicky si představme obchodní systém, se kterým na in-sample datech dosahujete největší profitability s nejmenším drawdownem.

Posléze přijdou závody, které pro vás nejsou stěžejní (out-of-sample data). Na těchto závodech si buďto potvrdíte nebo vyvrátíte, že daná technika (v našem případě strategie) je velmi dobře funkční. 

Musíte však ještě danou techniku vypilovat, protože na mistrovství světa a olympiádě (live trading) bude mnohem větší konkurence. Pokud vám testy (testy robustnosti) potvrdí funkčnost, použijete úplně stejnou techniku, která se vám v rámci tréninku (in-sample) a závodu (out-of-sample) vyplatila.

Princip fungování

Esenciální výzvou při budování obchodní strategue je nalezení obchodních strategií, které dokáží detekovat „signál“ s prediktivní hodnotou i do budoucnosti, zatímco ignorují veškerý hluk a náhodně se tvořící patterny.

Je potřeba si uvědomit, že cenová data jsou nestacionární – statistické vlastnosti dat se v průběhu času mění, a proto je tento úkol poměrně velkou výzvou pro každého tradera. To, jestli má signál skutečnou prediktivní hodnotu, určujeme na základě Out-of-Sample testování.

Problém klasického přístupu k budování obchodních strategií:

Vzhledem k tomu, že počítač disponuje mnohem většími výpočetními schopnostmi než člověk, díky automatizovanému generování strategií za využití genetických algoritmů je budování úspěšných obchodních strategií pomocí Builderu mnohem rychlejší a neporovnatelně efektivnější.

 

Konkrétní příklad

Představte si, že máte:

50 typů vstupu s hodnotami parametrů od 1-50

50 typů výstupu s hodnotami parametrů od 1-50

Nyní chceme prozkoušet všechny možné kombinace vstupů, výstupů a hodnoty parametrů pro vstupy a výstupy za účelem nalezení nejlepší strategie, kterou vám definuje tzv. Fitness function, jak již bylo řečeno. Kolik dostaneme možných kombinací?

50 typů vstupu * 50 hodnot parametrů * 50 typů výstupu * 50 hodnot parametrů =

6 250 000 kombinací

Jak sami vidíte, není absolutně v lidských silách, abychom vyzkoušeli pár tisíc, natož

6 250 000 kombinací!

Dokonce i pro počítače, které dnes mají multijádrové procesory, je tento počet kombinací velice časově náročný (měsíce až roky).

Řešení:

Genetické algoritmy, na které se specializuje program Adaptrade Builder (Obrázek 1), tento problém příliš mnoha možných kombinací  (obchodních systémů) řeší na principu náhodné selekce definovaného souboru možných kombinací a jejich následných vylepšováním.

Obrázek 1: Adaptrade Builder Software

Pojďme si vysvětlit jak na základě předchozího příkladu. Máme:

50 typů vstupu s hodnotami parametrů od 1-50

50 typů výstupu s hodnotami parametrů od 1-50

Genetické algoritmy vyberou náhodně různé kombinace obchodních strategií (kolik jich bude si určujeme sami) a ty pak X krát vylepšíme napříč generacemi v rámci In-Sample dat. Při budovacím procesu napříč X generacemi budeme zároveň hledat kombinace úplně nové tak, abychom zajistili co největší diverzitu strategií.

V čem tedy spočívá základní výhoda stavby obchodních systémů pomocí genetických algoritmů?

Zcela jednoznačně v neuvěřitelné úspoře času a ve zvyšování pravděpodobnosti, že když vyzkoušíme obrovské množství různých kombinací obchodních systémů, zcela určitě najdeme ten, který bude vykazovat prvky robustnosti = tedy schopnosti vydělávat na dosud neznámých Out-Of-Sample datech.

Ve zkrácené podobě si vysvětlíme postup vývoje strategie při využití Builderu následně:

1. Import cenových dat s definovanou obchodní seancí pro trh nebo soubor trhů

Jak již bylo zmíněno, například platforma TradeStation disponuje velice kvalitními historickými daty, které můžete jednoduše vyexportovat do textového souboru. 

Tento soubor je plně kompatibilní s Adaptrade Builder, který soubor s cenovými daty jednoduše načte Z praxe máme velmi dobré zkušenosti s vývojem pro futures a akciovými trhy. Builder lze ale využít samozřejmě i na vývoj strategií pro Forex či kryptoměny. Příjemné rovněž je, že můžete vyvíjet strategie i na portfoliu různých trhů.

2. Nastavení genetiky (GP settings) a Fitness function (Build Metrics)

V základním nastavení genetiky určujeme spoustu faktorů. Tomuto tématu by se dala věnovat samostatná kapitola. Nicméně mezi nejzákladnější charakteristiky patří, že v tomto procesu to, že určíme velikost populace a minimální až maximální počet generací, skrze které budeme chtít strategii vylepšovat. 

Navíc i určíme, s jakou mírou náhody a křížení strategií budeme chtít pracovat. K této tématice si řekneme do budoucnosti mnohem více, doporučuji Vám tak sledovat naše videa a pečlivě číst články. Koncept budování strategií pomocí genetických algoritmů je fenomenální, ale je zapotřebí jej do hloubky správně pochopit pro to, abychom z něj vytěžili co možná nejvíce.

V sekci Build Metrics pak určujeme pomalu to nejpodstatnější:

  a) Fitness Function

Definováním Fitness Function Builderu jasně dáváme instrukce, jaké ideální statistické vlastnosti by strategie měly splňovat při jejich hledání v rámci budovacího procesu. Dvěma slovy se jedná především o kombinaci ziskovosti, stability výnosů a co nejnižší komplexnosti strategií. Namíchat tento mix podmínek pro budovácí proces je určitě součástí dobré know-how každého profesionálního tradera. Výhodou tohoto softwaru je, že tak lze velmi efektivně učinit.   

  b) Podmínky pro výběr tzv. Top Strategií (Conditions For Selecting Top Strategies)

V Build Metrics sekci si přesně nadefinujeme výkonnostní parametry, které musí strategie splnit, aby se nám uložila do databáze a my jsme s ní pak dále mohli pracovat a získat její kód a přehled o její výkonnosti, popřípadě jsme mohli na strategie aplikovat stres testy.

3. Stress Testy

Stres testy jsou vykonávány za účelem testování robustnosti obchodní strategie. Robustnost strategie značí, že je schopna se přizpůsobit měnícím se podmínkám trhu a mít stále požadovanou výkonnost – tedy ziskovost a stabilitu. 

Stres testy do podrobna rozebereme v jedné z dalších kapitol. V případě pracování s Builderem se rozhodujeme, jestli chceme stres testy používat během samotného budovacího procesu nebo je použijeme po budování strategií jako test robustnosti.

4. Určení základních charakteristik strategie (Market Sides)
  1. Long/ShortBuilder umožňuje vyvíjet strategie na obě strany
  2. Long Onlyzároveň však můžeme generovat pouze strategie do dlouhé pozice
  3. Short Onlynebo naopak do krátké pozice

Při volbě vývoje strategií na obě strany (Long/Short) je pak velice důležité dbát na správné nastavení typu obchodních příkazů pro relevantní backtesty. Dejte si na to obzvlášť velký pozor. Více o tomto budeme hovořit v budoucnosti na našich webových stránkách.

5. Nastavení logiky strategií (Strategy Logic)
  • Long/Short Symmetry

V této sekci si můžete určitě, jestli chcete vyvíjet strategii symetricky (Long/Short Symmetry) na obě strany. Tzn., že strategii prakticky zrcadlí své podmínky pro vstup i výstup a tím dělá strategie mnohem méně komplexní, což je samozřejmě žádoucí. Navíc, jenom těžko byste například pro akciové indexy vyvinuly strategii pouze na dlouhou (long) stranu a přitom porazili buy-and-hold strategii. Je třeba se vždy zamyslet i nad smyslem vývoje dané algo strategie a jedním ze základních principů je určitě to, abychom dokázali porazit hlavně z hlediska stability výnosů i dlouhodobé investiční strategie, což mimochodem právě u akcií od roku 2009 byl celkem velký problém. 

 

  • Limit entries per day to (X), Limitování počtů vstupů za den

Velmi důležitá funkce, která jasně určí, kolikrát maximálně za den jsme ochotni vstoupit do pozice. V tomto případě jsme pro vývoj smysluplných strategií používali maximálně jeden vstup za den. Problém u vícero vstupů za den může být v tom, že budete pomocí Builderu velice problematicky nacházet strategie, které by dokázaly pokrýt významné náklady na skluz v plnění (slippage) a komise. Čím déle držíte v průměru pozici, tím většího průměrného zisku na obchod (Average Trade) můžete dosáhnout.   

 

  • Definovat rozmezí času vstupu v rámci obchodní seance od X do Y (Trade entry from X to Y)

Někteří tradeři rádi definují časové rozmezí vstupů do pozic. Samozřejmě i tato časová podmínka vstupu může mít své opodstatnění, ale my jsme ji v praxi nikdy moc nevyužili. Rozhodně se dají v Builderu najít kvalitní strategie bez jakýchkoliv časových limitací.   

 

  • Vystoupit po X (Exit After)

V rámci strategie je možno si rovněž nastavit časové datum výstupu. Tuto funkci jsme ve vývoji strategií nikdy nevyužili.

 

  • Po otevření pozice nevstupovat do dalších, dokud se původní pozice neuzavře (Wait for exit before entering new trade)

Jedná se o jeden z klíčových prvků. Bez této možnosti by Builder vyvíjel strategie s velmi chaotickým a neuspořádaným kódem. Toto nastavení je velmi důležité pro tvorby principiálně jednoduchých strategií. Pamatujete, čím méně komplexnější strategie bude, tím lépe.

 

  • Mezi další možnosti nastavení, které zásadně nevyužíváme je možnost aplikovat Stop Loss v případě jeho použití hned na stejný bar (Apply protective stops on entry bar), ve kterém strategie vstoupí do pozice. Toto nastavení rozhodně nedoporučujeme používat, jelikož si nikdy nemůžete být jisti, jestli po nástupu do pozice došlo následně k setnutí stop-lossu nebo ne. Takže od tohoto nastavení dejte ruce pryč.

 

  • Rovněž nedoporučujeme vytvářet cenové deriváty, jako jsou průměry průměrů atd. (Allow nested indicators where applicable). Zbytečně to zvyšuje komplexitu strategií a upřímně nevidím v tvoření těchto pseudoindikátorů žádnou přidanou hodnotu
6. Indikátory (Indicators) a Cenové Patterny (Price Patterns)

Mezi velké výhody Builderu patří možnost vybrat si poměrně ze široké nabídky indikátorů, s kterými by měl software pracovat. Speciální pozornost bych ale chtěl věnovat možnosti vytvářet cenové patterny (Price Patterns). 

Tento program umí velmi dobře pracovat právě s cenovými patterny a vytvářet velmi nekonvenční logiky vstupů a výstupů, na které by člověk s velkou pravděpodobností ani nepřišel, což samozřejmě přináší výhodu v tvorbě originálních strategií.

7. Určení vstupních a výstupních obchodních příkazů, s kterými bude Builder pracovat při tvorbě strategií (Order Types)

Jednou z největších propracovaností tohoto softwaru je varianta, že Builder umožňuje určit si, jestli chceme s daným vstupním či výstupním obchodním příkazem pracovat nebo jen při budovacím procesu zvážit, jestli ho používat nebo nepoužívat. Mezi základní vstupní příkazy patří dva typy:

Vstupní příkazy (Entry Orders)

  • Vstup na market (Enter at Market)

Jedná se o typ příkazu, kdy za market cenu vstoupí strategie do pozice v případě, že se splní určitá podmínka. Může se jednat prakticky o cokoliv Vám přijde na mysl: Například křížení klouzavých průměrů, formace cenového patternu atd.

  

  • Vstup na market stop (Enter on Stop)

Jedná se o stop příkazy, které od nadefinované základní ceny (může se jednat o close úsečky, nejvyšší/nejnižší cena za X barů, atd.) přičteme (pro long) či odečteme (pro short) určitou cenovou hladinu (procento, volatilita na základě indikátoru ATR, fixní dolarová hodnota atd.). Tomuto typu příkazu se rovněž říká breakout a je mezi tradery velmi populární. Snaží se totiž zachytit cenové momentum a na něm se tzv. svést.

 

  • Vstup na limit (Enter on Limit)

Jedná se o typ příkazu, kdy se strategie pokusí za limitní cenu (nebo výhodnější) vstoupit do pozice v případě, že se splní určitá podmínka s tím rozdílem oproti Enter at Market, že se cena nemusí v rámci živého obchodování vyexekuovat, protože od limitní ceny trhy dávno pohnou. Pamatujte, že v backtestech se vždy limitní ceny teoreticky vyplní, v živém obchodování by tomu tak ale určitě nebylo, Tím pádem hrozí, že v případě používání tohoto typu příkazu nebudete schopni vyexekuovat každý obchod tak, jako tomu bude v backtestu a tím pádem postrádá backtest jakoukoliv relevanci. Určitě se tomuto typu příkazu vyvarujte. V případě funkční strategie si bohatě vystačíte s market příkazy.     

 

 Výstupní příkazy (Exit Orders)

  • Exit at Target

Builder umí samozřejmě pracovat i s klasickým příkazem profit targetu. V praxi však tento typ příkazu nevyužíváme, neboť zaprvé pracuje s limitním příkazem (problematika vysvětlena již v části vstup na limit) a zadruhé častokrát spíše sníží celkovou výkonnost strategie, jak jsme si mnohokrát při backtestech dokázali, protože v tradingu platí staré známé přísloví: „Držte Vaše ztráty zkrátka a nechte Vaše profity běžet“. Pracuje s procentem, volatilitou na základě indikátoru ATR, fixní dolarovou hodnotou atd.

 

  • Posuvný Stop (Trailing Stop)

Posuvný typ příkazu Stop bývá v tradingu velice oblíbený a dá se přirovnat k inteligentnímu řízení výstupu z pozice. Mnoha traderům se líbí představa, že pokud dosáhnout určitého zisku, posunou stop příkaz například na vstupní úroveň a pokud je strategie v pozici na správné straně trhu, postupně ho posouváme ve směru našeho žádoucího trendu. Když pak trh obrátí směr a protne tento posuvný stop příkaz, strategie vystoupí z pozice s kontrolovanou ztrátou nebo se ziskem. Samozřejmě záleží, jak byla pozice strategií řízená. Jedná se tedy o dynamicky řízenou pozici na základě aktuálně se vyvíjející ceny trhu. Pracuje s procentem, volatilitou na základě indikátoru ATR, fixní dolarovou hodnotou atd.

 

  • Stop Loss (Protective Stop)

Jedná se o klasický typ ochranného stop-lossu, kdy se snažíme mít pod kontrolou hlavně maximálně možnou ztrátu. Tento příkaz nereaguje tak pružně na vývoj ceny v trzích jako posuvný stop (Trailing Stop). Na druhou stranu to rozhodně neznamená, že by měl být příkaz zákonitě horší z hlediska výkonnosti. Pro každý typ příkazu se může hodit jiný typ výstupu. Opět pracuje s procentem, volatilitou na základě indikátoru ATR, fixní dolarovou hodnotou atd.

 

 

  • Výstup po X barech (Exit After N Bars)

Jedním z jednodušších typů výstupů pozic, který nebere do úvahy jakýkoliv cenový vývoj trhu a prostě mechanicky vystoupí je výstup po x barech. Tento typ výstupu z pozice formou příkazů market nevyužíváme v žádné z našich strategií.

 

  • Výstup po X barech se ziskem/ztrátou (Exit After N Bars Profit/Loss)

Tento typ výstupu z pozice je o něco inteligentnější předchozího typu výstupu a bere do úvahy, jestli jsme v zisku nebo ve ztrátě v otevření pozici.

 

  • Časový výstup (Exit After Time)

Časový výstup je aplikovatelný pro intradenní strategie a rozhodně může své využití u traderů najít

 

  • Exit At Market

Jedná se o typ příkazu, kdy za market cenu vstoupí strategie do pozice v případě, že se splní určitá podmínka. Může se jednat prakticky o cokoliv Vám přijde na mysl: Například křížení klouzavých průměrů, formace cenového patternu atd.

 

  • Exit End-of-Day

Velmi oblíbený obchodní příkaz pro intradenní strategie s výstupem na konci dne určený koncem obchodní seance.

Zhruba v takovém rozsahu tedy určíme v jednotlivých krocích, jak celý proces nastavit pro to, abychom mohli strategie efektivně hledat.

 

Závěr

Tento software může být vaším skvělým sluhou nebo zlým pánem. Musíte se vypořádat s potenciálním selekčním biasem a mnoha dalšími problémy. Přesto je skvělým nástrojem k hledání možných robustních strategií. Pravdou zůstává, že musíte mít značné know-how o tom, jak s tímto softwarem pracovat opatrně a úspěšně.

Rada: Strojové učení nebo genetické programování pro generování podmínek vstupu a výstupu může být vaším přítelem nebo nepřítelem. Buďte opatrní a používejte testy robustnosti

Pokud si chcete přečíst celý Ebook Ultimátní Průvodce Jak Na Úspěšný Algoritmický Trading, a nechcete jít článek po článku na našich stránkach, stáhnout si ho můžete okamžite a zcela zdarma zde! 12 kapitol, 118 stránek, všechno na jednom místě.

Leave a comment