Backtesting: praktické tipy
Je radost vidět, že se stále více začínajících traderů pouští do poctivých backtestů svých obchodních strategií. Na posledním setkání v Praze bylo patrné, že takový přístup přináší velmi mnoho pozitivního. Pojďme se tedy dnes nad backtestováním ještě trošičku pozastavit a shrnout si pár rad a tipů.
Koncept backtestingu by měl být všem již zcela jasný, několikrát jsme celou záležitost popisovali na www.financnik.cz, a zrovna tak jsme i proces backtestingu rozebírali na všech našich seminářích.
Jenom pro rychlé zopakování - obchodník, který se vrhne do backtestování svého obchodního systému, by si měl poctivě zapisovat v rámci každého obchodu provedeného na historických datech následující údaje:
• datum a čas vstupu
• vstupní formace/pattern/signál (ZLR, Ghost, .... nebo cokoliv jiného)
• vstupní cena
• metoda výstupu (někteří obchodníci mohou pracovat i s celou řadou výstupů)
• výstupní cena
• profit/ztráta
• hodnoty MAE a MFE (skutečně důrazně doporučuji zapisovat u každého obchodu – tyto údaje se mohou v budoucnu velmi hodit pro další analýzu ideálních PT a SL)
Různí obchodníci samozřejmě zaznamenávají i další údaje, výše zmíněné by však měly být zcela prvořadé. Nyní tedy pojďme k několika dalším praktickým radám a tipům:
Používejte data, se kterými budete chtít obchodovat
Smutnou realitou v tradingu je, že data od různých poskytovatelů mohou být bohužel trochu rozdílná. Nejedná se většinou o dramatické rozdíly, ale obecně platí, že čím menší time-frame, tím větší mohou rozdíly být. Na dvouminutových grafech a méně mohou být již rozdíly citelné. Zrovna tak mohou mít různé zdroje rozdílné volume – toto platí obzvláště pro intradenní obchodování. Někteří brokeři volume různým způsobem průběžně „dopočítávají“ a nepoužívají pro distribuci svým klientům přímo údaje z burzy. Je tedy důležité backtestovat na datech z takového zdroje, se kterým budete v budoucnu obchodovat. Pokud například plánujete obchodovat s pomocí Interactive Brokers a SierraChart, pak je potřeba využívat historická data pro backtest právě z tohoto zdroje. Jestliže ale například budete pro obchodování používat Esignal, je třeba backtestovat právě na datech od Esignalu.
Podstatně lepší situace vás čeká v případě pozičního obchodování – zde jsou rozdíly v EOD (End-of-day) datech pouze minimální a případný přechod z jednoho zdroje dat k druhému by neměl mít jakýkoliv efekt. Pro backtest pozičních dat rozhodně může posloužit jako spolehlivý zdroj například Gecko Track´n´Trade.
Vytvořte si dostatečně veliký vzorek
Abyste věděli, zda-li systém funguje a jaké má parametry, nutně potřebujete dostatečný vzorek dat – tj. backtestových obchodů. Naprosté doporučené minimum je alespoň 100 obchodů – menší vzorek dat může mít nedostatečnou vypovídající hodnotu o tom, jak se obchodní systém chová, co od něho očekávat atd. V případě intradenního obchodování doporučuji backtestovat minimálně 6 měsíců nazpět, ideálně rok. Menší období může být silně zkreslující. Pokud například budete backtestovat pouze na 1 měsíci dat, můžete dojít k závěru, že systém funguje velmi dobře a další měsíc čelit výrazné, zcela nečekané ztrátě... Takové situace pak začínající obchodník většinou nese velmi špatně a přitom jim lze předejít právě dostatečným backtestem, na skutečně silném vzorku dat. A naopak nemá příliš smysl backtestovat příliš dlouhodobě – trhy se totiž neustále mění, převážně jejich range a volatilita. Proto strategie tak, jak ji hodláte obchodovat nyní a jak vám dobře fungovala v backtestu za poslední 2 roky nazpět, nemusí nutně fungovat stejně dobře 3 roky nazpět, kdy měl například trh ER2 podstatně menší denní range a tudíž bylo v té době třeba obchodovat s trochu jinými parametry (převážně co se stop-lossu a profit-targetu týče).
Strategii rámcově otestujte i na jiném trhu, abyste měli přehled o robustnosti
Podmínkou je samozřejmě backtestovat strategii na tom trhu, který budete chtít v budoucnu obchodovat. Velmi dobré je však rámcově otestovat stejnou strategii i na jiných trzích, resp. alespoň na jednom dalším trhu. Takový backtest vám totiž dá dobrý obrázek o případné robustnosti vašeho obchodního systému: pokud jsou i v jiném trhu čísla pozitivní, máte s vysokou pravděpodobností silnou strategii. Je ale třeba počítat s tím, že pro jiný trh bude často nutno backtestovat s lehce jinými parametry, přizpůsobenými právě danému trhu. Pokud například testujete strategii na trh ER2, pak doporučuji stejnou strategii backtestovat i na trhu YM, avšak s přibližně polovičními profit-targety a stop-lossy. Není třeba, aby v druhém trhu strategie nabízela tak dobré výsledky jako v trhu, který budete se strategií obchodovat – je však třeba vědět, že obecně strategie jakožto koncept funguje i na jiných trzích, byť jen rámcově. Takové zjištění i velmi posílí obchodníkovu víru v danou strategii.
Dělejte si poznámky o „stavu trhu“
Velmi užitečné je psát si v rámci backtestu i „stav“ trhu u každého obchodu. Většinou se jedná o poznámku typu „silně trendující trh“, „normálně trendující trh“, „slabě trendující trh“, nebo „trh jdoucí do strany“. Takovéto poznámky vám totiž mohou pomoci zpětně vyhodnotit, v jakém druhu trhů dosahuje váš systém nejlepších výsledků a na základě takových zjištění ještě strategii trochu poupravit. Vědět konkrétně pro jaký stav trhů je váš obchodní systém stavěný je velmi důležité! Některé systémy nadělují profity v trendujícím trhu a v chopu tvrdě selhávají, jiné obchodní systémy (nebo konkrétní obchodní patterny) právě naopak. A zrovna tak některým systémům více sedí silně trendující trh, jiným jen „běžně“ trendující trh.
Zapište si i den (umí excel) a udělejte srovnávací analýzu
A ještě jeden tip na závěr: u každého obchodu si zapisujte konkrétní den v týdnu. Program Excel vám takovýto údaj dokáže s pomocí jednoduché funkce odvodit přímo z data obchodu, které si při backtestu do Excelu zaznamenáte. Při zpětné analýze totiž můžete tu a tam dojít k velmi zajímavým závěrům, že některé vstupní formace fungují lépe nebo hůře konkrétní den v týdnu. Můj systém například čítá celkem 6 patternů, přičemž jeden z nich dlouhodobě vykazuje ztrátovost při obchodování v pondělí, proto tento pattern v pondělí neobchoduji! Proč právě v pondělí nefunguje a další dny v týdnu ano nevím, má statistika však hovoří jasně, a to je jediné, co mě zajímá. Skutečně však často platí, že ne každý den v týdnu je stejný a dokonce i v rámci konkrétních kalendářních dnů se dá najít celá řada nuancí, se kterými se dá případně obchodní systém ještě trochu vylepšit!
Backtest pak provádějte skutečně poctivě, nesnažte se „šidit“ obchody tak, že tu a tam vypustíte nějaký ztrátový a tu a tam naopak přidáte nějaký ziskový, který však z pohledu vašich pravidel vstupů není zcela jednoznačný. Je skutečně třeba vytvořit o systému co nejreálnější obrázek – jenom tak se v budoucnu můžete vyhnout celé řadě nemilých a nečekaných překvapení.
Tomáš Nesnídal