Osobně považuji R a jeho knihovny za vynikající platformu pro testování kvantitativných obchodních strategií pro algoritmické obchodování. Před tím jsem ke stejným účelům využíval Python a knihovny Pandas/Scipy/Numpy/Matplotlib (Anaconda). I když tyhle zmíněné knihovny obsahují vše co je potřeba k testování tak podle mého názoru pro základní a rychlé ověření strategie je lepší něco více efektivního. A přesně to pro mě představuje R.
V tomto článku bych chtěl ukázat, jak lze na pár řádcích spočítat korelaci měnových párů včetně grafické heatmapy. Z pohledu demonstrace výše zmíněné efektivity to není moc dobrý případ, protože pomocí Numpy a Pythonu se dá podobná věc napsat velmi rychle na pár řádek, ale zde mi jde primárně o to představit R na jednoduchém příkladu, který je pochopitelný i lidem eRkem nepolíbeným.
Korelace měnových párů je věc, kterou by měl sledovat každý trader. Ale položme si otázku, proč vůbec něco takového jako výpočet korelace programovat, když jsou na webu k nalezení desítky heatmap a korelačních matic zdarma. První důvod vidím v tom, že většinou nelze zjistit, jakým způsobem ten který poskytovatel korelaci počítal, z jak kvalitních dat, většinou ani není možné takové výpočty parametrizovat, ať už třeba použít jiný typ algoritmu nebo jinak dlouhou časovou řadu nebo jen spočítat korelaci pro jiný timeframe. V neposlední řadě tomu, kdo budujeme vlastní algoritmický obchodní systém, se bude nějaký výpočet korelace určitě hodit např. pro ladění modelů závislých proměnných pro strategie založené na machine learningu.
První co potřebujeme, jsou data. Určitě je možné najít mnoho poskytovatelů dat, ale já osobně dávám přednost tickovým datům od Dukascopy[1]. Data lze samožrejmě vyskriptovat přímo z platformy.
Další předpokladem je nainstalování R[2] a RStudia[3]. RStudio sice není povinné, ale určitě se jedná o lepší alternativu k R editoru, který je zahrnutý přímo v základní platfromě.
Pojďme se ponořit do kódu R. Pro lepší orientaci jsem vložil nějaké komentáře přímo do kódu. Kód jsem kvůli přehlednosti umístil na github a je k dispozici na následujícím linku:
Výsledkem spuštění tohoto kódu v R je pak matice s korelacemi:
EURUSD AUDUSD GBPUSD NZDUSD USDCAD USDJPY USDCHF
EURUSD 1.00000000 -0.2621848 0.01775569 -0.4070272 0.3285589 -0.146379381 -0.520783603
AUDUSD -0.26218483 1.0000000 0.92087770 0.9498406 -0.9746664 0.575996280 -0.520895302
GBPUSD 0.01775569 0.9208777 1.00000000 0.7705082 -0.9030557 0.724019527 -0.596901655
NZDUSD -0.40702721 0.9498406 0.77050823 1.0000000 -0.9312224 0.378394663 -0.433411568
USDCAD 0.32855892 -0.9746664 -0.90305573 -0.9312224 1.0000000 -0.578075230 0.483722806
USDJPY -0.14637938 0.5759963 0.72401953 0.3783947 -0.5780752 1.000000000 -0.008933076
USDCHF -0.52078360 -0.5208953 -0.59690166 -0.4334116 0.4837228 -0.008933076 1.000000000
a heatmapa:
Jednoduché, že? Samozřejmě je s možné s kódem dál experimentovat, změnit typ algortimu pro korelaci, zvolit jinou délku časové řady apod.
[1] https://www.dukascopy.com/swiss/english/marketwatch/historical/