Pokud nemáme nějaký vlastní sofistikovaný testovací framework můžeme použit již hotové nástroje, které umožňují (téměř) instatní backtesting a ověření základních statistických a investičních atributů té které strategie. Takovým vhodným nástrojem, který bych chtěl touto cestou představit je kombinace R a balíčku „Systematic Investor Toolbox“ (SIT)[1]. SIT je opensource knihovna pro R dostupná na githubu, která je určená pro zkoumání a testování vlastností investičních strategií.
Strategie pro test
Přednosti knihovny SIT bych chtěl prezentovat na jednoduché strategii, a sice křížení klouzavých průměrů. Ve skutečnosti budeme testovat celkem tři strategie, jejichž parametry naleznete níže. Cílem testování je zjistit zda-li je strategie zisková a vyhodnotit risk z hlediska eventuálně dosaženého zisku. Účelem testu je také ukázat proces ladění strategie pomocí nástroje/knihovny SIT, přičemž druhá a třetí strategie je mírným "vylepšením" té předchozí.
1. Pure MA Crossover
Elementy: EMA (21), EMA (89)
Long signál: EMA (21) protne EMA (89) zdola
Short signál: EMA (21) protne EMA (89) shora
TP/SL: obchod je validní a běží, dokud se neobjeví signál s opačným sentimentem
2. MA Crossover, filtered by MACD
Elementy: EMA (21), EMA (89), MACD(12,26,9)
Long signál: EMA (21) protne EMA (89) zdola a MACD – SIGNAL > 0
Short signál: EMA (21) protne EMA (89) shora a MACD – SIGNAL < 0
TP/SL: obchod je validní a běží, dokud se neobjeví signál s opačným sentimentem
3. MA Crossover, filtered by MACD with applied TakeProfit and StopLoss
Elementy: EMA (21), EMA (89), MACD(12,26,9)
Long signál: EMA (21) protne EMA (89) zdola a MACD – SIGNAL > 0
Short signál: EMA (21) protne EMA (89) shora a MACD – SIGNAL < 0
TP/SL: test aplikuje 2:10 Risk: Reward ratio
Data pro test
Testovaná data použitá v testu jsou v rozpětí května 2008 a října 2015. Pro backtest jsem použil historická data brokera Dukascopy, která jsou dostupná ke stažení na jejich webu [2].
Zdrojový kód
Zdrojový kód jsem umístil na githubu [3] z důvodu jeho lepší čitelnosti přeci jen možnosti formátování textu na blogu jsou velmi omezené a kód by zde nebyl moc čitelný.
Interpretace výsledků
Spuštěním kódu v prostředí R získáme graf s vyznačenými signály pro short nebo long. Pozice long jsou znázorněny zelenou barvou, pozice short šedou. Z důvodu velkého množství dat je na přiloženém snímku obrazovky znázorněno pouze období srpna 2015 a října 2015.
SIT pro nás připraví základní investiční statistiku jednotlivých strategií:
CAGR - Compound Annual Growth Rate, DD – draw down, VaR – value at risk
A jak si tedy stojí naše strategie?
Nejhůře dopadla nejjednodušší strategie „Pure MA Crossover“. Hodnota CAGR 3.61% je hodnota pozitivní, ale zisk je v podstatě zanedbatelný. Zato draw down 28.43% je velmi vysoký vzhledem k míře ziskovosti a Sharpe 0.06 je téměř vražedné :).
Druhá strategie „MA Crossover, filtered by MACD“ měla lepší výkonost s hodnotou CAGR 8.3 % s max. draw down 23.5 %. Také jasně pozitivní, s lepším i když stále hodně nízkým Sharpe ratiem 0.13. Poslední strategie „MA Crossover, filtered by MACD with applied TakeProfit and StopLoss“ je jasným vítězem. Poměr ziskovosti CAGR 12.77 % a draw down 13.75 % je sice zdaleka nejlepší, ale pořád to kazí nízké Sharpe ratio s hodnotou 0.21.
Z hlediska profitability jsou tedy naše tři strategie docela slabé i když poslední z nich má snad dobře “našlápnuto? k dalšímu experimentování. Co bych však chtěl na tomto místě vyzvednout je proces, kterým jsme dokázali první jednoduchou strategii založenou na křížení dvou klouzavých průměrů pomocí přidávání dalších atributů vylepšit (zvýšit ziskovost, snížit draw down a zvýšit Sharpe ratio). Samotný proces optimalizace dané strategie je díky použitým nástrojům velmi efektivní a takřka instantní s možností dalšího ladění a optimalizace.
Seznam odkazů
[1] https://github.com/systematicinvestor/SIT
[2] https://www.dukascopy.com/swiss/english/marketwatch/historical
[3] https://goo.gl/UQxG6N