{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading required package: xts\n", "Loading required package: zoo\n", "\n", "Attaching package: 'zoo'\n", "\n", "The following objects are masked from 'package:base':\n", "\n", " as.Date, as.Date.numeric\n", "\n", "Loading required package: TTR\n", "Version 0.4-0 included new data defaults. See ?getSymbols.\n", "\n", "Attaching package: 'data.table'\n", "\n", "The following objects are masked from 'package:xts':\n", "\n", " first, last\n", "\n", "Loading required package: timeDate\n", "Loading required package: timeSeries\n", "\n", "Attaching package: 'timeSeries'\n", "\n", "The following object is masked from 'package:zoo':\n", "\n", " time<-\n", "\n", "Loading required package: fBasics\n", "\n", "\n", "Rmetrics Package fBasics\n", "Analysing Markets and calculating Basic Statistics\n", "Copyright (C) 2005-2014 Rmetrics Association Zurich\n", "Educational Software for Financial Engineering and Computational Science\n", "Rmetrics is free software and comes with ABSOLUTELY NO WARRANTY.\n", "https://www.rmetrics.org --- Mail to: info@rmetrics.org\n", "\n", "Attaching package: 'fBasics'\n", "\n", "The following object is masked from 'package:TTR':\n", "\n", " volatility\n", "\n", "\n", "Attaching package: 'fTrading'\n", "\n", "The following object is masked from 'package:TTR':\n", "\n", " SMA\n", "\n", "\n", "Attaching package: 'dplyr'\n", "\n", "The following objects are masked from 'package:timeSeries':\n", "\n", " filter, lag\n", "\n", "The following object is masked from 'package:gridExtra':\n", "\n", " combine\n", "\n", "The following objects are masked from 'package:data.table':\n", "\n", " between, first, last\n", "\n", "The following objects are masked from 'package:xts':\n", "\n", " first, last\n", "\n", "The following objects are masked from 'package:stats':\n", "\n", " filter, lag\n", "\n", "The following objects are masked from 'package:base':\n", "\n", " intersect, setdiff, setequal, union\n", "\n" ] } ], "source": [ "#Leandro Guerra\n", "#www.outspokenmarket.com\n", "#21/07/2018\n", "\n", "#Loading Libraries\n", "library(quantmod)\n", "library(ggplot2)\n", "library(data.table)\n", "library(gridExtra)\n", "library(fTrading)\n", "library(TTR)\n", "library(dplyr)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
Time (CAT)OpenHighLowClosePipsPips_Shift
01/01/2015 00:001.20969 1.20976 1.20969 1.20976 0 0
01/01/2015 01:001.20976 1.20976 1.20976 1.20976 0 0
01/01/2015 02:001.20976 1.20976 1.20976 1.20976 0 0
01/01/2015 03:001.20976 1.20976 1.20976 1.20976 0 0
01/01/2015 04:001.20976 1.20976 1.20976 1.20976 0 0
01/01/2015 05:001.20976 1.20976 1.20976 1.20976 0 0
\n" ], "text/latex": [ "\\begin{tabular}{r|lllllll}\n", " Time (CAT) & Open & High & Low & Close & Pips & Pips\\_Shift\\\\\n", "\\hline\n", "\t 01/01/2015 00:00 & 1.20969 & 1.20976 & 1.20969 & 1.20976 & 0 & 0 \\\\\n", "\t 01/01/2015 01:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 \\\\\n", "\t 01/01/2015 02:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 \\\\\n", "\t 01/01/2015 03:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 \\\\\n", "\t 01/01/2015 04:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 \\\\\n", "\t 01/01/2015 05:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "Time (CAT) | Open | High | Low | Close | Pips | Pips_Shift | \n", "|---|---|---|---|---|---|\n", "| 01/01/2015 00:00 | 1.20969 | 1.20976 | 1.20969 | 1.20976 | 0 | 0 | \n", "| 01/01/2015 01:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | \n", "| 01/01/2015 02:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | \n", "| 01/01/2015 03:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | \n", "| 01/01/2015 04:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | \n", "| 01/01/2015 05:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | \n", "\n", "\n" ], "text/plain": [ " Time (CAT) Open High Low Close Pips Pips_Shift\n", "1 01/01/2015 00:00 1.20969 1.20976 1.20969 1.20976 0 0 \n", "2 01/01/2015 01:00 1.20976 1.20976 1.20976 1.20976 0 0 \n", "3 01/01/2015 02:00 1.20976 1.20976 1.20976 1.20976 0 0 \n", "4 01/01/2015 03:00 1.20976 1.20976 1.20976 1.20976 0 0 \n", "5 01/01/2015 04:00 1.20976 1.20976 1.20976 1.20976 0 0 \n", "6 01/01/2015 05:00 1.20976 1.20976 1.20976 1.20976 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "#Loading Data\n", "EURUSD <- fread(\"D:/Projetos/LBI/Outspoken Market/EURUSD_H1_Hour.csv\", sep = \";\",header=T)\n", "EURUSD <- as.data.frame(EURUSD)\n", "\n", "head(EURUSD)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
DateOpenHighLowClosePipsPips_ShiftHoursYear
01/01/2015 00:001.20969 1.20976 1.20969 1.20976 0 0 0 2015
01/01/2015 01:001.20976 1.20976 1.20976 1.20976 0 0 1 2015
01/01/2015 02:001.20976 1.20976 1.20976 1.20976 0 0 2 2015
01/01/2015 03:001.20976 1.20976 1.20976 1.20976 0 0 3 2015
01/01/2015 04:001.20976 1.20976 1.20976 1.20976 0 0 4 2015
\n" ], "text/latex": [ "\\begin{tabular}{r|lllllllll}\n", " Date & Open & High & Low & Close & Pips & Pips\\_Shift & Hours & Year\\\\\n", "\\hline\n", "\t 01/01/2015 00:00 & 1.20969 & 1.20976 & 1.20969 & 1.20976 & 0 & 0 & 0 & 2015 \\\\\n", "\t 01/01/2015 01:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 & 1 & 2015 \\\\\n", "\t 01/01/2015 02:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 & 2 & 2015 \\\\\n", "\t 01/01/2015 03:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 & 3 & 2015 \\\\\n", "\t 01/01/2015 04:00 & 1.20976 & 1.20976 & 1.20976 & 1.20976 & 0 & 0 & 4 & 2015 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "Date | Open | High | Low | Close | Pips | Pips_Shift | Hours | Year | \n", "|---|---|---|---|---|\n", "| 01/01/2015 00:00 | 1.20969 | 1.20976 | 1.20969 | 1.20976 | 0 | 0 | 0 | 2015 | \n", "| 01/01/2015 01:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | 1 | 2015 | \n", "| 01/01/2015 02:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | 2 | 2015 | \n", "| 01/01/2015 03:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | 3 | 2015 | \n", "| 01/01/2015 04:00 | 1.20976 | 1.20976 | 1.20976 | 1.20976 | 0 | 0 | 4 | 2015 | \n", "\n", "\n" ], "text/plain": [ " Date Open High Low Close Pips Pips_Shift Hours Year\n", "1 01/01/2015 00:00 1.20969 1.20976 1.20969 1.20976 0 0 0 2015\n", "2 01/01/2015 01:00 1.20976 1.20976 1.20976 1.20976 0 0 1 2015\n", "3 01/01/2015 02:00 1.20976 1.20976 1.20976 1.20976 0 0 2 2015\n", "4 01/01/2015 03:00 1.20976 1.20976 1.20976 1.20976 0 0 3 2015\n", "5 01/01/2015 04:00 1.20976 1.20976 1.20976 1.20976 0 0 4 2015" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Manipulating date to get hours and years\n", "names(EURUSD)[1] <- \"Date\"\n", "EURUSD$Hours <- substr(as.character(EURUSD$Date), 12, 13)\n", "EURUSD$Hours <- as.numeric(EURUSD$Hours)\n", "EURUSD$Year <- substr(as.character(EURUSD$Date), 7, 10)\n", "head(EURUSD,5)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
DateOpenHighLowClosePipsPips_ShiftHoursYearSTDRSICCICLVVHF
2902/01/2015 04:001.20670 1.20687 1.20476 1.20588 -8.2 -7.1 4 2015 0.001395559 7.094876 -268.9198 0.06161137 0.9181034
3002/01/2015 05:001.20586 1.20627 1.20552 1.20574 -1.4 -2.8 5 2015 0.001617777 6.836045 -196.5544 -0.41333333 0.9205021
3102/01/2015 06:001.20574 1.20597 1.20492 1.20529 -4.5 3.2 6 2015 0.001823387 6.069567 -172.4746 -0.29523810 0.9273423
3202/01/2015 07:001.20529 1.20555 1.20461 1.20517 -1.2 -4.5 7 2015 0.001972964 5.880227 -148.8883 0.19148936 0.9289720
3302/01/2015 08:001.20517 1.20577 1.20485 1.20546 2.9 3.6 8 2015 0.002038003 12.947731 -116.2236 0.32608696 0.8812057
\n" ], "text/latex": [ "\\begin{tabular}{r|llllllllllllll}\n", " & Date & Open & High & Low & Close & Pips & Pips\\_Shift & Hours & Year & STD & RSI & CCI & CLV & VHF\\\\\n", "\\hline\n", "\t29 & 02/01/2015 04:00 & 1.20670 & 1.20687 & 1.20476 & 1.20588 & -8.2 & -7.1 & 4 & 2015 & 0.001395559 & 7.094876 & -268.9198 & 0.06161137 & 0.9181034 \\\\\n", "\t30 & 02/01/2015 05:00 & 1.20586 & 1.20627 & 1.20552 & 1.20574 & -1.4 & -2.8 & 5 & 2015 & 0.001617777 & 6.836045 & -196.5544 & -0.41333333 & 0.9205021 \\\\\n", "\t31 & 02/01/2015 06:00 & 1.20574 & 1.20597 & 1.20492 & 1.20529 & -4.5 & 3.2 & 6 & 2015 & 0.001823387 & 6.069567 & -172.4746 & -0.29523810 & 0.9273423 \\\\\n", "\t32 & 02/01/2015 07:00 & 1.20529 & 1.20555 & 1.20461 & 1.20517 & -1.2 & -4.5 & 7 & 2015 & 0.001972964 & 5.880227 & -148.8883 & 0.19148936 & 0.9289720 \\\\\n", "\t33 & 02/01/2015 08:00 & 1.20517 & 1.20577 & 1.20485 & 1.20546 & 2.9 & 3.6 & 8 & 2015 & 0.002038003 & 12.947731 & -116.2236 & 0.32608696 & 0.8812057 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "| | Date | Open | High | Low | Close | Pips | Pips_Shift | Hours | Year | STD | RSI | CCI | CLV | VHF | \n", "|---|---|---|---|---|\n", "| 29 | 02/01/2015 04:00 | 1.20670 | 1.20687 | 1.20476 | 1.20588 | -8.2 | -7.1 | 4 | 2015 | 0.001395559 | 7.094876 | -268.9198 | 0.06161137 | 0.9181034 | \n", "| 30 | 02/01/2015 05:00 | 1.20586 | 1.20627 | 1.20552 | 1.20574 | -1.4 | -2.8 | 5 | 2015 | 0.001617777 | 6.836045 | -196.5544 | -0.41333333 | 0.9205021 | \n", "| 31 | 02/01/2015 06:00 | 1.20574 | 1.20597 | 1.20492 | 1.20529 | -4.5 | 3.2 | 6 | 2015 | 0.001823387 | 6.069567 | -172.4746 | -0.29523810 | 0.9273423 | \n", "| 32 | 02/01/2015 07:00 | 1.20529 | 1.20555 | 1.20461 | 1.20517 | -1.2 | -4.5 | 7 | 2015 | 0.001972964 | 5.880227 | -148.8883 | 0.19148936 | 0.9289720 | \n", "| 33 | 02/01/2015 08:00 | 1.20517 | 1.20577 | 1.20485 | 1.20546 | 2.9 | 3.6 | 8 | 2015 | 0.002038003 | 12.947731 | -116.2236 | 0.32608696 | 0.8812057 | \n", "\n", "\n" ], "text/plain": [ " Date Open High Low Close Pips Pips_Shift Hours Year\n", "29 02/01/2015 04:00 1.20670 1.20687 1.20476 1.20588 -8.2 -7.1 4 2015\n", "30 02/01/2015 05:00 1.20586 1.20627 1.20552 1.20574 -1.4 -2.8 5 2015\n", "31 02/01/2015 06:00 1.20574 1.20597 1.20492 1.20529 -4.5 3.2 6 2015\n", "32 02/01/2015 07:00 1.20529 1.20555 1.20461 1.20517 -1.2 -4.5 7 2015\n", "33 02/01/2015 08:00 1.20517 1.20577 1.20485 1.20546 2.9 3.6 8 2015\n", " STD RSI CCI CLV VHF \n", "29 0.001395559 7.094876 -268.9198 0.06161137 0.9181034\n", "30 0.001617777 6.836045 -196.5544 -0.41333333 0.9205021\n", "31 0.001823387 6.069567 -172.4746 -0.29523810 0.9273423\n", "32 0.001972964 5.880227 -148.8883 0.19148936 0.9289720\n", "33 0.002038003 12.947731 -116.2236 0.32608696 0.8812057" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Creating more info\n", "EURUSD$STD <- runSD(EURUSD$Close,15) # I will explain it later on\n", "EURUSD$RSI <- RSI(EURUSD$Close) # I will explain it later on\n", "EURUSD$CCI <- CCI(EURUSD[,c(\"High\",\"Low\",\"Close\")])\n", "EURUSD$CLV <- CLV(EURUSD[,c(\"High\",\"Low\",\"Close\")])\n", "EURUSD$VHF <- VHF(EURUSD[,\"Close\"])\n", "\n", "EURUSD <- na.omit(EURUSD)\n", "head(EURUSD,5)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#Evaluating the variation in the number os pips per hour, from 2015 to 20/07/2018 and creating the plot\n", "AcumHour <- data.frame(Pips=0, Hours=seq(0,23),stringsAsFactors=FALSE)\n", "for(i in 0:23){\n", " AcumHour$Pips[i+1] = 100*sum(EURUSD[EURUSD$Hours==(i),]$Pips)\n", "}\n", "\n", "hist <- ggplot(data=AcumHour, aes(x=Hours, y=Pips)) +\n", " geom_bar(stat=\"identity\") + ggtitle(\"Outspoken Market - Test of Hours Strategy\") +\n", " xlab(\"\") + ylab(\"2015 to 2018\")\n", "\n", "#2015\n", "EUR2015 <- EURUSD[EURUSD$Year==2015,]\n", "\n", "AcumHour <- data.frame(Pips=0,Hours=seq(0,23),stringsAsFactors=FALSE)\n", "\n", "for(i in 0:23){\n", " AcumHour$Pips[i+1] = 100*sum(EUR2015[EUR2015$Hours==(i),]$Pips)\n", "}\n", "\n", "hist2015 <- ggplot(data=AcumHour, aes(x=Hours, y=Pips)) +\n", " geom_bar(stat=\"identity\") +\n", " xlab(\"\") + ylab(\"2015\")\n", "\n", "#2016\n", "EUR2016 <- EURUSD[EURUSD$Year==2016,]\n", "\n", "AcumHour <- data.frame(Pips=0,Hours=seq(0,23),stringsAsFactors=FALSE)\n", "\n", "for(i in 0:23){\n", " AcumHour$Pips[i+1] = 100*sum(EUR2016[EUR2016$Hours==(i),]$Pips)\n", "}\n", "\n", "hist2016 <- ggplot(data=AcumHour, aes(x=Hours, y=Pips)) +\n", " geom_bar(stat=\"identity\") +\n", " xlab(\"\") + ylab(\"2016\") \n", "\n", "#2017\n", "EUR2017 <- EURUSD[EURUSD$Year==2017,]\n", "\n", "AcumHour <- data.frame(Pips=0,Hours=seq(0,23),stringsAsFactors=FALSE)\n", "\n", "for(i in 0:23){\n", " AcumHour$Pips[i+1] = 100*sum(EUR2017[EUR2017$Hours==(i),]$Pips)\n", "}\n", "\n", "hist2017<-ggplot(data=AcumHour, aes(x=Hours, y=Pips)) +\n", " geom_bar(stat=\"identity\") +\n", " xlab(\"\") + ylab(\"2017\")\n", "\n", "#2018\n", "EUR2018 <- EURUSD[EURUSD$Year==2018,]\n", "\n", "AcumHour <- data.frame(Pips=0,Hours=seq(0,23),stringsAsFactors=FALSE)\n", "\n", "for(i in 0:23){\n", " AcumHour$Pips[i+1] = 100*sum(EUR2018[EUR2018$Hours==(i),]$Pips)\n", "}\n", "\n", "hist2018 <- ggplot(data=AcumHour, aes(x=Hours, y=Pips)) +\n", " geom_bar(stat=\"identity\") +\n", " xlab(\"Hour GMT +1\") + ylab(\"2018\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAOVBMVEUAAAAzMzNNTU1ZWVlo\naGh8fHyMjIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enr6+vw8PD///8Yrk7HAAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2d62KyvBJG2Xk91Vb95P4vdstJAUkkwwRGWOtH\nbYt5nASWQUTMcgCYTLZ0AQBrAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFJhB\npN9DlmWH37f/349jE7KRVbrD+Vb/ejsfXEyYt5ishfeB/V25H7Ns9/7QY3vU5+/oHnmne/BB\nxw8sqJFcpJurt8Ldrbdk/MY09p6PRznVv5682/3w/70PMUok/6LiSWT/fjehSIemkr9QhtRS\nmEDqMX94tC/W+t8+cz2TUoi0a6Yht1MSaVQB/uVZdh26m2xbP2euGMvbuUxFJEukHvNda47Y\ndRelEOknu5S/XR6/GRFp8A/Ztu6y+rnonB0RyRaJx/wvOzx/3xU7JPVKftw0O0vXx6sId7xU\n/zzXE1j5f/f4/7W+dzG37X4eN5d9Vt/l8d+Ty3Z/rc5kt9rbU3atH+n0mJr2l2rpffcoZzAs\nvOfW3jRfj/+qvNf6VXlvj/BNpH4fq5u60NbIDLWvo5s7vzr6fMxWqeUewbm4c/N0du8/r8Ek\nEot0zF7b+V/rafS1IVxee/3FhJI1r3P++q8GXPla4zd73uWxlTzvkTep9b6dc/UjuXbKoWg4\nGDZapNbjvyrvtm5V/kGktz42IpWFtkamZv+c3vP8JVJ551ZHm8dslZrXA1s899R5v9mPv78Q\nTWKRdtn9+Xv5HNjZXqp7FMfzfqtl7vH7nyteADwmlJ97fn+s+lt1z3256V/LJ93rvtpg3CW/\nH16v5cs5qty3uzTC/JSby095n4d499wfFurGc2m7Safy1307lQd37d76+ByYstBWfs2tmL9+\nr520+s7djvZLfTxSNbJZfqvz9ln/4A9MIbFIb9vRm0idJ+xq3bpTsW9WPfkeq/ni8Xd5rOJU\niXkvdmaq5+p79xn/UrYrdCr/X4tc/p5l9R7ecNiobniatFt3Ku8PQOcIYL+Pr4G59ENrbtVh\nu8Pfa3l9525H+6WesnPx+2+x5FAPG3t2qiwu0qF4kq0EauaWw67YMKr/3aon/HP5lFr8+7Uh\ntqJaD+CKfTv3Wpxf/372re0rHPapG+0m7cpbrTuVB0Xq9bE/Rq38F/eyN62J5/UAvY62S901\nUmXF7FS8omLPTpnEIrlW/j1zA9tL9T7TrnjGbJ4kd+0Nu7pnVr+t2d4Qh0UqJqPL69XY2T23\n2+f9A2Gvf3e60arm1aRdeTZ43/xNpHxw2eAzTDu/x2VfaNAV6a2jQ70rbw/FrjN7dsosd7Dh\nuXb/jsXa/nmJtH8Xyf2+vwk5LNLfYz/p9HzV85h89qffW1ekQFj1a0ik9r9flacQqZXfb956\nTqr/+d7RoZrK22JKYs9Om8Qi/bUOBfQOf7fX9PVYbhn1ofKBXbvbQ8li1bvW+5vDIuWPJPfc\nnHatlxvP+wfCPDyXtpu0Kx+7a9f57cOuXSu/Yv96Vnrdrb7ze0fbpbZ37crZiD07bRKL9PaG\nbFau0r+3lyXVP6rVXR1sqE4Ye74Qv5evqo/Vv6+Fnx6RHpPg6yVEtfCvK1IgzMNzabtJp/LX\nfTuVB0Xq9XF4YFp/vQ7g/b5K7oxCu6PtUuuDDefmXif27LRJLVJxilB5QLo+RWifHe7Vcdi8\nOkhXHeQ9VYfBijNgHgvvxbN0dqoODV+fm92hPI772Oiurje5NZ0pfi3enPlt/tgVW1D1cJ37\nD4SFtqznY7SbdCp/te5UHhSpc8/OwJT3aeXXPMbwtxibU/Yq+XnndkdvvVKrw9+/zR7rzrFn\np01qkfJbc/SoOmn18nxnsDys9Hxb05VvpVRHd8sdmLc3K+/lvkr979aTfV+kx2yTNe8XFc/B\nFZfu/d/Cdv2XRR1ey1pNWpV3WrcrD4rUuWdrYOq7tfKbsdw33fl5lvx6jfTsaF1Nq9T6Ddmm\nyr+MPTttui+ey5NNTo9J5Oq7v4Duxyguu8z9lKv/uit3/y/liTD1k+tjQzrWj/12+sy5fG6+\nFacFnV//fROpfre1aVSEXP5a7/sMh9XFeGg9xqtJq/Ju61blYZE693wNTHO3V/6Tv0P5MYrr\nq+Tmzq2ONtW0Si1OEcoOl/rO9/D8CwLa67l8CjxVs4KmSaNrST49bpx7vZt4Zs9Onfa2uy/f\ngil2ts+tHfMZa0GkRFSvGh+vU6vZ12WXDw0glrc9j/c3IearBZES0bxEqo5mZu1zX0EHRNoE\nf+UndesTo4ZOloCJDO/a/S6yawfwtVg62ADwtQwd/s6yAx4BxMDLEgAFEAlAAUQCUACRABTo\nvo/UYrGKAL6QtjAnRAKQ0RHmFDoHq7lgXHl1kY+3Ff9FEXn3zaSYKoaUTtthkfKj/6MEtSf1\nj0+3iKSYYqoYUjptPSKVl5TzzEeItFSKqWJI6bT1iRQAkZZKMVWMUso/L/PXMqVtepH+VzA6\nHDaGX6SlKxPCjGQ/xVQxzEidtsMiXX/KU7/d4XzP30CkpVJMFYNInbaDIl1abyO9HwdHpKVS\nTBWDSJ22gyIdmiv4XI+tCyAi0tIppopBpE7bQZHeLmy1QpHGrr/l15F6jKmUrYv09Wc2IJKN\nlFWLtM9OgV27deBdf0sXtjH8Ii1dmZDxBxskzPfUMDaFGclGyqpnpPx+PlRfbnVSumbDfD0a\nm4JINlLWLdIIXP0iiNdI02uZOcZUCiK1bjhqN62WmWNMpaxbpMvzKpzeD/Yhkl4tM8eIUzS2\n+X4tSUSSZaY6s6H1nShejxBpXCYi+WpZtUj74uLqf+711fMDIjUvkT6KZPTsb+9YG8u0xKxj\n9q0r4v0N2ZsLfKUqZzZEZW57RvLLsvIZqbbn5g7hL4ZApLGZiOQbmMAyaaYdkY719+Zcs/1X\ni6Qx1oj0QrZ9blikW3MVrl/v5bi+YtdOOtbCdYtIse3WLlJ+a64idNkHRBp3sAGRECkwMIFl\n0kxDIo0g7uzvZfCO54Rl0sdbA+rj8i/NMjNH7fSJ1HvCU0M7xTue/zEjSVAflw8zknTZV81I\niPSOvx0i+QYmsAyRCiyctCoda9l6QKTodoj02aPnj5Eiyfoe3nilY52iFhUQadQyRIruOyLN\nmaI+LoiESLG1qIBIo5aZEul+2hWfkB24QGSkSAonrXrHZVrsrLWE2n3LMlH/rB37T9H5Nj2R\nbq66ZIO7ycpVfUPW27+oFBlatYTazbzMv73E9K83MN52S6ykEP46wyvpQwU+kY7Z/qHQbZ8d\nEUmlllC7mZch0nCdSURqzrGTfvUlIvVSQu1mXoZIw3Ui0rgUGVsTSTow3syNi8SunXItoXYz\nL0Ok4TqTiDT1YIPqmQ2W1pG0llC7mZch0nCdSUSaevh7tXjHekI7S8vUx2Xjh7+VSfcEM3eK\nd6w/pITajc4cOwuElzEjDdeZZkZCJN2UWTfe8DJEGq4z6VE776fzvv2SxXOnzLrxhpch0nCd\n+iK51rdRrPVKq9+YgkgKKf469UU6tzw6I5KZFERSSPHXmXTXzsfXX7L4G1MQSSHFX+ciH6P4\n+ksWrwHvNjFhmXot1g5/pyZWpPoHM9KMKZZnJJ0efW2KWKTGJkSaMQWRzKYIRGod10akeVMQ\nyWyKQKSnQ4g0dwoimU2ZJJL5SxavLQWRzKYERLods+b7LwdNirpk8Xw9WnOKVjGIpJ4yLFLx\nJtK1ej92x+nf68Mr0tKFrYG+SLvynIZz/U1JU5nvqWHNKcxIZlP8ItWnNkg/ao5ICVIQyWyK\nX6SDV6TqpQ+vkeZPQSSzKT6RTr9/2V9e7Nod3jx6HZDj8Pe8KYhkNsUnUv0BioFrNrgckZZK\nQSSzKcMi5de/87HYt3PHgWufINJSKYhkNsUjUpBIkTj72xxekZYubA0kE6lkvqeGNacwI5lN\nQaRvSkEksykRIj2PZyPSUimIZDZlWKQsePETRFoqBZHMpgyLdEIkkymIZDZlWKSHSZc3f7oi\ncWbDAimIZDbFI1J+dDmsFq9ISxe2Bnq7cE7nrO+G+Z4a1pzCjGQ2xSuSMvP1aM0piGQ2RSLS\n6zWSy3mNNGcKIplNEYjUfjeJo3azpiCS2RSPSNefQ/l1fYfz2yfNXY5IS6UgktmUYZEurbeR\n3o+DdxxBpBlTTBVDSqftoEiH7HitZqZjtveIxLW/AQbof9T8/dcGzmxYKsVUMaR02kpFan4b\nKVIcliYwS7WYKoZahmkLs89O77t23bO/m98QaU4sFUMtw0gONiDSzFgqhlqG6ezC3c+H8ntk\nd/XM1OHpyLiDDQIsjYulWkwVQy3DSM5sGHMrwdK4WKrFVDHUMkzac+0ANkJHpMuu+SIKpUsW\nA2yE94MN5fE6RAKIoXf4O8//XGESIgHE8P6G7K0wCZEAYhg4s+HmDkuINOV4nzbOTjHdg6XL\n0v1I2qKVKBwk1qUtzLH+erFrtp9fpEnvQGljpY689yUgy/J2istiqLxtqUtbmFtzFa7foctx\nJcbQmNipI+99Ccii9D6StiTGRcpvzVWELvtNi2SkjBI7Ipkpo8awSEtiaExMvAposCeSlcFB\npEEMjYnRWpYvyFItnVM+DYBIPozUYmnjdQO/LQYiDWNoTCqM1IJIw1galwJEGsBmLcsXZKiW\n1gHExWspQaQBnnsNBjC08XY/krYornWzeDElZkQy9Ca1qVpsntmwdCH9C/4ujx2RAL4YRAJQ\nAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQ\nCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEA\nFEAkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQCUCBNCL9F0fs/ZPGmCqGGNsx\niJQ6hZhNxCBS6hRiNhGDSKlTiNlEDCKlTllNzD8vS1RjLQaRUqesJgaRgm0RKXHKamIQKdgW\nkRKnrCYGkYJtESlxympiECnYFpESp6wmBpGCbREpccpqYhAp2BaREqesJgaRgm0TiwSrwS/S\n0pXZghkpTcpqYpiRgm0RKXHKamIQKdgWkRKnrCYGkYJtESlxympiECnYFpESp6wmBpGCbREp\nccpqYhAp2BaREqesJgaRgm0RKXHKamIQKdgWkRKnrCYGkYJtESlxympiECnYNlokV1Df5oFb\nRFpZDCIF28aL1Lpx/ltEWlsMIgXbIlLilNXEIFKwbaxIrn2LSBuKQaRg22iRmpdIH0X6X8G4\nUPgC/CItXZktYmakgEDMSGuNYUYKto0VqbEJkbYWg0jBtoiUOGU1MYgUbBsrErt2W41BpGBb\niUjjDjYg0rpivkckaaXzn9kw5haRVhaDSMG2fpFuxyzbnUfq5SO2nAldUY8xVczyMYgUbDso\nUvb445qV7O6IREwBIgXbekXaZcVsdM5OiERMASIF23pFyrLnr4hEDCJ9aOsV6YBIKimriUGk\nYFuPSKffv+wvL3btDohETAEiBdt6RCopfnE3RCKmAJGCbQdFyq9/52Oxb+eO0zyyKNLoYV58\n07UVg0jBtsMiqRFbzoSujI1BJBmIFGybWCSD+Id56cps8z3jtmylzEjMSEGkz/PBanRCNzAj\nxZYzoStjYxBJBiIF2w6KlLVBpBEEQhc3QCkGkYJtB0U6IVJkMYgkq2blIj1MukzyB5EQaVQ1\naxcpP7pchdhyJnRlbAwiyUCkYFuPSLmbdtb3DCIFRguREsTobPO9anRCLYukRGw5EfcNjBYi\nJYjR2eZ71eiEItKUrgRGC5ESxIi3+dCKEoeGOiUNRaS39SNqt4hISaoJgEijY6LwiHT9ORRH\nvt3hHP1J89kufhJaP6J2/8KhsmIQacsiXVpvI0UeB5/vclyh9SNqh0hBRlc6uuH6RTpkx2v5\ny/WY7RFpxHoNhCKSv51cpFA7aWiKU4SGfv0ikcTDLFwFYZHE1UiHJgAi+TEqksLXuvhHZFqu\ncjWzP+C/D9WEGopD5x+b2UNVHrAtzD47mdi183Ys4VOLP2X2YoLdFy3792EOGN3FWcZGXI0w\nNLgj84FhkawcbPB2DJG2INJozIqU388HV15ntZ6ZEClUTapigt0XLUOkmUWSs2KRZo8Jdl+0\nDJEQaf71g0j+8UakfgnDIl12zRdRRH+wT/PMhuBKHx8jBJH8441I/RIGRaoONuxFInWZNiLB\nlT4+Rggi+ccbkfolDIq0L76D4s/tEWnRmGD3RcsQaV6RKntuhUmItFxMsPuiZYi0hEgPkw6I\ntGBMsPuiZYgUjBH2omw7KNKx/nqxa7ZHpOVixNt8oGGa860RaVikW3MVrt9lL8clXemI5F2I\nSIGYCUMzLFJ+a64idNkj0mIxwe6LliFSMGbC0HhEUiO2K90/pSsdkbwLESkQM2FoECl1iqlP\nACFSMGbC0KQWaRr+lb50ZbMg7n6oYZoxXceKUukFM1KaFGakiBghG5iRYrvS/VO60hHJ2xCR\nAjEThsa2SFIQCZEkMYiUJGbxYhBJWI00BpGSxCxeDCIJq5HGIFKSmMWLQSRhNdIYREoSs3gx\niCSsRhqDSEliFi8GkYTVSGMQKUnM4sUgkrAaaQwiJYlZvJgkIomr6YBI/bbRIrn66ibNRU58\nt4g0OQaRhNVIY+YVqXXj/LeIND0GkYTVSGMQKUnM4sUgkrAaacycIrn2LSIljRGLlKSaYAwi\nRYvUvET6KJLC17psHL9IS1f2xvdUGkKlFzEzUkAgZiS9GL9IS1SzgZg5Z6TGJkRKH4NIM8fM\nI1LruDYizRKDSDPHzDkjsWs3XwwizRwzt0jjDjYg0tQYRJo5Zk6RPp7RwJkNxHxrzKwixRHb\nFdEAJIoxVQwxM8QgUpIYU8UQM0MMIiWJMVUMMTPEIFKSGFPFEDNDDCIliTFVDDEzxCBSkhhT\nxRBjOwaRUqcQs4kYREqdQswmYhApdQoxm4hJLRLAxjAhkqkPApoqhmoCmKoGkfqYKoZqApiq\nBpH6mCqGagKYqgaR+pgqhmoCmKoGkfqYKoZqApiqxoRIAN8OIgEogEgACiASgAKIBKCAAZG6\n101ZGGeomqoOKwW9qlm+nOFL7izK8iL1ruS1MGYKKbaS8ufzx7LUW6yBSrwXgVsUROpippBH\nJZZEcjkiBUGkDlbqKLEkkqFCahCph6XRMPISoMaiSHbGB5F6WBoNq8VYqMhWNZ0LaFsAkd6x\nUoytTdcN/LYgiNTH0mhUWCkGkfzYGpsckXoYLcZCRaaqaR1CNFBNASJ1eO4wWMDUpvsqxEAx\nrnVjoJyC5UWy9Pa0rWKsntmwcCH1sUNnpZoKAyIBfD+IBKAAIgEogEgACiASgAKIBKAAIgEo\ngEgACiASgAKIBKAAIgEogEgACiASgAKIBKAAIgEogEgACiASgAKIBKAAIgEogEgACiASgAKI\nBKAAIgEogEgACiASgAKIBKAAIgEogEgACiASgAKIBKAAIgEogEgACiASgAKIBKAAIgEogEgA\nCiASgAKIBKDAWJGaL2L/dAuwSUaK5Oofn24BtgkiASgQI1I+WqT/4oi9f9IYU8UQYztGIFL1\nGuizSP8rGBcKsBrGilRbxIxEDDGtttEifRAIkYjZYgwipU4hJhTzz8sS1Uxpi0iJU4gJxSAS\nIhGjELNdkSLPbJixK+oxpopZacyGRYpjxq6ox5gqZqUxiIRIxCjEIBIiEaMQg0iIRIxCDCIB\nKOAXaenKxDAjpUkhJhTDjIRIxCjEIBIiEaMQg0iIRIxCDCIhEjEKMdsWiVOEiFGK2bRIIz8h\ni0jEfIzZskguRyRilGI2LFItCyIRoxCDSFz8BBTwi7R0ZWIiPtjHjESMUsxmZ6SnJ4hEjELM\ndkWqQCRiVGI2K9JzWkIkYhRiEAmRiFGIQSTObCBGIWbbIkUwY1fUY0wVs9IYREIkYhRiEAmR\niFGIQSQABfwiLV2ZGGakNCnEhGLWPiOdd48fl32WHW+IREy6mJWLdM4ef/1lJVdEIiZZzMpF\n2mW/xY9zodQekYhJFrNykYoJqfpR/0QkYpLErFykXXbP80Mlkuupwde6EINI720HRXrs0P3e\n8v0pz0/ZqedR/YNz7YhRiFm5SPkxa+i/REIkYhRj1i5Sfj3tHxa5w28+BCIRoxMTFGm0ZAY6\n5RMpzCiRuGYDfMQvUmjh0lUH4fNIaVKICcVse0ZCJGKUYjYtkmv/QCRiJsSIRRot2UydGhYp\nazPo0ReLFFx3cxez9ZiVi3QKiOS605JNkUSrAJHmj1m5SA+TLv2JqPGovhyX7TMbEOlLYtYu\nUn7snxkkZMautGMQ6UtiVi9S7nqnBm1EpATrx9imaytGvDISrKgF3pBFpAX6tMoY8cpIsKJM\ni7QQ3mEOLTP3Znqw0nUgXhl2h4YZydyMFKx09mqSxIhXRoKhSTEjXX8OWXnS6vmOSBPXDyIF\nYsQrI8HQJBDp0nobyXccHJGS9ylY6ezVJIkRr4wEQ5NApEN2rK55cj1+5zUbRKsAkdLEBHqx\ndpFapzN85zUbRKsAkdLEBHqBSIjUJRCKSP5erF2kfXYS79p99ylC0vUTCEUkfy/WLtKEgw1f\nftKqdP0EQhHJ34u1i5TfzwdXWLQ7xV5oFZH6DRHJ34vViyQHkfoNEcnfC2MiTQhNKNLIi594\ni0/WUEqSSr3LPqVKQ4MPKK40tGx2gpUmpyPSZZftztW/IwWLnpG8nZ7Q8Is+au5f6R9iQu0C\noQnmgAkTRJohDlaaqJphkS6va0MiUtqY0SsdkUbHBCtNVM2wSPviQsV/bo9IyWNGr3REGh0T\nrDRRNcMiVfbcCpMQKW3M6JWu8vIekVJVExLpYdIBkRLHjF7piGQ6ZlikY/0dFNdsH32KUOyZ\nDcJVgEiyUERKEzMs0q25CtfvwHXtovhcgXAVIJIsFJHSxAyLlN+aqwhd9oiUNCa4eUqrCYQi\nUpoYj0hqfK5AuAoQSViN2Adxw1A1Sp1aPia1SJ/xroJkDU3h3zyXeEDRMnNnNizL1138xLvu\nmJFC1QQfULSMGek/C7t24q4E1h0i+asR+yBuGKpGqVPLxyCSTjHimODmmaIasQ/ihqFqlDq1\nfAwi6RQjjglunimqEfsgbhiqRqlTy8cgkk4x4pjg5pmiGrEP4oahapQ6tXxMvEifvs5ltms2\nBNYdIvmrEfsgbhiqRqlTy8dEi/TpC8bm+4RsYN0hkr8asQ/ihqFqlDq1fAwi6RQjjglunimq\nEfsgbhiqRqlTy8dEi9TYhEg6McHNM0U1Oj70q0GkdCKNvGbDxvFv10s8oLiYuXthmAiRXG5h\nRkoeY6oYZiTbMYiUOsVaDCIliYkQ6Xlc27V/INKXxSBSkhjBjNS1CZG+LAaRksTEi+RaN4j0\nfTGIlCQmWiTn6l28xc9sSB5jqhhEsh0TPyPFMWNX1GNMFYNItmMQKXWKtRhEShKDSKlTrMUE\nRRJXg0iJRQJr+EVKkqpV9vfAjJQmxVoMM1KSGERKnWItBpGSxCBS6hRrMYiUJAaRUqdYi0Gk\nJDGIlDrFWgwiJYkRiWTjmg3JY0wVg0i2YyQiOT5GQUzvb0SKF8nxeSRiiOm3jRbJ8cE+Yoh5\na5tOJK7ZAFsk4nJczEjEENNrGynS0xNEIoaYVtvxIpXHtV3zwb6RIkVialfQVDFUE8BUNWmu\nIhSJqRExVQzVBDBVDSL1MVUM1QQwVU2aMxsiMTUipoqhmgCmqjHxwT5TI2KqGKoJYKoaEyIB\nfDuIBKAAIgEogEgACiASgAIGRJp05FwbZ6ia+nsLjBT0qmb5clTedNFleZGmvZerjZlC6k9S\nmhme9pf7LI3OaQC6IFIXM4XUn6S0MjwuR6QgiNTBSh0llkQyVEgNIvWwNBpGXgLUWBTJzvgg\nUg9Lo2G1GAsV2aqmcwq1BRDpHSvF2Np03cBvC4JIfSyNRoWVYhDJj62xyRGph9FiLFRkqprW\nIUQD1RQgUofnDoMFTG26r0IMFONaNwbKKVheJEtvT9sqxuqZDQsXkr9/NbgBDIgE8P0gEoAC\niASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBI\nAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASg\nACIBKIBIAAogEoACiASgACIBKIBIAAqMFan5/uhPtwCbZKRIrv7x6RZgmyASgAIxIuWIBDDM\naJGq10CfRfpfQYJCASwzVqTaopEz0n9xxN4/aYypYoixHRMv0geBEImYLcYgUuoUYjYRg0ip\nU7YR88/HItUsEINIqVO2EYNIsSJFntkwY1fUY0wVYzwGkaJFimPGrqjHmCrGeAwiIVLilG3E\nIBIiJU7ZRgwiJRYJtoFXpKULmx9mpDQp24hhRkKkxCnbiEEkREqcso0YREKkxCnbiEEkREqc\nso0YRJKIxJkNxPT+RiSBSCM/2IdIG4pBpHiRXI5IxPT+RqRokWpZEImYFoiUTiSu2bAhvCIt\nXdj8RHweiRmJmN7fzEiRIj09QSRiWiBSrEgViERMB0SKFOk5LSESMS0QCZESp2wjBpGkInFm\nAzEtTInkLSZhNSKRIogtZ0JX1GMWL0a6QaSpJhiDSIiUOAWRZq8GkZbfdvVTEGn2ahBp+W1X\nPwWRZq9mjSLBBPwbxNKVvWGq0mXHjRkpTcpXzUijH5AZqd8WkRKnIJK4mtGYFSlzv4i0fDGI\nNBK7ImXZ7g+RVFIQSVzNaAyL9OeyncasFFvOhK60Y1S2QERCpPEleETK89NjWtqfr/e+Gl/x\ntS6hkRw9zIjkf0BE6rf1ipTff1xW0POo/mH7pNXQSI4eZkTyPyAi9dv6RXpwPR92iDS1GHFL\n6QYhr2b0AyJSv21QJB+IFFOMuKV0g5BXM/oBEanfNp1IS178xDuSoWXmzheYv1LxA5oa02XX\n8Ko+2OcdyfcLqh8AAA7nSURBVP+YkUSP+ClGWOnaZyRE0ixG3FK6QcirGf2AMSIFlhkTacJ4\nS0Ry7R+I9LEYcUvpBiGvZvQDIlK/bbxIrmMTIn0sRtxSukHIqxn9gIuLJHrA2UXK2gx6hEjj\nixG3lG4Q8mpGPyAi9dsOinTyi9Rc144zG0YXI24p3SDk1Yx+QETqtx0U6WHSJVchcngQqY10\ng5BXM/oBEanfdlik/OhyFSKHB5HaSDcIeTXicRMuW79IuTshklIx4pbSDUJejXjchMs2INJ3\n4x2R0DLObJCPm3TZ/JVKQ0ez1EfNvcWPemISPLX4h7mfEvGIgVBmJP8yZiREGtkLRNq0SNef\nQ3Hk2x3Obx/sQ6SoXiDSlkW6tN5GmnYcfNqISEEkL98kkvoDzi7SITtey1+ux2yPSCMIhCKS\nf9naRWqdzvDpo0krE0laTSAUkfzLEMlP7ClCE4qXjUhwmKXVBEIRyb9s7SLts5N01y76pNUJ\nxctGJDjM0moCoYjkX7Z2kSYcbECkfkNE8i9bu0j5/Xwor8W1q2cmRJL2ApE2LZIc1Yuf+Eck\ntHByH2KrSRI65XSWUKj4AVdC8u6ri1TyWeWu1xH39Y6I1umms1zgw79dJ6pm9ANO6JTlmESb\njUekyy7bnat/RwqGSJ9iRoYiUpqYRJvNsEjVwYY9Io19wJiYkaGIlCYm0WYzLNI+O+X5n9sj\n0sgHjIkZGYpIaWISbTbDIlX23AqTEGnMA8bEjAxFpDQxiTabkEgPkw7pz2zolhNx30Qj4i9G\nuukGl47erhFJJybRZjMs0jGrPmh+zfbJz7XrlhNx30QjIitGHINIM8fMKtKtuQrX7/t17RBJ\nNQaRZo6ZVaT81lxF6LJHpKQxiDRzzLwifQPeEVm6sCj827W0YaoHXAnJu7/UNRu6Xk94TlCP\nYUaSdspyTKD7lmek2HImdEU9BpGknbIcg0izxyCStFOWYxBp9hhEknbKcgwizR6DSNJOWY4x\nI9Knr3Mx8bUuhlIQyVaMFZE+fcGYjS8aM5SCSLZiEGn2GESSdspyjBWRGpsQSScGkWaO+T6R\nFK7ZsAH827W0YaoHhHFEiORyZiStmNETBDOS6RhESp2CSJuIiRDpeVzbtX8g0rQYRFpHjGBG\n6tqESNNiEGkdMfEiudYNIk2OQaR1xESL5Fy9i8eZDSoxiLSOmPgZKY4Zu6Ieg0jSTm0wBpFS\npyDSJmIQKXUKIm0iJrVI8AH/di1tmOoBYRzMSGlSmJE2EYNIqVMQaRMxiJQ6JVWMVKQ01Ww+\nBpFSpyDSJmIQKXUKIm0iBpFSpyDSJmJEInHxEwMxiGQqRiKS4/NIBmIQyVSMQCTHB/uIIabf\nNlokxydkiSHmrW06kbj4CWyRiOvaMSMRQ0yvbaRIT08QiRhiWm3Hi1Qe13bNJ2RHihSJqV1B\nU8VQTQBT1aS5HFckpkbEVDFUE8BUNYjUx1QxVBPAVDVpzmyIxNSImCqGagKYqsbEJ2RNjYip\nYqgmgKlqTIgE8O0gEoACiASgACIBKIBIAAoYEGnSkXNtnKFq6i8AMVLQq5rly1F500WX5UWa\n9l6uNmYKqT9JaWZ42t+StTQ6pwHogkhdzBRSf5LSyvC4HJGCIFIHK3WUWBLJUCE1iNTD0mgY\neQlQY1EkO+ODSD0sjYbVYixUZKuazinUFkCkd6wUY2vTdQO/LQgi9bE0GhVWikEkP7bGJkek\nHkaLsVCRqWpahxANVFOASB2eOwwWMLXpvgoxUIxr3Rgop2B5kSy9PW2rGKtnNixcSH3s0Fmp\npsKASADfDyIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIB\nKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoAC\niASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoACiASgQBqR/osj\n9v5JY0wVQ4ztGERKnULMJmIQKXUKMZuIQaTUKcRsIuaLRfrnA5GImT0mtUgJ8Yq0dGGwaZiR\nphRDzMZjEEmnGGI2HoNIOsUQs/EYRNIphpiNxyCSTjHEbDwGkXSKIWbjMYikUwwxG49BJJ1i\niNl4DCLpFEPMxmMQSacYYmQx3pX4b4lqprSNFsk9GHOLSMR8jtmuSK7+8ekWkYgZEYNIiESM\nQsx2RWpsQiRiFGIQ6bNI/yuICI3FuwoSPiYo4xdp6crERIjkcmYkYlRitj0jIRIxSjGbFsm1\nfyBSuJh/Ftay3Zgti+Q6NiFSuBhECsZsWCTXukGkj8UgUjBmuyI5V5+6wJkNo4pBpGDMdkWK\nJGFXEGkFMYiESOOK+STS6C3JwMaSIAaRvlekJJsuIsliEElNJPFIBhoikhdjMaO7P0s1U9oi\nksqmGwhFpEDM6O7PUs2UtoiksukGQjcvUmhFje6+WjWJYhCp+4jSagKhiBRYUaO7r1ZNohiP\nSH+77JDnJ5ftr0n8auEdyVQN/esuVWiSht+DaLy/t/ttkS7Zg9Oh+JlNM+mzyt6RDC37MHkw\nI3lhRkoTMyzSPrsUMp3z/FzMTIiESBNiQitqdPfVqkkUMyxSljU/6p+IJO0FIiESIo1fr4FQ\nRAqsqNHdV6smUcywSK9du1927Uat10DoN4k0uvuI1G87KBIHG2LXayAUkfyhaxepOfydZYeJ\nh78/VxAayeAwh9aP6AER6YtEkrYLsd43ZIPDHFo/ogdEJESSt0WksaGyXiDSF4k0IVRfpNhP\nyIaKDw5zYBkieUEkP6ZEir5mQ6j44DAHliGSF0Tyoy9S1gaRRgxlIBSR/KFhkaTLpOiLdEKk\nyKEMhCKSP3TtIj1MusT5MyBS6mt/h/COyCKh0obedp/OUw81DIYmqWZ2lq20O/Mcnedun5jv\nunahGO9oTSlGGJqnmObEM3mCVyUTJog006y00iSHv90JkXp/izcWaTXSDQKRZJWaeh8Jkd5j\npNVINwhEklWKSG8x0o0lWIx4Y5FWE9wghA0Ryb8MkdLEINL4aoShqxfp+lOe+u0O53u0SXNd\n+zt5DCKNr0YYunaRLq23kaTHwRHpGSNsiEhjMSvSITtWH5+4HrM9ItWINxZhQ0Qai1mRWqcz\nJP+oeWhExL1KkiLeWIQNEWksiPRhRMS9SpIi3liEDRFpLGZF2mcndu0QKaIaYejaReJgw1CK\neGMRNkSksZgVKb+fD66waHdKfs2G0IiIe5UkRbyxCBsi0ljsiqTGtBER9ypJinhjETZEpLFs\nQKQ14V0FqRr6N4gJDZOE8jGKFx2RLrtsd67+zVG7Bu8q+BQjbMiMNBazM1J1sGGPSB3EG4uw\nISKNxaxI++yU539uj0htxBuLsGG4GiGI5F+W6g3ZW2ESIj0RbyzChuFqhCCSf1myMxtu7oBI\nL8Qbi7BhuBohiORfpi/SMas+aH7N9oj0RLyxCBuGqxGCSP5l+iLdmqtw/UZfjguR3mOEDcPV\nCNmCSEvEDIuU35qrCF32iNSASIjkbzsskhozdkU9BpE6IFKwbbRIzUfJP90i0jMGkVJ3avmY\naJGai5t8ukWkVwwipe7U8jGIlDoFkWbo1PIx0SI1NiHS+BhESt2p5WMSirTkRfRt4d3KTBWz\nnrO/lyVCJJczI8XECJ+u01Tj9+FDS3HDUDXypsZiECl1CiKFqpE3NRYTIdLzuLZr/0CkzzGI\n5K1G3tRYjGBG6tqESJ9jEMlbjbypsZh4kVzrBpFGxSCStxp5U2Mx0SI5V+/ibe/MBnEMInmr\nkTc1FhM/I8UxY1fUYxCpAyIF2yJS4pTViJSkmtXEIFLqFETaRAwipU5BpE3EIFLqFETaRAwi\npU5BpE3EIFLqFETaRAwipU5BpE3EpBYJcmOfMfCLtEQ1K4QZKU0KM9ImYhApdQoibSIGkVKn\nINImYhApdQoibSIGkVKnINImYhApdQoibSIGkVKnWBOJmCQxiJQ6BZE2EYNIqVOI2USMSKSN\nXkSfGGL8bQUiOa5rRwwxvbbxIjkuEEkMMf220SI5rrRKDDFvbdOJJLmIvqmL7psqhmoCmKom\n4vuRImakSEyNiKliqCaAqWrGifT0BJFmhmr8mKpm3EX0XXOlVUSaGarxY6qaNF/rEompETFV\nDNUEMFWNCZEAvp00ZzYAbAwufgKgACIBKIBIAAoYEMnUyytnqJr620aNFPSqZvlyDL4yX14k\nWwf8zBRSn25vZnjaX8m9NBaPFSNSFzOF1KfbWxkelyNSEETqYKWOEksiGSqkBpF6WBoNIy8B\naiyKZGd8EKmHpdGwWoyFimxV0znPxgKI9I6VYmxtum7gtwVBpD6WRqPCSjGI5MfW2OSI1MNo\nMRYqMlVN6xCigWoKEKnDc4fBAqY23VchBopxrRsD5RQsL5Klt6dtFWP1zIaFC6mPHTor1VQY\nEAng+0EkAAUQCUABRAJQAJEAFEAkAAUQCUABRAJQAJEAFEAkAAUQyR5Z1v8lyO8hy9zxUvzq\nDudb+b/b+eCK9g3DLU+sfTUYSnvEibSvXTmVDbJj+c9jKc8HkU7jRIUxMJT2iBJpn+0fk9H9\n12XXosGuPrd017R9y3j+4+idqSAehtIeXZFujw3+eHv+u5pprm5f3eUv2zW/HIsFP1mxj3d5\n3H4SybkLIunBUNqjI9LdFbtm7t4VaV/vwj2mlb/6zvdy4UOhx+1Dp48inca+BoMxMJT2yNqv\nbU7Zvth/O3VFOjX3dVm35WOn7nG7y/LPu3aIpAlDaY+OSLvssVt3K3bg2iLdXvd9tSj/Oj6W\n3R7z1aBIvaMPiKQHQ2mPzq5dW5/ub637tkT6y875OftFpJlhKO0RI9Lh+RqpXnB/7Aruszu7\ndjPDUNqjI1Jv1+7WE+l51O5p2MOi4mUVIs0LQ2mPjkivgw3uscN23/dEeizaFXPS36FZcM4O\nxZE7RJoXhtIensPfp+KXn75IzzMb3KVa8Jizqvdme2Fv6YikCUNpD88bsvnJPaaaN5Hyv+PD\ntcPvs4HLXB4QaeiBYDIMJYACiASgACIBKIBIAAogEoACiASgACIBKIBIAAogEoAC/wcPkVoR\n8rS3hwAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Ploting the results\n", "grid.arrange(hist,hist2015, hist2016, hist2017, hist2018, nrow = 5, ncol=1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "#There is a relevant negative accumulation of pips in the hours 8 and 13 and a positive one in the hours 18 and 19\n", "#Lets create a simple and ilustrative strategy on it where:\n", " # Go short at 8am and 13 (1pm) GMT + 1\n", " # Go long at 18 (6pm) and 19 (7pm) GMT + 1\n", "\n", "#Creating the Hours Strategy\n", "pips_hours <- subset(EURUSD,\n", " (EURUSD$Hours == 23) | #sell\n", " (EURUSD$Hours == 13)| #sell\n", " (EURUSD$Hours == 18) | #buy\n", " (EURUSD$Hours == 19) #buy\n", " )\n", "\n", "#Adjusting the pips signal when the hours are to selling\n", "pips_hours$Pips <- ifelse(pips_hours$Hours == \"23\",-1*pips_hours$Pips ,pips_hours$Pips )\n", "pips_hours$Pips <- ifelse(pips_hours$Hours == \"13\",-1*pips_hours$Pips ,pips_hours$Pips )\n", "cumulative_buy_pips <- cumsum(pips_hours$Pips)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Sharpe Ratio\"\n" ] }, { "data": { "text/html": [ "0.0686282294809926" ], "text/latex": [ "0.0686282294809926" ], "text/markdown": [ "0.0686282294809926" ], "text/plain": [ "[1] 0.06862823" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"W/L Ration\"\n" ] }, { "data": { "text/html": [ "0.516346933261281" ], "text/latex": [ "0.516346933261281" ], "text/markdown": [ "0.516346933261281" ], "text/plain": [ "[1] 0.5163469" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Profit Factor\"\n" ] }, { "data": { "text/html": [ "-1.10352973939365" ], "text/latex": [ "-1.10352973939365" ], "text/markdown": [ "-1.10352973939365" ], "text/plain": [ "[1] -1.10353" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Max DD in Pips\"\n" ] }, { "data": { "text/html": [ "688.9" ], "text/latex": [ "688.9" ], "text/markdown": [ "688.9" ], "text/plain": [ "[1] 688.9" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Max DD Duration\"\n" ] }, { "data": { "text/html": [ "290" ], "text/latex": [ "290" ], "text/markdown": [ "290" ], "text/plain": [ "[1] 290" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Evaluating strategy KPIs\n", "\n", "#KPIs\n", "Bull_wins_PIPS <- sum(pips_hours$Pips > 0)\n", "Bull_losses_PIPS <- sum(pips_hours$Pips <= 0)\n", "Bull_totalTrades_PIPS <- Bull_wins_PIPS + Bull_losses_PIPS\n", "Bull_AVG_Win_PIPS <- mean(pips_hours[10][which(pips_hours$Pips > 0),])\n", "Bull_AVG_Loss_PIPS <- -mean(pips_hours[10][which(pips_hours$Pips < 0),])\n", "Bull_WL_Ratio_PIPS <- Bull_wins_PIPS/Bull_totalTrades_PIPS\n", "Bull_EV_PIPS <- Bull_AVG_Win_PIPS*Bull_WL_Ratio_PIPS - Bull_AVG_Loss_PIPS*(1-Bull_WL_Ratio_PIPS)\n", "Bull_PF_PIPS <- -sum(pips_hours[10][which(pips_hours$Pips > 0),])/sum(pips_hours[10][which(pips_hours$Pips < 0),])\n", "\n", "SHARPE <- mean(pips_hours$Pips, na.rm = T)/sd(pips_hours$Pips, na.rm = T)\n", "print (\"Sharpe Ratio\")\n", "SHARPE\n", "print (\"W/L Ration\")\n", "Bull_WL_Ratio_PIPS\n", "print (\"Profit Factor\")\n", "Bull_PF_PIPS\n", "\n", "#DrawDown PIPS\n", "Bull_maxDD_PIPS <- maxDrawDown(cumulative_buy_pips)$maxdrawdown[1]\n", "Bull_maxDD_duration_PIPS <-maxDrawDown(cumulative_buy_pips)$to - maxDrawDown(cumulative_buy_pips)$from[1]\n", "print (\"Max DD in Pips\")\n", "Bull_maxDD_PIPS\n", "print (\"Max DD Duration\")\n", "Bull_maxDD_duration_PIPS" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAjVBMVEUAAAAAAP8zMzNFRUVH\nR0dNTU1dXV1gYGBoaGhvb29ycnJ8fHx+fn6BgYGLi4uMjIyOjo6WlpaampqgoKCkpKSnp6eq\nqqqurq6ysrK3t7e7u7u9vb3AwMDCwsLHx8fIyMjKysrPz8/Q0NDR0dHW1tbY2NjZ2dnd3d3h\n4eHl5eXp6enr6+vw8PDy8vL///88nhl7AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4\nnO2dC2OjRrptqemo4x7Piaed4xxPPPFk3NMet+Wr///zLu+XAFFQhWpTaydtywiWPgFLBcVD\nyYkQsjrJtQsgZA9BJEIcBJEIcRBEIsRBEIkQB0EkQhwEkQhxEEQixEEQiRAHQSRCHMS5SM93\nSZLcPZ8N/7ifS0hm1nS4e3ovH74/3R1sYKPFJK2MvvD4W/m4T5Kb85ee+476ebk/pLyHj8kX\nnT9jicc4Fun9UK6FN++9Z+avTHPHTF/loXz4MLreDw8ffYlZIo0/lX2I3J6PtlCku6qSlynG\nUkuJ07hdCqlHt9lSf7lNDj2TfIh0UzVDhxtHIs0qYPz5JHkbGm3Zuv6UHLJ5+f6UUxEp7Lhd\nCjetNuKm+5QPkR6T1/zRa/ooEJEG/1i2rh+S8rPoKblHpNDjdCm8JHf145tsg6RcyOmvamPp\nLd2LONy/FgOfygYsH35Ih7+VY2dt281j+uv1NilHSYc+HJKbl1bpyXvp7UPyVr7SQ9o03b4W\nz37cpOUMwqa33NqrZvP6TeW9qZvKe1uEZyL132Pxqyy0NWeGpi/R1cjNG61fs1VqvkXwlI1c\nfZx99D/XiOM4Fek+adbzl9bHaLMivDZb/VmDklT7OS/9vYFDvq/xnNSjpGtJPcapopbbdodD\n+UqHNuUum3AQNluk1us3lXenblV+QaSz91iJlBfamjNlbuvm/XRqRMpHbr3R6jVbpZ7KGZt9\n9pS85+Rx/P0SB3Eq0k3yUT/OPwM760sxRtaf91w8d0gfvxyyHYC0QXn8OH2ki/69GPM2X/Xf\n8g/dt9tihTm8nj7umn35vI3Kt+1eK2Ee89XlMR8nFe/jNA6bnCfVs+1JOpU343Yqn9y0O3uP\n9YzJC23xy7xn7dfzW4dWjtx9o/1S01cq5mxyei95t0m/84e4jVORztajM5E6H9jFsj08ZNtm\n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\nRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Ploting Strategy Results - Only to illustrate the results. The strategy lacks of consistency verifications\n", "df <- data.frame(seq.int(dim(pips_hours)[1]),cumulative_buy_pips)\n", "g <- ggplot(df, aes(seq.int(dim(pips_hours)[1])))\n", "g <- g + geom_line(aes(y=cumulative_buy_pips,linetype=\"Pips\"), colour=\"blue\")\n", "g <- g + ggtitle(\"Outspoken Market - Test of Hours Strategy\")+labs(x=\"Test timeframe: 2015 - 2018\",\n", " y=\"Total Pips\") \n", "g <- g + annotate(\"text\", x = dim(pips_hours)[1]-500, y = tail(cumulative_buy_pips,1)-45, label = paste(round(tail(cumulative_buy_pips,1),2)))\n", "g <- g + theme(legend.position=c(.24, .95), legend.justification = c(1, 1),\n", " legend.background = element_rect(color = \"black\",fill = \"grey90\", size = 1, linetype = \"solid\")) + scale_shape_discrete(name=\"\")\n", "g <- g + labs(linetype=\"Hours Strategy\")\n", "g\n", "\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "#Don't forget: Strategies may look good until you add operational costs\n", "\n", "#Simulating 0.5 and 1 pips of operational costs\n", "\n", "costs1 <- 0.5\n", "costs2 <- 1\n", "pips_hours$Pips2 <- pips_hours$Pips-costs2\n", "pips_hours$Pips <- pips_hours$Pips-costs1\n", "cumulative_buy_pips <- cumsum(pips_hours$Pips)\n", "cumulative_buy_pips2 <- cumsum(pips_hours$Pips2)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nCYIS6P8D4eV1eX1MvcIAAAAASUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Ploting Strategy Results not with operational costs - All is different now\n", "df <- data.frame(seq.int(dim(pips_hours)[1]),cumulative_buy_pips)\n", "g <- ggplot(df, aes(seq.int(dim(pips_hours)[1])))\n", "g <- g + geom_line(aes(y=cumulative_buy_pips,linetype=\"0.5 Pips\"), colour=\"blue\")\n", "g <- g + geom_line(aes(y=cumulative_buy_pips2,linetype=\"1.0 Pips\"), colour=\"red\")\n", "g <- g + ggtitle(\"Outspoken Market - Test of Hours Strategy\")+labs(x=\"Test timeframe: 2015 - 2018\",\n", " y=\"Total Pips\") \n", "g <- g + annotate(\"text\", x = dim(pips_hours)[1]-500, y = tail(cumulative_buy_pips,1)-45, label = paste(round(tail(cumulative_buy_pips,1),2)))\n", "g <- g + annotate(\"text\", x = dim(pips_hours)[1]-500, y = tail(cumulative_buy_pips2,1)-45, label = paste(round(tail(cumulative_buy_pips2,1),2)))\n", "g <- g + theme(legend.position=c(.30, .95), legend.justification = c(1, 1),\n", " legend.background = element_rect(color = \"black\",fill = \"grey90\", size = 1, linetype = \"solid\")) + scale_shape_discrete(name=\"\")\n", "g <- g + labs(linetype=\"With operational Costs\")\n", "g\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", "Call:\n", "lm(formula = Pips_Shift ~ STD + VHF + CCI + VHF * Hours + STD * \n", " RSI + Hours * STD + RSI * CCI * Hours, data = pips_hours_traning)\n", "\n", "Residuals:\n", " Min 1Q Median 3Q Max \n", "-317.75 -9.70 -0.03 9.80 296.28 \n", "\n", "Coefficients:\n", " Estimate Std. Error t value Pr(>|t|) \n", "(Intercept) -2.261e+00 2.847e+00 -0.794 0.4272 \n", "STD 1.949e+03 4.555e+02 4.279 1.89e-05 ***\n", "VHF -7.776e-01 3.488e+00 -0.223 0.8236 \n", "CCI 5.121e-03 1.666e-02 0.307 0.7585 \n", "Hours -1.847e-02 2.043e-01 -0.090 0.9280 \n", "RSI 4.944e-02 5.316e-02 0.930 0.3524 \n", "VHF:Hours -1.567e-01 2.761e-01 -0.568 0.5702 \n", "STD:RSI -3.565e+01 7.260e+00 -4.910 9.20e-07 ***\n", "STD:Hours -2.109e+01 2.025e+01 -1.042 0.2975 \n", "CCI:RSI -1.388e-04 3.049e-04 -0.455 0.6490 \n", "Hours:RSI 9.975e-04 3.790e-03 0.263 0.7924 \n", "CCI:Hours -1.779e-03 1.177e-03 -1.511 0.1307 \n", "CCI:Hours:RSI 4.082e-05 2.131e-05 1.915 0.0555 . \n", "---\n", "Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n", "\n", "Residual standard error: 23.86 on 18727 degrees of freedom\n", "Multiple R-squared: 0.002452,\tAdjusted R-squared: 0.001813 \n", "F-statistic: 3.837 on 12 and 18727 DF, p-value: 6.95e-06\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#How could we improve the strategy and make it profitable even with operational costs?\n", "#Remember the elements Pip_Shift and STD that I mentioned in the begining?\n", "#Let's use them as target and predictiors for a simple linear regression\n", "set.seed(2016)\n", "#Traning set - 20015 to 2017 data\n", "pips_hours_traning <- subset(EURUSD,EURUSD$Year < 2018) \n", "#Test set - 2018\n", "pips_hours_test <- subset(EURUSD,EURUSD$Year == 2018) \n", "\n", "linear1 = lm(Pips_Shift ~ STD + VHF + CCI + VHF*Hours + STD*RSI + Hours*STD + RSI*CCI*Hours , \n", " data = pips_hours_traning)\n", "summary(linear1)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "#You can see that the linear regression is not good. However, could it still be profitable?\n", "#Let's apply it to the data and find out\n", "#In the end only the RSI variable has a decent significance level. In theory you can remove the other variables\n", "#I will keep all for the simplicity of the example. Please try it removing and adding more variables :)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
qlinearPips_Shift
[-21.1,-1.26] -1488.6
(-1.26,-0.885] 850.1
(-0.885,-0.691] -1558.4
(-0.691,-0.558] -258.9
(-0.558,-0.448] -1320.7
(-0.448,-0.351] -161.8
(-0.351,-0.268] -1692.7
(-0.268,-0.194] -815.2
(-0.194,-0.126] 34.6
(-0.126,-0.0624] -191.2
(-0.0624,-0.00448] -392.1
(-0.00448,0.0499] 255.7
(0.0499,0.106] 630.0
(0.106,0.176] -81.0
(0.176,0.272] 172.1
(0.272,0.413] 310.9
(0.413,0.627] -82.8
(0.627,0.974] 1484.3
(0.974,1.68] 1908.1
(1.68,17.9] 2224.0
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " qlinear & Pips\\_Shift\\\\\n", "\\hline\n", "\t {[}-21.1,-1.26{]} & -1488.6 \\\\\n", "\t (-1.26,-0.885{]} & 850.1 \\\\\n", "\t (-0.885,-0.691{]} & -1558.4 \\\\\n", "\t (-0.691,-0.558{]} & -258.9 \\\\\n", "\t (-0.558,-0.448{]} & -1320.7 \\\\\n", "\t (-0.448,-0.351{]} & -161.8 \\\\\n", "\t (-0.351,-0.268{]} & -1692.7 \\\\\n", "\t (-0.268,-0.194{]} & -815.2 \\\\\n", "\t (-0.194,-0.126{]} & 34.6 \\\\\n", "\t (-0.126,-0.0624{]} & -191.2 \\\\\n", "\t (-0.0624,-0.00448{]} & -392.1 \\\\\n", "\t (-0.00448,0.0499{]} & 255.7 \\\\\n", "\t (0.0499,0.106{]} & 630.0 \\\\\n", "\t (0.106,0.176{]} & -81.0 \\\\\n", "\t (0.176,0.272{]} & 172.1 \\\\\n", "\t (0.272,0.413{]} & 310.9 \\\\\n", "\t (0.413,0.627{]} & -82.8 \\\\\n", "\t (0.627,0.974{]} & 1484.3 \\\\\n", "\t (0.974,1.68{]} & 1908.1 \\\\\n", "\t (1.68,17.9{]} & 2224.0 \\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "qlinear | Pips_Shift | \n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| [-21.1,-1.26] | -1488.6 | \n", "| (-1.26,-0.885] | 850.1 | \n", "| (-0.885,-0.691] | -1558.4 | \n", "| (-0.691,-0.558] | -258.9 | \n", "| (-0.558,-0.448] | -1320.7 | \n", "| (-0.448,-0.351] | -161.8 | \n", "| (-0.351,-0.268] | -1692.7 | \n", "| (-0.268,-0.194] | -815.2 | \n", "| (-0.194,-0.126] | 34.6 | \n", "| (-0.126,-0.0624] | -191.2 | \n", "| (-0.0624,-0.00448] | -392.1 | \n", "| (-0.00448,0.0499] | 255.7 | \n", "| (0.0499,0.106] | 630.0 | \n", "| (0.106,0.176] | -81.0 | \n", "| (0.176,0.272] | 172.1 | \n", "| (0.272,0.413] | 310.9 | \n", "| (0.413,0.627] | -82.8 | \n", "| (0.627,0.974] | 1484.3 | \n", "| (0.974,1.68] | 1908.1 | \n", "| (1.68,17.9] | 2224.0 | \n", "\n", "\n" ], "text/plain": [ " qlinear Pips_Shift\n", "1 [-21.1,-1.26] -1488.6 \n", "2 (-1.26,-0.885] 850.1 \n", "3 (-0.885,-0.691] -1558.4 \n", "4 (-0.691,-0.558] -258.9 \n", "5 (-0.558,-0.448] -1320.7 \n", "6 (-0.448,-0.351] -161.8 \n", "7 (-0.351,-0.268] -1692.7 \n", "8 (-0.268,-0.194] -815.2 \n", "9 (-0.194,-0.126] 34.6 \n", "10 (-0.126,-0.0624] -191.2 \n", "11 (-0.0624,-0.00448] -392.1 \n", "12 (-0.00448,0.0499] 255.7 \n", "13 (0.0499,0.106] 630.0 \n", "14 (0.106,0.176] -81.0 \n", "15 (0.176,0.272] 172.1 \n", "16 (0.272,0.413] 310.9 \n", "17 (0.413,0.627] -82.8 \n", "18 (0.627,0.974] 1484.3 \n", "19 (0.974,1.68] 1908.1 \n", "20 (1.68,17.9] 2224.0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Applying the linear regression to the data \n", "\n", "pips_hours_traning$linear1 = predict(linear1,pips_hours_traning)\n", "pips_hours_test$linear1 = predict(linear1,pips_hours_test)\n", "\n", "#Now let's not only run the regression, but discover the most profitable quantiles\n", "q = quantile(pips_hours_traning$linear1, seq(0, 1, by = 0.05))\n", "pips_hours_traning$qlinear <- cut(pips_hours_traning$linear1, q, include.lowest=TRUE)\n", "\n", "\n", "Pips_qlinear <- aggregate(Pips_Shift ~ qlinear, data = pips_hours_traning, FUN = sum)\n", "Pips_qlinear\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'Date'
  2. \n", "\t
  3. 'Open'
  4. \n", "\t
  5. 'High'
  6. \n", "\t
  7. 'Low'
  8. \n", "\t
  9. 'Close'
  10. \n", "\t
  11. 'Pips'
  12. \n", "\t
  13. 'Pips_Shift'
  14. \n", "\t
  15. 'Hours'
  16. \n", "\t
  17. 'Year'
  18. \n", "\t
  19. 'STD'
  20. \n", "\t
  21. 'RSI'
  22. \n", "\t
  23. 'CCI'
  24. \n", "\t
  25. 'CLV'
  26. \n", "\t
  27. 'VHF'
  28. \n", "\t
  29. 'linear1'
  30. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'Date'\n", "\\item 'Open'\n", "\\item 'High'\n", "\\item 'Low'\n", "\\item 'Close'\n", "\\item 'Pips'\n", "\\item 'Pips\\_Shift'\n", "\\item 'Hours'\n", "\\item 'Year'\n", "\\item 'STD'\n", "\\item 'RSI'\n", "\\item 'CCI'\n", "\\item 'CLV'\n", "\\item 'VHF'\n", "\\item 'linear1'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'Date'\n", "2. 'Open'\n", "3. 'High'\n", "4. 'Low'\n", "5. 'Close'\n", "6. 'Pips'\n", "7. 'Pips_Shift'\n", "8. 'Hours'\n", "9. 'Year'\n", "10. 'STD'\n", "11. 'RSI'\n", "12. 'CCI'\n", "13. 'CLV'\n", "14. 'VHF'\n", "15. 'linear1'\n", "\n", "\n" ], "text/plain": [ " [1] \"Date\" \"Open\" \"High\" \"Low\" \"Close\" \n", " [6] \"Pips\" \"Pips_Shift\" \"Hours\" \"Year\" \"STD\" \n", "[11] \"RSI\" \"CCI\" \"CLV\" \"VHF\" \"linear1\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Creating the Linear Regression Strategy\n", "pips_linear <- subset(pips_hours_test,\n", " (pips_hours_test$linear1 <= 0) | #sell\n", " (pips_hours_test$linear1 > 0) #buy\n", " )\n", "\n", "#Adjusting the pips signal when the hours are to selling\n", "pips_linear$Pips_Shift <- ifelse(pips_linear$linear1 <= 0,-1*pips_linear$Pips_Shift ,pips_linear$Pips_Shift )\n", "#Setting a Stop\n", "pips_linear$Pips_Shift <- ifelse(pips_linear$Pips_Shift <= -40,-41 ,pips_linear$Pips_Shift )\n", "cumulative_buy_pips <- cumsum(pips_linear$Pips_Shift)\n", "names(pips_linear)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Sharpe Ratio\"\n" ] }, { "data": { "text/html": [ "0.0657817229553716" ], "text/latex": [ "0.0657817229553716" ], "text/markdown": [ "0.0657817229553716" ], "text/plain": [ "[1] 0.06578172" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"W/L Ration\"\n" ] }, { "data": { "text/html": [ "0.512583164593578" ], "text/latex": [ "0.512583164593578" ], "text/markdown": [ "0.512583164593578" ], "text/plain": [ "[1] 0.5125832" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Profit Factor\"\n" ] }, { "data": { "text/html": [ "-0.310786819882015" ], "text/latex": [ "-0.310786819882015" ], "text/markdown": [ "-0.310786819882015" ], "text/plain": [ "[1] -0.3107868" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Max DD in Pips\"\n" ] }, { "data": { "text/html": [ "907.9" ], "text/latex": [ "907.9" ], "text/markdown": [ "907.9" ], "text/plain": [ "[1] 907.9" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Max DD Duration\"\n" ] }, { "data": { "text/html": [ "
    \n", "\t
  1. 264
  2. \n", "\t
  3. 265
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 264\n", "\\item 265\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 264\n", "2. 265\n", "\n", "\n" ], "text/plain": [ "[1] 264 265" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Evaluating the Linear Regressoin Strategy KPIs\n", "\n", "#KPIs\n", "Bull_wins_PIPS <- sum(pips_linear$Pips_Shift > 0)\n", "Bull_losses_PIPS <- sum(pips_linear$Pips_Shift <= 0)\n", "Bull_totalTrades_PIPS <- Bull_wins_PIPS + Bull_losses_PIPS\n", "Bull_AVG_Win_PIPS <- mean(pips_linear[7][which(pips_linear$Pips_Shift > 0),])\n", "Bull_AVG_Loss_PIPS <- -mean(pips_linear[7][which(pips_linear$Pips_Shift < 0),])\n", "Bull_WL_Ratio_PIPS <- Bull_wins_PIPS/Bull_totalTrades_PIPS\n", "Bull_EV_PIPS <- Bull_AVG_Win_PIPS*Bull_WL_Ratio_PIPS - Bull_AVG_Loss_PIPS*(1-Bull_WL_Ratio_PIPS)\n", "Bull_PF_PIPS <- -sum(pips_linear[7][which(pips_linear$Pips_Shift > 0),])/sum(pips_linear[11][which(pips_linear$Pips_Shift < 0),])\n", "\n", "SHARPE <- mean(pips_linear$Pips_Shift, na.rm = T)/sd(pips_linear$Pips_Shift, na.rm = T)\n", "print (\"Sharpe Ratio\")\n", "SHARPE\n", "print (\"W/L Ration\")\n", "Bull_WL_Ratio_PIPS\n", "print (\"Profit Factor\")\n", "Bull_PF_PIPS\n", "\n", "#DrawDown PIPS\n", "Bull_maxDD_PIPS <- maxDrawDown(cumulative_buy_pips)$maxdrawdown[1]\n", "Bull_maxDD_duration_PIPS <-maxDrawDown(cumulative_buy_pips)$to - maxDrawDown(cumulative_buy_pips)$from[1]\n", "print (\"Max DD in Pips\")\n", "Bull_maxDD_PIPS\n", "print (\"Max DD Duration\")\n", "Bull_maxDD_duration_PIPS" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nMMGOAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Ploting Linear Regression Strategy Results - Only to illustrate the results. The strategy lacks of consistency verifications\n", "df <- data.frame(seq.int(dim(pips_linear)[1]),cumulative_buy_pips)\n", "g <- ggplot(df, aes(seq.int(dim(pips_linear)[1])))\n", "g <- g + geom_line(aes(y=cumulative_buy_pips,linetype=\"Pips\"), colour=\"blue\")\n", "g <- g + ggtitle(\"Outspoken Market - Linear Regression in Hours Strategy\")+labs(x=\"Test timeframe: 2018\",\n", " y=\"Total Pips\") \n", "g <- g + annotate(\"text\", x = dim(pips_linear)[1]-10, y = tail(cumulative_buy_pips,1)-45, label = paste(round(tail(cumulative_buy_pips,1),2)))\n", "g <- g + theme(legend.position=c(.24, .95), legend.justification = c(1, 1),\n", " legend.background = element_rect(color = \"black\",fill = \"grey90\", size = 1, linetype = \"solid\")) + scale_shape_discrete(name=\"\")\n", "g <- g + labs(linetype=\"Hours Strategy\")\n", "g\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "#Don't forget: Strategies may look good untill you add operational costs\n", "\n", "#Simulating 0.5 and 1 pips of operational costs\n", "\n", "costs1 <- 0.5\n", "costs2 <- 1\n", "pips_linear$Pips_Shift2 <- pips_linear$Pips_Shift-costs2\n", "pips_linear$Pips_Shift <- pips_linear$Pips_Shift-costs1\n", "cumulative_buy_pips <- cumsum(pips_linear$Pips_Shift)\n", "cumulative_buy_pips2 <- cumsum(pips_linear$Pips_Shift2)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nFzfyDaeOpgAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Ploting Strategy Results not with operational costs - All is different now\n", "df <- data.frame(seq.int(dim(pips_linear)[1]),cumulative_buy_pips)\n", "g <- ggplot(df, aes(seq.int(dim(pips_linear)[1])))\n", "g <- g + geom_line(aes(y=cumulative_buy_pips,linetype=\"0.5 Pips\"), colour=\"blue\")\n", "g <- g + geom_line(aes(y=cumulative_buy_pips2,linetype=\"1.0 Pips\"), colour=\"red\")\n", "g <- g + ggtitle(\"Outspoken Market - Linear Regression in Hours Strategy\")+labs(x=\"Test timeframe: 2018\",\n", " y=\"Total Pips\") \n", "g <- g + annotate(\"text\", x = dim(pips_linear)[1]-10, y = tail(cumulative_buy_pips,1)-45, label = paste(round(tail(cumulative_buy_pips,1),2)))\n", "g <- g + annotate(\"text\", x = dim(pips_linear)[1]-10, y = tail(cumulative_buy_pips2,1)-45, label = paste(round(tail(cumulative_buy_pips2,1),2)))\n", "g <- g + theme(legend.position=c(.30, .95), legend.justification = c(1, 1),\n", " legend.background = element_rect(color = \"black\",fill = \"grey90\", size = 1, linetype = \"solid\")) + scale_shape_discrete(name=\"\")\n", "g <- g + labs(linetype=\"With operational Costs\")\n", "g\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Leandro Guerra - www.outspokenmarket.com" ] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 2 }