Backtesting CFD strategií
Osobní finance a peníze a burza a trading zahrnují také systematické ověřování obchodních strategií pomocí historických dat. Backtesting CFD strategií znamená simulaci obchodování podle přesně definovaných pravidel na datech z minulosti. Cílem není zjistit, zda by trader dokázal historicky vybrat několik ziskových obchodů, ale zjistit, jak by se celý systém choval při důsledném dodržování pravidel. Při kvalitním backtestu se sledují vstupy, výstupy, stop loss, take profit, velikost pozice, spread, komise, financování přes noc, případný skluz, počet obchodů, úspěšnost, průměrný zisk, průměrná ztráta, očekávaná hodnota a maximální drawdown. Například strategie s úspěšností 40 % může být zisková, pokud jsou průměrné zisky výrazně vyšší než průměrné ztráty. Naopak strategie s 70% úspěšností může být ztrátová, pokud několik velkých ztrát převáží množství malých zisků. Backtesting proto není způsob, jak předpovědět budoucnost, ale nástroj pro zjištění statistických vlastností systému a jeho slabých míst.
Co je backtesting CFD strategie
Backtesting je proces, při kterém trader aplikuje obchodní pravidla na historický vývoj trhu. Postupuje chronologicky a rozhoduje se pouze podle informací, které byly v daném okamžiku dostupné.
Pokud strategie například vyžaduje vstup po určitém cenovém signálu, trader zaznamená obchod přesně v okamžiku, kdy by podle pravidel vznikl. Nesmí při rozhodování využívat skutečnost, že o několik svíček později cena prudce vzrostla nebo klesla.
Backtest může být ruční nebo automatizovaný. Ruční test je vhodný pro jednodušší systémy a umožňuje traderovi dobře pochopit jednotlivé situace. Automatizovaný backtest dokáže rychle zpracovat velké množství dat, ale vyžaduje přesně definovaná pravidla a kvalitní data.
Proč backtestovat CFD strategii
Hlavním důvodem je zjistit, zda má obchodní myšlenka alespoň historicky měřitelnou výhodu. Bez testování může trader založit systém pouze na několika příkladech z grafu a subjektivním dojmu.
Backtest zároveň umožňuje zjistit, jak často strategie obchoduje, jak dlouhé mohou být série ztrát a jak hluboký může být drawdown.
Například strategie může vypadat atraktivně při pohledu na několik ziskových obchodů, ale po otestování 300 situací může vyjít najevo, že má dlouhé série ztrát nebo je zisková pouze během určitého typu trhu.
Backtesting proto pomáhá oddělit obchodní hypotézu od skutečně pozorovatelných historických výsledků.
Nejdříve přesně definujte strategii
Než začne backtest, musí být pravidla systému jednoznačná. Trader musí přesně vědět, kdy vstupuje, kdy obchod neotevře, kam umístí stop loss, jak stanoví velikost pozice a podle čeho vystoupí.
Pravidlo „nakoupím, když trh vypadá silně“ nelze objektivně testovat. Každý trader by ho mohl interpretovat jinak.
Testovat lze například pravidlo, podle kterého je long povolen pouze při rostoucí tržní struktuře a po potvrzeném průrazu předchozího maxima.
Stejně přesně musí být definován výstup. Pokud trader někdy používá pevný take profit, jindy trailing stop a jindy vystupuje podle pocitu, nelze výsledky jednoduše porovnat.
Vyberte vhodný CFD instrument
CFD strategie může být určena například pro akciová CFD, indexová CFD, komoditní CFD, měnové CFD nebo kryptoměnové CFD. Každý trh má odlišnou volatilitu, likviditu, obchodní hodiny a nákladovou strukturu.
Strategie vytvořená pro jeden instrument proto nemusí fungovat stejně na jiném trhu. Pokud trader například vytvoří systém pro volatilní index, neměl by automaticky předpokládat stejnou výkonnost u klidnějšího měnového páru.
Na začátku je vhodné určit konkrétní instrument a až následně testovat, zda má systém smysl rozšířit na další trhy.
Určete časový rámec
Časový rámec zásadně ovlivňuje charakter strategie. Pětiminutový graf vytváří mnohem více signálů než denní graf a současně může být citlivější na spread, skluz a krátkodobý tržní šum.
Pokud trader testuje strategii na více časových rámcích, měl by každý test vyhodnocovat samostatně.
Nelze například vzít výsledek hodinové strategie a automaticky předpokládat, že stejný systém bude fungovat na patnáctiminutovém grafu.
Vyberte dostatečně dlouhou historii
Backtest na několika týdnech nebo měsících může být příliš omezený. Strategie by měla být podle možností testována přes více typů tržních podmínek.
Užitečné je zahrnout období silného růstu, poklesu, konsolidace, nízké volatility i prudkých pohybů.
Pokud je strategie například určena pro trendové obchodování, její test pouze během dlouhého růstového trhu může vytvořit příliš optimistický výsledek.
Délka historie musí odpovídat frekvenci strategie. Intradenní systém může vytvořit stovky obchodů během kratšího období, zatímco swingová strategie může potřebovat několik let k získání dostatečného vzorku.
Jak provádět ruční backtest
Při ručním backtestu trader postupuje historickým grafem chronologicky. Ideálně se dívá pouze na informace, které by v daném okamžiku skutečně znal.
Po objevení signálu zaznamená plánovaný vstup, stop loss, take profit, velikost pozice a následný výsledek. Potom pokračuje na další příležitost.
Důležité je nepřeskakovat nepříjemné nebo ztrátové obchody. Pokud pravidla říkají, že se obchod má otevřít, musí být zahrnut i tehdy, když trader dopředu vidí, že skončí ztrátou.
Ruční backtest je časově náročnější, ale může být velmi užitečný pro pochopení toho, jak strategie skutečně funguje.
Automatizovaný backtesting
Automatizovaný backtest umožňuje aplikovat přesně definovaná pravidla na velké množství historických dat. Výhodou je rychlost a možnost testovat velké množství obchodních situací.
Automatizace však neřeší problém špatně definované strategie. Pokud jsou pravidla nepřesná nebo obsahují subjektivní rozhodování, výsledek může být zkreslený.
Automatizovaný systém musí také správně pracovat s obchodními náklady, časem provedení příkazů, stop lossem, take profitem a případnými rozdíly mezi historickými a skutečnými cenami.
Čím složitější model, tím důležitější je kontrolovat, zda simulace skutečně odpovídá zamýšlenému způsobu obchodování.
Nezapomeňte na spread
Jednou z nejčastějších chyb při backtestu CFD je ignorování spreadu. Trader může historicky vyhodnotit vstup a výstup podle grafické ceny, ale skutečný obchod probíhá za podmínek ovlivněných rozdílem mezi nákupní a prodejní cenou.
Význam spreadu závisí na instrumentu a obchodním stylu. U krátkodobé strategie s malým potenciálním ziskem může být zásadní.
Pokud například strategie předpokládá průměrný hrubý zisk 200 Kč na obchod a průměrný dopad spreadu a dalších nákladů je 80 Kč, významná část obchodní výhody zmizí.
Backtest proto musí používat co nejrealističtější nákladové předpoklady.
Započítejte komise a další náklady
Kromě spreadu mohou být relevantní také komise, financování přes noc a další poplatky podle konkrétního CFD produktu a poskytovatele.
Pokud strategie drží pozice přes noc, může být financování důležitou součástí výsledku. U velmi krátkých obchodů může mít naopak větší význam spread a skluz.
Je vhodné počítat všechny náklady na úrovni jednotlivých obchodů, pokud to dostupná data umožňují.
Výsledkem by měl být čistý výsledek po nákladech, nikoli pouze teoretický hrubý zisk.
Počítejte se skluzem
Slippage neboli skluz představuje rozdíl mezi očekávanou a skutečnou cenou provedení. V historické simulaci může být snadné předpokládat, že příkaz byl proveden přesně na požadované ceně, ale skutečné obchodování takové být nemusí.
Význam skluzu může růst při rychlých pohybech, vysoké volatilitě nebo horší likviditě.
Pokud strategie závisí na velmi přesném vstupu a výstupu, měla by být testována s konzervativním předpokladem skluzu.
Definujte velikost pozice
Backtest musí pracovat také s velikostí pozice. Jinak sice zjistíte, zda je strategie historicky zisková, ale nebudete vědět, jak by se chovala na konkrétním účtu.
Velikost pozice může být například určena tak, aby maximální plánované riziko představovalo 0,5 % účtu.
Pokud má účet 100 000 Kč, znamená to plánované riziko 500 Kč na obchod. Při změně vzdálenosti stop lossu se mění velikost pozice tak, aby riziko zůstalo v předem stanoveném limitu.
Takový přístup umožňuje lépe porovnávat jednotlivé obchody bez ohledu na jejich rozdílnou volatilitu.
Vyhodnocujte úspěšnost strategie
Úspěšnost neboli win rate představuje podíl ziskových obchodů na celkovém počtu obchodů. Je to důležitá statistika, ale sama o sobě nemůže rozhodnout, zda je strategie kvalitní.
Strategie s úspěšností 35 % může být zisková, pokud jsou průměrné zisky několikanásobně větší než průměrné ztráty.
Naopak systém s úspěšností 80 % může být ztrátový, pokud občas utrpí velmi velkou ztrátu.
Úspěšnost je proto potřeba vždy posuzovat společně s poměrem průměrného zisku a ztráty.
Vypočítejte očekávanou hodnotu
Očekávaná hodnota ukazuje průměrný očekávaný výsledek jednoho obchodu při dostatečně velkém počtu opakování.
Pokud strategie vyhraje 40 % obchodů, průměrný zisk činí 2 500 Kč a průměrná ztráta 1 000 Kč, potom očekávaná hodnota před náklady činí:
0,40 × 2 500 − 0,60 × 1 000 = 400 Kč.
To neznamená, že každý obchod vydělá 400 Kč. Jde o statistický průměr. Po započtení nákladů například 100 Kč na obchod klesá čistá očekávaná hodnota na 300 Kč.
Sledujte maximální drawdown
Maximální drawdown ukazuje největší pokles kapitálu od předchozího maxima k následnému minimu. Je jedním z nejdůležitějších údajů při hodnocení CFD strategie.
Strategie může mít vysoký celkový výnos, ale pokud současně vykazuje extrémní drawdown, nemusí být pro konkrétního tradera použitelná.
Například pokles účtu ze 100 000 Kč na 80 000 Kč představuje drawdown 20 %. Návrat na původních 100 000 Kč následně vyžaduje růst o 25 %.
Backtest proto musí ukázat nejen potenciální zisk, ale také cenu, kterou trader musel historicky zaplatit v podobě ztrátových období.
Analyzujte série ztrát
Každá strategie může vytvořit sérii ztrátových obchodů. Backtest by měl ukázat, jak dlouhá byla nejhorší historická série a jaký dopad měla na účet.
Pokud systém například vykázal nejdelší sérii 12 ztrát, trader musí počítat s tím, že budoucí série může být ještě delší. Historické maximum není zárukou budoucího maxima.
Analýza sérií ztrát pomáhá také nastavit realistické riziko na jeden obchod.
Strategie, kterou trader psychologicky nedokáže dodržovat během série deseti nebo patnácti ztrát, pro něj nemusí být vhodná ani v případě, že má kladnou očekávanou hodnotu.
Testujte různé tržní podmínky
Strategie by neměla být hodnocena pouze podle celkového výsledku. Důležité je rozdělit backtest podle typu trhu.
Sledovat lze například silný růstový trend, klesající trend, boční trh, vysokou volatilitu a nízkou volatilitu.
Trendová strategie může například vydělávat převážně v období výrazných trendů a během konsolidace vytvářet sérii ztrát.
To nemusí znamenat, že je strategie špatná. Důležité je vědět, v jakém prostředí má výhodu a kdy je vhodné její používání omezit.
Oddělte vývojová a validační data
Jedním z nejdůležitějších pravidel kvalitního backtestu je nehodnotit strategii pouze na datech, na kterých byla vytvořena.
Historická data lze rozdělit na vývojovou část a část určenou pro následné ověření. Trader nejprve vytvoří systém na první části a poté ho bez dalších úprav aplikuje na oddělená data.
Pokud například strategii vytvoří na datech z let 2020 až 2024, může pozdější období sloužit jako validační vzorek, pokud nebylo použito při ladění pravidel.
Pokud trader začne validační data opakovaně používat pro další optimalizaci, přestávají být skutečně nezávislá.
Pozor na přeoptimalizování
Jedním z největších rizik backtestingu je overfitting. Trader může postupně měnit parametry a přidávat filtry tak dlouho, dokud historický výsledek nevypadá mimořádně dobře.
Výsledkem může být strategie, která dokonale odpovídá minulosti, ale špatně funguje na nových datech.
Například pokud trader vyzkouší desítky hodnot periody indikátoru a vybere jedinou hodnotu s nejvyšším historickým výnosem, nemusí jít o skutečnou výhodu.
Robustnější strategie často vykazuje relativně stabilní výsledky v určitém rozsahu parametrů.
Podrobnější pohled nabízí článek jak poznat přeoptimalizovanou strategii.
Testujte citlivost parametrů
Po základním backtestu je vhodné sledovat, jak se výsledek mění při malých úpravách parametrů. Cílem není najít nejlepší možnou hodnotu, ale zjistit stabilitu systému.
Pokud například strategie funguje při periodě 20, ale při hodnotách 19 a 21 se výsledek dramaticky zhorší, může být systém příliš citlivý.
Naopak pokud podobné výsledky získáte například v širším rozsahu hodnot, je to příznivější signál robustnosti.
Stejný princip lze použít na stop loss, take profit, filtr volatility nebo jiné parametry systému.
Nesnažte se odstranit všechny ztráty
Ztrátové obchody jsou přirozenou součástí většiny obchodních strategií. Cílem backtestu není vytvořit systém, který historicky téměř nikdy neprodělal.
Pokud trader přidává nové pravidlo pokaždé, když narazí na ztrátový obchod, může postupně vytvořit velmi komplikovaný a přeoptimalizovaný systém.
Mnohem důležitější je zjistit, zda jsou ztráty součástí statisticky přijatelného rozdělení výsledků.
Dobrá strategie může mít mnoho ztrátových obchodů a přesto být dlouhodobě zisková, pokud jsou zisky dostatečně velké a systém má kladnou očekávanou hodnotu.
Backtestujte také podmínky pro neobchodování
Součástí strategie není pouze pravidlo pro vstup. Systém musí definovat také situace, kdy se obchod neotevře.
Může jít například o příliš nízkou volatilitu, nevhodnou tržní strukturu, extrémní spread nebo jiné předem definované podmínky.
Každý takový filtr musí být zahrnut do testu. Pokud trader zpětně vynechá obchody, které se mu nelíbí, vzniká zkreslení výsledku.
Schopnost zůstat mimo trh může být důležitou součástí obchodního systému.
Kontrolujte look-ahead bias
Look-ahead bias vzniká tehdy, když backtest využije informaci, kterou trader v okamžiku rozhodování ještě nemohl znát. Jde o jednu z nejzávažnějších chyb při historickém testování.
Pokud například při vstupu používáte hodnotu indikátoru, která je známá až po uzavření svíčky, nesmíte vstup simulovat před jejím uzavřením.
Stejně problematické je rozhodovat o vstupu podle budoucího pohybu ceny, který už při ručním procházení grafu vidíte.
Backtest musí vždy respektovat časovou posloupnost informací.
Testujte realistické vstupy a výstupy
Historický graf může vytvořit iluzi, že trader mohl nakoupit nebo prodat přesně na nejvýhodnější ceně. Ve skutečnosti záleží na typu příkazu a dostupnosti ceny.
Pokud například svíčka zasáhla stop loss i take profit, je nutné vědět, v jakém pořadí k pohybům došlo. U nedostatečně detailních dat nemusí být možné pořadí spolehlivě určit.
V takové situaci je vhodnější použít konzervativní předpoklad než automaticky připsat obchodu výhodnější výsledek.
Čím přesnější data a model exekuce, tím realističtější může být výsledek backtestu.
Porovnávejte různé varianty risk managementu
Stejná obchodní strategie může mít úplně jiný průběh při různém riziku na obchod. Proto lze po ověření samotného systému testovat různé úrovně rizika.
Například strategie může být testována s rizikem 0,25 %, 0,5 % nebo 1 % kapitálu na obchod.
Vyšší riziko může zvýšit potenciální výnos, ale zároveň zvětší drawdown a dopad série ztrát.
Nejvyšší historický výnos proto nemusí být nejlepší variantou. Důležitá je kombinace výnosu, rizika a schopnosti systém dlouhodobě dodržovat.
Backtestujte korelované pozice
Pokud strategie umožňuje současně otevírat více obchodů, je potřeba testovat také jejich společnou expozici.
Například long pozice na několika silně korelovaných akciových indexech nemusí představovat tři nezávislé obchody. Při prudkém pohybu proti trhu mohou všechny pozice ztrácet současně.
Backtest by proto měl sledovat nejen jednotlivé obchody, ale také maximální celkové otevřené riziko.
Tím lze zabránit situaci, kdy jednotlivé obchody vypadají bezpečně, ale jejich kombinace vytváří nepřiměřenou koncentraci.
Vyhodnocujte strategii po částech
Celkový výsledek může skrývat důležité rozdíly. Proto je užitečné rozdělit výsledky například podle roku, měsíce, instrumentu, časového rámce, směru obchodu nebo typu setupu.
Pokud například celkový backtest skončí v zisku, ale většina výsledku pochází z jediného roku, je potřeba zjistit, proč tomu tak je.
Stejně tak může být zajímavé porovnat long a short obchody. Strategie může například dlouhodobě fungovat lépe pouze jedním směrem.
Taková analýza pomáhá odhalit silné a slabé stránky systému.
Co dělat po dokončení backtestu
Backtest by neměl být posledním krokem. Pokud historické výsledky vypadají rozumně, je vhodné strategii otestovat na datech, která nebyla použita při jejím vývoji.
Následovat může forward test, při kterém trader sleduje systém na nově vznikajících datech bez znalosti budoucího vývoje.
Podrobněji se tomuto kroku věnuje článek forward testing strategií.
Teprve kombinace backtestu, odděleného ověření a forward testu poskytuje výrazně lepší představu o robustnosti systému než samotná historická křivka.
Backtest není záruka budoucího zisku
Historická výkonnost není zárukou budoucích výsledků. Tržní prostředí se mění, náklady se mohou změnit a strategie může postupně ztratit svou výhodu.
Backtest proto není předpovědní nástroj v pravém slova smyslu. Ukazuje, jak by definovaný systém fungoval za konkrétních historických podmínek.
Jeho největší hodnotou je možnost odhalit slabá místa systému ještě předtím, než trader začne riskovat významnější kapitál.
Správně interpretovaný backtest tedy neslibuje budoucí zisk, ale pomáhá vytvářet informovanější rozhodnutí.
Nejčastější chyby při backtestování CFD strategií
Mezi nejčastější chyby patří testování příliš malého vzorku obchodů, ignorování nákladů, využívání budoucích informací, selektivní vynechávání ztrátových obchodů a přílišné optimalizování parametrů.
Problematické je také používání ideální exekuce, kdy trader předpokládá, že vždy vstoupil a vystoupil přesně na požadované ceně.
Další chybou je zaměření pouze na celkový výnos. Bez znalosti drawdownu, série ztrát a očekávané hodnoty může být výsledek velmi zavádějící.
Někteří tradeři také opakovaně upravují strategii podle stejného historického vzorku. Po dostatečném množství úprav může být systém téměř dokonale přizpůsoben minulosti, ale současně výrazně méně použitelný na nových datech.
Praktický příklad backtestu CFD strategie
Trader vytvoří trendovou strategii pro indexové CFD. Long obchod povolí pouze při rostoucí tržní struktuře. Po korekci čeká na potvr








