Domů Podnikání a finance Osobní a rodinné finance Jak přestat přeoptimalizovávat CFD systém

Jak přestat přeoptimalizovávat CFD systém

Jak přestat přeoptimalizovávat CFD systém

Osobní finance a peníze a Burza a trading (indexy, forex, CFD) jsou důležité pro pochopení toho, proč by CFD systém neměl být neustále upravován podle posledních výsledků. Přeoptimalizování CFD systému lze omezit tím, že trader předem stanoví pravidla pro testování, oddělí vývojová a testovací data, omezuje počet změn a hodnotí robustnost systému místo hledání nejlepší historické kombinace parametrů. Přeoptimalizovaný systém může v backtestu vypadat výborně, ale jeho výsledky se po nasazení na nové tržní podmínky výrazně zhorší. Typickým problémem je opakované měnění vstupů, stop lossu, take profitu, indikátorů, časových filtrů nebo parametrů volatility, dokud historická křivka nevypadá téměř dokonale. Každá další úprava však zvyšuje riziko, že systém začne kopírovat náhodné vlastnosti minulých dat. Cílem proto není vytvořit systém s nejvyšším možným backtestovým ziskem, ale systém, který si zachová rozumné vlastnosti i na datech, která při jeho vývoji nebyla použita.

Co je přeoptimalizování CFD systému

Přeoptimalizování neboli overfitting vzniká tehdy, když CFD systém příliš přizpůsobíme historickým datům a jeho pravidla začnou zachycovat náhodné vlastnosti minulosti místo obecně použitelných tržních vztahů. Systém potom může mít v backtestu vysoký zisk, ale mimo testovací vzorek výrazně horší výsledky.

Typickým příkladem je postupné hledání přesné hodnoty indikátoru, stop lossu, take profitu nebo obchodního času, která v minulosti vytvořila nejlepší výsledek.

Pokud trader vyzkouší desítky nebo stovky kombinací a ponechá pouze absolutně nejlepší variantu, zvyšuje pravděpodobnost, že vybral spíše náhodně výhodný výsledek než skutečně robustní nastavení.

Problém se netýká pouze automatických strategií. Stejně snadno může vzniknout u manuálního systému, pokud trader postupně přidává stále další podmínky podle toho, co fungovalo v minulosti.

Proč je přeoptimalizování u CFD nebezpečné

Přeoptimalizovaný CFD systém může vytvářet falešný pocit jistoty, protože historické výsledky vypadají výrazně lépe, než jaké lze realisticky očekávat v budoucnosti. Trh se totiž nebude pohybovat přesně podle historického vzorku.

Pokud trader systém několikrát upraví po období ztrát, může postupně vytvořit pravidla, která velmi dobře reagují na konkrétní historické situace, ale špatně fungují při změně volatility, trendu nebo likvidity.

U CFD je problém ještě výraznější kvůli spreadu, skluzu, financování a dalším obchodním nákladům. Strategie, která má v backtestu pouze malou statistickou výhodu, může po započtení reálné exekuce tuto výhodu úplně ztratit.

Dalším problémem je psychologický cyklus. Trader po několika ztrátách upraví systém, po několika dalších ztrátách jej upraví znovu a nikdy mu nedá dostatek času na získání relevantních dat.

Výsledkem může být neustále se měnící systém, u kterého není možné zjistit, zda původní obchodní myšlenka skutečně funguje.

Jak poznat, že CFD systém přeoptimalizováváš

Varovným signálem je situace, kdy trader pravidla opakovaně mění podle výsledků posledních obchodů nebo kdy má systém výrazně lepší výsledky na historických datech než na nových datech.

Podezřelé je také příliš mnoho přesně definovaných podmínek. Pokud systém například vyžaduje konkrétní kombinaci několika indikátorů, přesný čas vstupu, přesnou hodnotu volatility a několik dalších filtrů, může být příliš specifický.

Dalším signálem je výrazná citlivost na malé změny parametrů. Pokud například hodnota indikátoru 19 funguje výborně, ale hodnoty 18 a 20 vedou k výrazně horším výsledkům, může jít o známku nízké robustnosti.

Robustnější systém často funguje v určitém rozmezí parametrů. Nemusí být nejlepší při každé hodnotě, ale malá změna nastavení by neměla způsobit úplný rozpad výsledků.

Užitečné je také porovnat backtest s výsledky mimo původní vývojové období. Pokud systém funguje pouze v období, na kterém byl vytvořen, je nutné být velmi opatrný.

Jak oddělit vývojová a testovací data

Jedním z nejúčinnějších způsobů ochrany před přeoptimalizováním je rozdělit historická data na část určenou pro vývoj a část, na kterou se systém během vývoje nesahá. Testovací data musí zůstat skutečně nedotčená.

Trader může například použít starší část historických dat pro tvorbu pravidel a novější část si ponechat jako nezávislý test.

Pokud strategie vznikne na prvních letech dat a následně se bez dalších úprav otestuje na pozdějším období, získá trader realističtější představu o tom, zda systém funguje i mimo původní vzorek.

Největší chybou je testovací data opakovaně používat k úpravám systému. Jakmile trader podle výsledků testu změní parametry a test zopakuje, původně nezávislá data už nejsou skutečně nezávislá.

Testovací vzorek by proto měl zůstat uzamčený až do chvíle, kdy je vývoj systému dokončen.

Jak používat backtesting bez přeoptimalizování

Backtest by měl sloužit především k ověření obchodní hypotézy, nikoli k nekonečnému hledání nejlepší možné kombinace parametrů. Trader by měl předem vědět, co chce testem zjistit.

Pokud například testuje breakout strategii, může chtít zjistit, zda určitý typ průrazu vykazuje dlouhodobou výhodu.

Není nutné okamžitě hledat nejlepší přesnou hodnotu každého parametru.

Užitečnější je porovnat několik rozumných variant a sledovat, zda základní obchodní myšlenka zůstává funkční.

Pokud například strategie funguje při stop lossu mezi 1,5 % a 2,5 %, je to obecně zajímavější signál robustnosti než systém, který funguje pouze při přesně 1,83 %.

Výsledky je vhodné sledovat také pomocí ukazatelů jako profit factor, win rate, průměrný zisk, průměrná ztráta, maximální drawdown a počet obchodů.

Samotný nejvyšší historický čistý zisk by neměl rozhodovat o výběru varianty.

Jak omezit počet parametrů systému

Čím více parametrů trader optimalizuje, tím větší prostor vzniká pro náhodné přizpůsobení systému historickým datům. Proto je vhodné zachovat pouze parametry, které mají jasný obchodní význam.

Pokud například strategie potřebuje filtr trendu, filtr volatility a časový filtr, každý z nich by měl mít vlastní logické opodstatnění.

Další filtr by neměl být přidáván pouze proto, že v minulosti odstranil několik ztrátových obchodů.

Trader by si měl u každého pravidla položit otázku, zda chápe, proč by mělo fungovat i v budoucnosti.

Pravidlo založené na obecné vlastnosti trhu může být robustnější než pravidlo vytvořené pouze podle konkrétní historické situace.

Jednodušší systém také usnadňuje exekuci a snižuje riziko, že trader při živém obchodování některou podmínku přehlédne.

Jak hledat robustní parametry místo nejlepších parametrů

Robustní parametr není nutně ten, který vytvoří nejvyšší backtestový zisk, ale takový, u kterého systém funguje přijatelně i při rozumné změně nastavení. Tento princip pomáhá odhalit parametry citlivé na náhodu.

Pokud například test ukáže nejlepší profit factor při nastavení indikátoru 14, ale hodnoty 13, 15, 16 a 17 poskytují podobné výsledky, je to příznivější než extrémně úzký vrchol pouze u hodnoty 14.

Trader může vytvořit několik variant a porovnat nejen jejich nejlepší výsledek, ale také rozsah výsledků v okolí.

Pokud se systém při malé změně parametru dramaticky zhorší, je vhodné zjistit, zda je parametr skutečně ekonomicky opodstatněný.

Robustnost je důležitější než perfektní historická křivka.

Jak používat out-of-sample test

Out-of-sample test ověřuje systém na datech, která nebyla použita při jeho vývoji, a proto představuje důležitou ochranu před přeoptimalizováním. Jeho smyslem je zjistit, zda se historická výhoda přenáší mimo původní vzorek.

Trader například vytvoří systém na datech z prvních pěti let a následně jej bez dalších změn otestuje na šestém roce.

Pokud má systém v prvním období profit factor 1,80 a v nezávislém období 1,45, může jít o poměrně zajímavý výsledek.

Pokud však dosahuje v prvním období hodnoty 2,50 a v testovacím období 0,70, je pravděpodobné, že část historické výhody byla způsobena přizpůsobením datům.

Out-of-sample test přitom nemusí vykazovat stejně vysoký výkon jako vývojové období. Důležité je, zda si systém zachovává rozumné vlastnosti.

Jak využít forward testing

Forward testing ověřuje CFD systém na nových datech, která vznikají postupně, a umožňuje sledovat, zda se chování strategie podobá výsledkům backtestu. Může probíhat na demo účtu nebo při velmi malém reálném riziku.

Trader nastaví systém podle finálních pravidel a během testovacího období jej nemění podle jednotlivých výsledků.

Pokud například strategie během backtestu vykazovala win rate 45 % a profit factor 1,50, není problém, když krátkodobý forward test začne několika ztrátami.

Smyslem testu je sledovat delší sérii obchodů a zjistit, zda se chování systému pohybuje v rozumném rozsahu očekávání.

Princip oddělení testování od vývoje lze dále rozvíjet prostřednictvím forward testingu obchodních strategií.

Jak přestat měnit systém po sérii ztrát

Nejlepší ochranou před impulzivní optimalizací je předem stanovit, kdy se strategie smí vyhodnocovat a jaké podmínky musí nastat, aby byla změna vůbec zvažována. Trader tak nemusí rozhodovat o změně uprostřed emocionálně náročného období.

Pokud například historická strategie běžně vykazuje série pěti až osmi ztrát, není rozumné ji měnit po třech neúspěšných obchodech.

Trader může místo toho stanovit, že strategii vyhodnotí až po určitém počtu nových obchodů nebo po předem definovaném období.

Pokud výsledky skutečně překročí historicky očekávaný drawdown nebo se opakovaně zhorší profit factor, teprve potom může začít hledat příčinu.

Takový proces odděluje běžnou variabilitu strategie od skutečné změny její výkonnosti.

Jak rozlišit změnu strategie a změnu řízení rizika

Pokles výsledků nemusí znamenat, že je nutné měnit obchodní signály; někdy stačí upravit velikost pozice nebo maximální expozici. Tato dvě rozhodnutí je důležité oddělovat.

Pokud strategie stále vykazuje kladnou očekávanou hodnotu, ale její drawdown je pro tradera příliš vysoký, může být vhodnější snížit riziko na obchod.

Například systém s rizikem 2 % účtu na obchod může být pro konkrétního tradera psychologicky příliš náročný, zatímco stejný systém s rizikem 0,5 % může být dlouhodobě lépe použitelný.

Změna velikosti pozice přitom nemění základní obchodní výhodu systému.

Pokud trader místo toho začne měnit vstupy pouze proto, aby snížil počet ztrát, může nechtěně odstranit i některé ziskové obchody.

Jak nepřeoptimalizovat stop loss a take profit

Stop loss a take profit je vhodné nastavovat podle logiky strategie a chování trhu, nikoli pouze podle hodnoty, která v backtestu vytvořila nejvyšší zisk. Příliš přesná optimalizace výstupů patří mezi časté zdroje overfittingu.

Pokud například trader zjistí, že take profit 1,7 % historicky funguje lépe než 1,6 % a 1,8 %, nemusí to znamenat, že právě 1,7 % má skutečnou výhodu.

Rozumnější je sledovat širší interval a zjistit, zda strategie funguje například v pásmu 1,5 až 2,0 %.

U stop lossu je důležité zohlednit také volatilitu trhu. Fixní hodnota může být vhodná v jednom prostředí a příliš těsná nebo široká v jiném.

Pokud strategie používá volatilní filtr nebo ATR, je nutné znovu otestovat celý systém, nikoli pouze jeden parametr.

Jak omezit počet experimentů

Trader by si měl vést evidenci provedených experimentů a předem určit, kolik změn bude v jedné fázi vývoje testovat. Tím lze snížit riziko náhodného výběru nejlepší varianty z velkého množství pokusů.

U každého experimentu je vhodné zaznamenat původní pravidlo, změnu, důvod změny, očekávaný přínos a výsledek na vývojových i testovacích datech.

Pokud například trader během měsíce vyzkouší 100 různých kombinací a vybere nejlepší, musí počítat s tím, že část zjištěného výsledku může být způsobena samotným množstvím testovaných variant.

Mnohem disciplinovanější je předem formulovat několik ekonomicky odůvodněných hypotéz a testovat je postupně.

Nejde o zákaz experimentování, ale o to, aby experimenty měly jasný účel a nebyly nekonečným hledáním perfektní historické konfigurace.

Jak používat jednoduchost jako ochranu

Jednoduchý CFD systém se obvykle snadněji testuje, interpretuje a kontroluje než systém složený z velkého množství podmínek. Jednoduchost sama o sobě nezaručuje ziskovost, ale omezuje prostor pro náhodné přizpůsobování.

Pokud základní strategie funguje bez několika dodatečných filtrů, není nutné je přidávat jen proto, aby se historický profit factor zvýšil.

Každý nový parametr by měl mít jasný důvod a měl by být schopen obstát v testu mimo původní vývojová data.

Jednoduchost také pomáhá při manuálním obchodování. Trader si snadněji zapamatuje několik důležitých pravidel než desítky přesných podmínek.

Pokud systém vyžaduje příliš mnoho rozhodnutí, může se navíc mezi backtestem a živým obchodováním objevit velký rozdíl.

Jak vytvořit pravidla proti přeoptimalizování

Nejúčinnější je vytvořit si pevný proces, který určuje, kdy lze strategii změnit, jak se změna testuje a kdy je považována za dostatečně ověřenou. Tato pravidla by měla vzniknout ještě před další optimalizací.

Trader může například stanovit, že strategii nebude upravovat podle jednotlivých obchodů, ale pouze po určitém počtu nových pozic.

Dále může určit, že významná změna musí mít jasnou hypotézu a projít backtestem, out-of-sample testem a následným forward testem.

Vývojová data se nesmí zaměňovat s testovacími daty a testovací vzorek by se během vývoje neměl opakovaně používat.

Užitečné je také předem určit hlavní hodnoticí parametry. Například profit factor může být důležitý, ale současně musí být splněn maximální akceptovatelný drawdown a minimální počet obchodů.

Tím se trader vyhne situaci, kdy vždy vybere jiný parametr podle toho, která hodnota zrovna vypadá nejlépe.

Jak poznat dostatečně robustní CFD systém

Robustní CFD systém nemusí mít perfektní výsledky, ale měl by si zachovávat přijatelnou výkonnost při rozumných změnách parametrů, v různých obdobích a na nových datech. Právě stabilita je důležitější než historické maximum.

Modelový příklad: první varianta má na vývojových datech profit factor 2,10, ale při malé změně parametru klesne na 0,80. Druhá varianta má profit factor 1,55 a při podobných změnách se pohybuje mezi 1,40 a 1,65.

Druhá varianta může být z hlediska robustnosti zajímavější, přestože její nejlepší historická hodnota je nižší.

Stejně je vhodné sledovat, zda systém funguje v různých režimech trhu. Výrazně jinou charakteristiku může mít trendový trh, konsolidace, vysoká volatilita nebo velmi nízká aktivita.

Pokud systém funguje pouze v jediné přesně definované kombinaci podmínek, je potřeba být při jeho nasazení opatrnější.

Jak přestat přeoptimalizovávat CFD systém v praxi

Nejúčinnější způsob je přestat hledat nejlepší historický výsledek a místo toho začít hledat dostatečně robustní systém, který má logiku, stabilní výsledky a funguje i mimo data použitá při jeho vývoji. Trader by měl nejprve zmrazit aktuální verzi systému a přestat ji měnit po jednotlivých obchodech.

Následně je vhodné určit pevné období nebo počet obchodů pro další vyhodnocení. Během této fáze se pravidla nemění podle aktuálních výsledků.

Po nasbírání dostatečného vzorku trader analyzuje, zda se výsledky skutečně odchylují od historických očekávání. Pokud ano, vytvoří jednu konkrétní hypotézu a otestuje pouze cílenou změnu.

Například systém může mít historický win rate 45 %, profit factor 1,50 a maximální drawdown 10 %. Pokud nové období přinese win rate 43 %, profit factor 1,42 a drawdown 11 %, nemusí to být žádný důvod k zásahu. Výsledky se stále pohybují relativně blízko očekávání.

Pokud by však po stovkách nových obchodů profit factor klesl například na 0,90 a drawdown výrazně překonal historické hodnoty, je důvod hledat strukturální problém.

V takové situaci trader nemusí automaticky měnit celý systém. Může nejprve zjistit, zda se nezměnila volatilita, likvidita, obchodní hodiny, náklady nebo způsob exekuce.

Přeoptimalizování končí ve chvíli, kdy trader přijme, že cílem backtestu není najít perfektní minulost, ale získat důvěru v obecnou logiku obchodního systému. Dobrá strategie bude mít i ztrátová období, nebude fungovat stejně v každém typu trhu a její budoucí výsledky nebudou přesnou kopií historie.

Pokud trader používá oddělená data, omezuje počet parametrů, hledá stabilní rozsahy místo jediné nejlepší hodnoty, provádí out-of-sample a forward testy a mění systém pouze na základě předem stanoveného procesu, výrazně snižuje riziko, že si vytvoří systém perfektní pouze na historickém grafu.

Robustnost je proto při úpravě CFD systému důležitější než dokonalý backtestový výsledek.