Backtesting a papertrading - prakticky a podrobněji
Poctivá příprava a systematický přístup je naprostý základ v obchodování. Jelikož se stále objevuje poměrně dost dotazů týkající se backtestingu, zaktualizovali jsme starší článek na toto téma a rozšířili jej o odpovědi na nejčastěji kladené otázky.
Backtesting
Backtesting znamená testování strategie na historických datech. Ať již plánujete obchodovat komodity, opce, akcie či cokoliv jiného, backtesting našeho obchodního plánu je první předpoklad k tomu, abychom kdy mohli být v trzích úspěšní.
Základem úspěšného obchodování musí být vždy nějaký plán = strategie (tj. soubor pravidel kdy vstupovat, vystupovat, jak pracovat se stop-lossem atd.). Abychom zjistili, zdali má strategie nějaký edge, tj. zdali poskytuje nějakou výhodu, která nám bude vydělávat peníze, musíme ji nejprve otestovat.
Samozřejmě bychom mohli strategii testovat "v reálném čase", ale to by bylo velice neproduktivní, velmi časově náročné a dost nesystematické. Proto se strategie nejprve testují čistě na historických datech. Historický vývoj pochopitelně nezaručuje, že systém bude fungovat stejně v budoucnosti, ale historický backtesting, byť je v řadě ohledů "zkreslený" řadou faktorů, nám poskytne spoustu důležitých informací, které k následnému obchodování potřebujeme.
Především je to samotný fakt, že systém, který máme k dispozici je funkční. Důležité je samozřejmě jednak samotné zjištění, že systém generuje profity, ale tento fakt je zásadní i z pohledu psychologie budoucího ostrého obchodování. Čím pečlivěji se věnujeme backtestingu, tím větší důvěru máme v to, že daná věc funguje. Toto je velmi důležité. Na trhu existuje velmi mnoho ziskových obchodních přístupů. Důvodem, proč je většina obchodníků není schopna úspěšně obchodovat je skutečnost, že zejména začátečníci nejsou ochotni věnovat čas jejich poctivému backtestování a vůbec nezískají důvěru v to, že daná věc funguje. Následně je při ostrém obchodování vyvedou z míry první ztráty, které naděluje každý obchodní systém.
Dalším důležitým výstupem backtestingu jsou informace o charakteru výsledků systémů, které nám říkají, na co všechno se budeme muset při obchodování konkrétního systému připravit. Získáme informace o podstatných parametrech jako je frekvence obchodů, možná série ztrátových obchodů, maximální pokles kapitálu (drawdown), ideální stop-loss, průměrný zisk na obchod atd. Opět - historické výsledky nemohou zaručovat budoucí vývoj, ale takto získané historické výsledky jsou nesmírně důležité. Navíc pomocí pokročilejších taktik můžeme dělat i určité statistické simulace, které nám již hodně napoví o robustnosti našeho přístupu (viz Monte Carlo simulace). Ale i výstup toho nejjednoduššího backtestingu s jednoduchou excelovskou tabulkou mají hodnotu, kterou si málokterý nováček dokáže připustit.
Co je u backtestingu podstatné je dostatečný vzorek dat. Ideální je alespoň 100 obchodů pro konkrétní vstup/výstup. Je-li váš obchodní systém složen z různých vstupů, je potřeba si dát pozor, aby každá taktika byla dostatečně zastoupena (tj. ideálně oněch minimálně 100 obchodů). Tj. backtesting je nutné provádět na odpovídající historii dat. Backtesting za posledních 14 dnů či měsíc je naprosto k ničemu.
Jak backtesting provádět
Konkrétní použitý software a data záleží na typu obchodního přístupu. Ale ať již obchodujete pozičně či intradenně, komodity, akcie, forex nebo opce, je princip vždy stejný. Použijeme příslušná historická data a krok za krokem procházíme náš timeframe a podle indikace našeho obchodního systému zapisujeme do obchodního deníku příslušné vstupy a výstupy v danou hodinu či den.
O obchodním deníku jsme již na Finančníkovi psali řadu článků, které si prosím prostudujte v archivu. Obchodní deník je ideální vést v Excelu. Jak konkrétně by měl deník vypadat naleznete v článku Jak si připravit a používat jednoduchý obchodní deník, pokročilou podobu obchodního deníku máme na serveru v podobě excelového J.A.testeru, důležité poznámky k nutnosti vedení obchodního deníku naleznete v článku Jak se nejrychleji naučit umění tradingu (2).
Pokud s tradingem začínáte, není třeba na začátku trávit mnoho času nad vymýšlením sofistikovaného obchodního deníku - stačí skutečně jednoduchá excelovská tabulka, do které si budete zapisovat datum, vstup, výstup atd. Uvidíte, že postupem času si sami tabulku budete upravovat podle vlastních představ. Řadu obchodních deníků můžete nalézt také v našem diskuzním fóru (například na této adrese: http://www.financnik.cz/forum/read.php?2,53116,page=1.
Konkrétní příklad: pokud se rozhodnete backtestovat systém pro intradenní obchodování (např. náš Finwin prezentovaný mj. v knize Jak se stát intradenním finančníkem), vytvoříte si jednoduchý excelovský obchodní deník, otevřete si historické grafy příslušného trhu, začnete je procházet den po dni, hledat vstupní a výstupní signály a výsledky systému si zapisovat do Excelu.
Tento postup je samozřejmě časově náročný, ale jinak to opravdu nejde. Práce tradera spočívá právě v podobných výzkumech. Nejde je přeskočit, ani nějak obejít. Nebudete-li mít backtest své strategie, dříve nebo později "narazíte".
To je v základu celá „pointa“ backtestu. Jelikož k tématu padá celá řada „nadčasových“ dotazů, pojďme se na ně odpovědět na jednom místě v rámci tohoto článku:
Dotaz: Je dobré backtestovat na historických datech „v reálném čase“? Tj. nechat si trhy „přehrávat“?
Řada programů umí historická data „přehrávat“, tj. software nám prezentuje historická data uložená v databázi „jako by“ v reálném čase. Osobně toto řešení nedoporučuji. Je to ztráta času. Backtest je o tom, projít co nejdelší historii grafů a pokud bych si měl „přehrávat“ všechna data byť trochu zrychlená, strávíme s backtestem neúměrně mnoho času.
Backtestovat proto doporučuji tak, že v grafu vidím např. celý obchodní den (nebo jeho část v závislosti na zvoleném timeframe) a vyhledávám vstupy a výstupy na takto statickém grafu.
Dotaz: Pokud ale dopředu vidím průběh dne, vidím také, jak obchod dopadne a mohu „podvádět“. Backtest pak bude zkreslený.
Backtest bude do určité míry zkreslený vždy. Jeho smyslem není v případě diskréční obchodování nalézt nějaký absolutně přesný mechanický plán. Jeho smyslem je nalézt dostatečně robustní přístup, naučit se v trhu pojmenovávat jeho vstupní a výstupní součásti a na relevantním vzorku dat se přesvědčit, že takový přístup funguje. Je zřejmé, že můžeme občas přehlédnout nějaký ztrátový obchod, ale to můžeme kompenzovat např. vynecháním občasného ziskového obchodu. Backtest v případě diskréčního obchodování je skutečně taková „škola“ – první, do určité míry teoretické, osahávání trhů a hledání funkčního modelu. Ale samozřejmě, že k sobě v rámci backtestu musíme být „upřímní“ – nemá smysl si nic nalhávat a např. vynechávat sporné či ztrátové obchody. Tím si škodíme akorát sobě.
Příklad: pokud budu mít obchodní plán založen na obchodování formace double-top / double-bottom není smyslem backtestu se naučit tyto formace vyhledávat v reálném čase (tj. obchodovat). Smyslem je nalézt základní pravidla pro stavbu výdělečného obchodního systému postaveného na této formaci. Tj. v rámci backtestu se budu snažit pochopit, jak vypadá pro mně funkční formace, jaký stop-loss budu potřebovat a kde bude nejlepší jeho umístění. V rámci backtestování naleznu parametry jako minimální RRR pro umístění profit targetu a samozřejmě si budu vyhodnocovat systém jako celek. Bude mě zajímat frekvence obchodů, drawdown, průměrný zisk na obchod a podobně. Na základě těchto parametrů se pak mohu rozhodnout, zda-li je pro mě systém zajímavý i v případě, že bych v reálném obchodování dosahoval řekněme o 30% horších výsledků. Pokud ano, mohu pokročit k papertradování systému.
Pokud nebudu mít fázi backtestu za sebou, naprosto nevím, zda-li např. zmíněná ukázková formace DT/DB může fungovat a co od ní očekávat. Pokud se s takovým přístupem vrhnu do paper-tradingu nebo skutečného obchodování a budu-li navíc naprostý nováček, mohu dopředu počítat s tím, že jsem si zvolil tu naprosto nejtěžší cestu kdy nejen, že budu bojovat se všemi psychologickými démony, ale navíc mě budou hryzat i naprosto nejzákladnější otázky typu – funguje vůbec to, co obchoduji? A to je právě smyslem backtestu – postavit si základní kameny důvěry v to, co dělám. Pokud mám v backtestu dlouhodobě stabilní výsledky, neřeším zda-li „to“ funguje, ale jak v praxi dosáhnout podobných výsledků jako mám v backtestu a to je ohromný rozdíl...
Dotaz: Backtestujete stále i jako zkušení obchodníci?
Samozřejmě, pokud zkoumám nějakou novou strategii, nebo inovuji svůj obchodní přístup, vždy si jej alespoň částečně backtestuji. Dnes již nedělám tak rozsáhlé backtesty jako dříve, protože vždy spíše drobně inovuji své stávající techniky, ale pořád je pro mě výrazně snazší otestovat si myšlenku během pár dnů na historických datech, než se ji věnovat v reálném čase několik týdnů a pak zjistit, že to nebyla v principu životaschopná myšlenka.
Dotaz: Není ruční backtestování ztráta času? Proč nepoužít počítač?
Obchodník se musí rozhodnout, zda-li bude obchodovat tzv. diskréčně nebo mechanicky s použitím počítačů – podrobně viz tento článek Mechanický vs. diskréční přístup k obchodování. Pokud chcete profitovat jako diskréční obchodníci (což je třeba způsob obchodování Finwinu, nebo na základě různých cenových formací, o kterých se často diskutuje v našem diskuzním fóru, je základem profitů „nakoukání“ trhů a daných formací. V tom má obchodník potom svůj edge, svoji konkurenční výhodu. A toto nelze obejít použitím počítačů, protože cit pro trhy se nedá naprogramovat.
Dotaz: Je možné, abych si v rámci backtestu zakreslil v datech určité vstupní formace, potom uzavřel platformu a při dalším otevření vypadal graf jinak a tudíž i vstupní formace byly jinde? Takový backtest přeci nedává smysl...
Takový backtest skutečně smysl nedává a je třeba odstranit příčinu takového chování sofware. V zásadě může být chyba například v tom, že je v software nastaveno „hrubé rozlišení“ pro ukládání dat (např. vteřinový timeframe) a přitom pro zobrazování grafů používáte velmi jemné tickové grafy. Důležité je také chápat, jak jsou vytvářeny tzv. Volume grafy, které často obchodníci používají. Grafy jsou skládány od určitého data „tick po ticku“ a pokud mám v platformě nastaveno, že např. grafy budou zobrazovány za posledních např. „500 úseček“ a graf si otevřu v jiný den, budou pokaždé grafy počítány od jiného dne a hodiny a tudíž mohou vypadat trochu jinak... Jiným důvodem může být zdroj dat, kdy někteří brokeři (např. IB) poskytují backfill v horším „rozlišení“, než data v reálném čase.
Pokud mohu poradit, na začátek je dobré se držet takzvaných „časových timeframe“ jako jsou např. klasické tříminutové grafy. V této oblasti by se neměly žádné problémy vyskytovat. Grafy využívající každý tick (jako tickové, volume nebo range bary) jsou skutečně náročné na zdroj dat a jejich zpracování a není dobré s nimi začínat bez znalostí toho, s čím pracuji.
Dotaz: Když budu v backtestu papírově vydělávat, mohu podobné výsledky očekávat v reálu?
Backtest na historických datech samozřejmě neřeší vše a určitě negarantuje, kolik budete v budoucnu vydělávat. K tomu je ještě dlouhá cesta. Ale je to absolutně nezbytný základ k tomu, abyste se mohli pustit do dalších kroků. Pochopitelně, že je mnohem snazší vyhledávat obchodní příležitosti na historických grafech; v reálném obchodování vstupují do hry další velmi podstatné faktory (zejména psychika obchodníka), které dokáží výsledky velmi negativně změnit, ale pokud nemáte základ v podobě historických backtestů, informací o charakteru systému, důvěře v testované taktiky, nemáte jednoduše vůbec na čem stavět. Je to podobné jako v běžném životě. Školy a praxe jsou také velmi rozdílné, ale bez určitého vzdělání a pochopení určitých zásad prostě v praxi budete úspěšní jen velmi těžko, byť je toho samozřejmě ještě mnoho, co se musí člověk naučit, aby mohl být skutečně úspěšný.
Dotaz: Jak dlouho bych měl backtestovat? Pokud se budu backtestování věnovat rok, bude to stačit?
Backtestování (a papertradování) je pouze „přípravná fáze“ poznávání trhů. Obchodování (a intradenní obzvláště) vás nenaučí nic jiného, než samotný trading s reálnými penězi (na který však musíme být teoreticky připraveni). Fáze backtestingu by neměla trvat věčnost, je třeba se posouvat dopředu. Člověk si také často kolotoč backtesting – papertrading – trading projde několikrát tak, jak postupně objevuje nové a nové faktory, se kterými na začátku nepočítal. Proto doporučuji se prvotnímu backtestingu věnovat systematicky např. maximálně měsíc a jen co získáte první konkrétní představy o funkčnosti strategie, tak se vrhnout na fázi papertradingu.
Papertrading
Druhá fáze "učení" spočívá v praktické aplikaci toho, co jsme v rámci backtestu nalezli jako funkční. Ale již "v reálném čase". Papertrading je tedy "simulované obchodování". Taktiky, které jsme si osvojili v rámci backtestu zkoušíme aplikovat "naživo". Ale nikoliv s reálnými penězi, ale v simulovaném prostředí.
Celá řada věcí najednou vypadá pochopitelně jinak. Grafy se hýbou, nevíme "co bude následovat" atd. Dnes jsou technologie tak daleko, že papertrading můžeme většinou provádět ve stejných programech, ve kterých budeme později zadávat živé příkazy, ale v určitém "simulovaném režimu", tedy bez skutečných peněz.
Samozřejmě o všech našich vstupech a výstupech si stále vedeme obchodní deník. A dokonce by měl být podrobnější, než v rámci backtestu. Osobně si do deníku dělám různé poznámky, které mě vedly k danému obchodnímu rozhodnutí, případně jaké jsem měl pocity v průběhu otevřeného obchodu atd. To je velmi důležité pro pozdější živé obchodování. Je-li pro úspěch v obchodování něco nejpodstatnější, tak je to precizní evidence. Všichni děláme chyby a uvidíte, že v obchodování jich uděláte více, než jste si kdy mysleli. Co je však důležité, je se z chyb učit! A to můžeme jen díky důkladné evidenci všeho co děláme. Osobně si všechny své obchody zaznamenávám také do grafu, jejichž obrazovky si ukládám a později procházím (sám pro to používám program Snagit). Nemohu zde snad ani více zdůraznit, že právě podobná evidence byla to jediné, co mě v tradingu kdy posunulo vždy dopředu. Časem budou přicházet různé otázky, vylepšení atd., na které můžete nalézt odpovědi právě ve vaší pečlivé evidenci.
Své výsledky v papertradingu si samozřejmě budete porovnávat s výsledky z backtestingu a uvidíte, zda-li jsou podobné nebo se liší. Pokud se liší, měli byste přijít na to proč a postupně rozdíly odstraňovat. V rámci papertradingu budete pilovat postupně také různé nuance, které byly v backtestu hodně nepřesné - např. se učit, kdy neobchodovat díky malé síle trhu atd.
Zejména ze začátku samozřejmě spousta budoucích obchodníků přijde na to, jak původní zbacktestovaný systém výrazně vylepšit nebo dokonce změnit. Potom se kolečko opakuje - nový systém je třeba důkladně zbacktestovat a poté papertradovat. Jistě, zpočátku může celé takové kolečko trvat měsíce (papertradingu byste měli dát alespoň cca 2 měsíce např. v intradenním obchodování, vše samozřejmě závisí na frekvenci obchodů), ale na druhou stranu - celý proces testování kromě malých výdajů za data a software nic nestojí a je to mnohem levnější, než bez jakýchkoliv zkušeností odevzdat své úspory úplně zbytečně trhu.
Opět - papertrading se pochopitelně liší od reálného obchodování především proto, že dokud neriskujete skutečné peníze, nevstupuje do hry psychika, která dokáže být velký oříšek. Ale vše záleží na vašem poctivém přístupu k přípravě. Budete-li v přípravě dostatečně systematičtí, budete mít v trzích šanci. Pokud si uděláte poctivý (myšleno poctivý, nikoliv že jste "tak jako" otestovali pár myšlenek během týdne a máte pocit, že je vám vše jasné) backtest a papertrading a budete "papírově vydělávat", máte základy, na kterých můžete stavět. Jakmile se pustíte do ostrého obchodování, můžete porovnávat, v čem děláte chyby (např. unáhlené výstupy, nesmyslné vstupy atd.) a případně se znovu vracet k backtestu a papertradingu a s co nejmenšími ztrátami tak postupovat vpřed. Bez podobného přístupu se zařadíte jen mezi tu ohromnou masu amatérů, kteří se vrhají do trhů bez dostatečné přípravy, najednou zjistí že "jim to nefunguje" a viní všechny kolem sebe - zdroj od kterého získali obchodní systém, brokera pro nefunkčnost jeho platformy nebo nejlépe všechny okolo.
Kdy se pustit do obchodování s reálnými penězi?
Samozřejmě záleží na každém, kolik má k dispozici financí, jaké má již zkušenosti např. s jinými typy obchodování atd. Můj názor je ten, že by obchodník měl být v rámci intradenního obchodování alespoň měsíc profitabilní v rámci papertradingu. Pokud nedokážete být konzistentní měsíc při papírovém obchodování , je zbytečné riskovat reálné peníze.
Na druhou stranu je zbytečné reálný trading oddalovat dlouhé měsíce. Pokud vám strategie dobře vychází v backtestu, dokážete ji obchodovat úspěšně „na papíře“, je dobré se posunout dál – opatrně do reálných trhů. V této fázi je dobré se připravit na to, že začne působit psychika a věci často fungují zcela jinak než při paper tradingu. Je proto dobré si na první zkoušku vyčlenit jen část účtu – pro intradenní obchodování např. 10% účtu (samozřejmě záleží na typu strategie, velikosti účtu atd.) a pokud můj drawdown dosáhne této hranice, pak přestat na čas obchodovat vrátit se zpět k papertradingu. Ten bude v této fázi zase o trochu realističtější – je čas zanalyzovat, co se v reálném tradingu nedařilo, zapracovat na psychice a postupně se posouvat vpřed stejným stylem jako dosud. Většinou nějakou dobu trvá, než si najde obchodník styl, který mu vyhovuje, ale pokud bude mít vaše cesta naznačené obrysy, tak se v rámci tradingu budete posouvat viditelnými kroky vpřed.
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.