Mé požadavky na kvalitní mechanický daytradingový systém
Jak by měl vypadat kvalitní mechanický intradenní systém? Jaké by měl mít parametry, aby mohl být nasazen do živých trhů a nemuseli jsme se bát, že se za chvilku "rozpadne"? Pokusím se dnes prezentovat nekteré požadavky, které jsem si pro tyto otázky nastavil já sám, pro své vlastní obchodování intradenních mechanických systémů a intradenních breakout strategií..
Počet obchodů
Po dvou letech vývoje intradenních mechanických strategií jsem došel k závěru, že jedna z naprosto nejdůležitějších věcí, pro mě skutečně klíčových, je vzorek obchodů a to jak in-sample (IS), tak out-of-sample (OOS). Dříve jsem se spokojil s backtestovým vzrorkem obchodů v řádu několika stovek, toto kritérium jsem však výrazně přehodnotil - stovky považuji za statisticky zcela nedostatečné. Dnes požaduji minimální vzorek obchodů alespoň kolem jednoho tisíce, daleko raději i více jak 2000 obchodů. Opravdu velký statistický vzorek je totiž jedním z klíčů k tomu, aby systém s podobnou stabilitou pracoval i v budoucnu. Nedostatečný vzorek obchodů prudce zvyšuje pravděpodobnost, že systém v budoucnu selže.
Zde je například ukázka jednoho z mých systémů (tento je stále ještě v rozpracované fázi) s pracovním názvem TomNes_R-Primus:
Prvních 70% obchodů je in-sample (tj.prvních70% dat bylo použito k optimalizaci), zbylých 30% obchodů (tj. zhruba obchod 1500-2200) jsou out-of-sample (tj. "neviděná" data, na kterých bylo provedeno ověření optimalizovaných parametrů). Vzorek 700 obchodů v OOS, který funguje se stejnou stabilitou jako IS, je pro mě nejlepší důkaz toho, že se nemusím bát nasadit v budoucnu systém live.
Další obrovskou výhodou systémů s vysokým vzorkem obchodů (backtest výše je od roku 2003 do roku 2011, tj. historie 9 let) je fakt, že takové systémy mají vysokou frekvenci obchodů a mnohem rychleji se dostávají z drawdownů. Po prvotních zkušenostech s live obchodování intradenních AOS jsem došel k závěru, že toto je velmi důležité. Ve svých portfoliích totiž mám i systémy s výrazně nižší frekvencí obchodů a takovým trvá třeba i čtvrt roku (někdy i více), než se vyhrabou z případného drawdownu. Systémy s vyšší frekvencí obchodů nejsou většinou v drawdownu déle, jak pár týdnů, což je psychologicky mnohem lépe snesitelné. I tak dělají mé systémy s velkým vzorkem obchodů maximálně pouze 1-3 obchodů denně, více nikoliv. Klíčem je fakt, že obchodují většinu dnů v týdnu.
Nutno také říci, že na obrovském statistickém vzorku trvám v podobě "základního konceptu" dané strategie. Později během vývoje systému přidám některé filtry a počet obchodů už klesně řádově na stovky - to je však již v pořádku, pokud vím, že základní podoba bez filtrů má masivní vzorek obchodů a především že funguje.
Drawdown, PF (profit factor), průměr na obchod
Další parametry systému, na které primárně hledím, jsou drawdown, profit factor a průměr na obchod.
U průměru na obchod u trhu e-mini Russell 2000 (můj primární trh), ale i u ostatních systémů, trvám na průměru na obchod alespoň 80-90 USD na obchod bez započtení komisí a případného skluzu. S takovýmto průměrem na obchod mám totiž jistotu, že i po započítání komise a skluzu zbývá stále rozumný ukazatel a systém může stále velmi slušně a stabilně fungovat. Cokoliv pod 80 USD na obchod bych pravděpodobně nenasadil (pokud by se jednalo o velmi slibný systém a průměr by byl jen lehce pod 80, tak možná ano).
Profit factor rád vidím alespoň kolem 1.5, spokojím se v některých případech i s číslem kolem 1.4, cokoliv nad 1.5 už považuji za velmi dobré. Řada systémů po přidání filtru dosahuje PF i 2.0 a více, což již považuji za špičkový parametr.
Na drawdown hledím spíše jako na poměr vůči celkovému zisku vs. maximální drawdown. Můj požadavek je alespoň 20:1, tj. celkový zisk 20x větší, než maximální drawdown. Rád mám ale čísla ještě větší, kolem 25:1 a více. To už je ale skutečně vysoká meta k dosažení. Obecně mají mé mechanické breakout systémy maximální historické drawdowny (tj. v rámci backtestu) od 4 000 USD do 8 000 USD.
Profit za rok
Během stavby obchodních systémů hledím na to, aby jednak systém vydělal v minulosti na backtestovaných datech naprosto každý rok a za další mám rád systémy, které vykazují roční průměrný zisk alespoň kolem 10 000 - 12 000 USD na kontrakt u trhu emini Russell 2000. Zkrátka a dobře se snažím cílit na průměrný měsíční profit systému kolem 1 000 USD (samozřejmě, zdaleka ne každý měsíc je ziskový). Důvodem je, že s portfoliem systémů se tyto částky již zkládají a dostávají se na úrovně, kdy hravě pokrývají mé nemalé měsíční životní náklady (+ ideálně dále extra vydělávají).
Neznamená to však, že mám v portfoliu pouze takovéto systémy. Nasazeny mám i systémy s průměrným ročním ziskem kolem 4000-5000 USD na kontrakt, takové však mají většinou i mnohem menší drawdown, takže volím dvojnásobné množství pozic.
Minimum vstupních parametrů
Jako další trvám na tom, aby měl systém minimum vstupních (tj. optimalizačních) parametrů. Za přijatelné maximum považuji dva, určitou výjimku za určitých okolností jsem ochoten udělat u třech (nepočítám stop-loss). U řady systémů pracuji se dvěma optimalizačními parametry, už proto, že rád používám 3D optimalizační graf a zajímají mě pouze takové systémy, které mají velmi široké pásmo optimálních hodnot.
Za úplně ideální považuji systém, který v naprostém základu pracuje dobře bez jakéhokoliv optimalizačního parametru, tj. bez jakékoliv proměnné. Příklad takového základu systému uvádím zde:
Toto je skutečně equity jednoduchého konceptu, který neobsahuje jedinou proměnnou. Jako nástavbu je pak možné použít filtry, které už optimalizační proměnnou obsahují a celkově posunou equity do obchodovatelné podoby (samotný základ v této podobě bych neobchodoval). Pozitivní na tom je, že víte, že pokud filtr začne selhávat, stále zůstává velmi silný a robustní základ.
Dříve jsem byl schopen bez problémů vytvořit s pomocí genetického programování úžasné equity, které však měly 4-8 optimalizačních parametrů. Takové systémy jsou však v budoucnu velmi nestabilní a většinou rychle přestávají fungovat. Systémy s minimem vstupních parametrů jsou daleko robustnější, mají šanci fungovat opravdu dlouhodobě. Je ale také mnohem náročnější takové najít, vyžaduje to mnoho trpělivosti.
Funkčnost na dalších trzích a timeframe
Za naprosto nejlepší out-of-sample test považuji, pokud systém pustím na jiném trhu, nebo jiném timeframe.
Obecně chci vidět, že systém, který primárně vyvíjím pro e-mini Russell 2000, funguje i na dalších indexech, jako ES, YM, EMD. Za důkaz robustnosti považuji, pokud systém funguje rozumně i na DAX a samozřejmě úplně optimální je, pokud systém funguje i na úplně jiných trzích, které nejsou indexy. Na této podmínce však netrvám, i když funkčnost systému na dalších neindexových trzích určitě potěší a potvrdí domnělou robustnost systému.
Zrovna tak každý systém otestuji i na dalších timeframe. Nemusím vidět perfektní, stabilní equity, ale musím vidět, že systém na jiném timeframe rámcově stále funguje. Pokud například vyvíjím systém na 15 minutovém timeframe, rád ještě vyzkouším 5 minut, 10 minut, 20 minut, 25 minut a 30 minut. Na všech těchto timeframe by měl systém dát rozumně uspokojivé výsledky, pokud je skutečně robustní.
Závěr
Vytvořit systémy s požadavky výše není rozhodně žádná sranda. Naučit se dospět k takovým konceptům mně dalo nesmírně mnoho práce v podobě obrovského množství různých dílčích studií a experimentování. Během celého procesu jsem také musel eliminovat desítky rámcově velmi dobrých systémů, jenom proto, že nesplňovaly všechny mé požadavky a já nenašel cestu, jak je dopracovat do podoby, aby požadavky splňovaly.
Nakonec jsem se však skrze mnoho bezesných nocí naučil následující:
Nemá smysl trávit příliš času vymýšlením složitých a komplexních systémů, tento čas je třeba raději investovat do vymýšlení komplexních testů robustnosti systémů.
Od té doby jsou tedy mé kódy prakticky vždy velmi jednoduché - jejich základ je skutečně na pár řádků. Následně však věnuji u každé ideji mnoho času testování a ověřování robustnosti (občas možná až moc času - jsem však v tomto ohledu velmi konzervativní).
Svůj kompletní postup testování robustnosti považuji již za své velmi cenné know-how, proto o něm samotné články bohužel nepřipravuji, dělit se o toto know-how však budu se studenty na semináři Stavba, testování a obchodování intradenních breakout strategií, kde prezentuji nejenom své jednotlivé dílčí kroky, ale také můj přístup k vývoji jednoduchých, ale silných strategií. Nic méně, výše zmíněné vám samo o sobě už dá velmi solidní základ.
Mojí specializací jsou pa intradenní breakout strategie a to zásadně v jednoduché, nekomplikované podobě. Komplikovanosti nikdy nebyly pro mě.
Tomáš Nesnídal