Raw File
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tutorial 104: Time Series with Pandas / NumPy\n",
    "\n",
    "Contributed by: Avi Thaker https://github.com/athaker/CNTK\n",
    "November 20, 2016\n",
    "\n",
    "This tutorial will introduce the use of the Cognitive Toolkit for time series data. We show how to prepare time series data for deep learning algorithms. We will cover training a neural network and evaluating the neural network model. We will also look at the predictive potential on classification of an Exchange-traded Funds ([ETF](https://en.wikipedia.org/wiki/Exchange-traded_fund)), and in this simplified setting how one could trade it. This tutorial serves **only** as an example of how to use neural networks for time series analysis. \n",
    "    \n",
    "It is important to note that the stock market is extremely noisy and is difficult to predict. This is best done by professionals with domain expertise. It is more important to make sure the model is correct before setting up a trading system (there are many factors to consider including but not limited to: [curve fitting bias](https://en.wikipedia.org/wiki/Overfitting), [forward looking bias](http://www.investopedia.com/terms/l/lookaheadbias.asp?lgl=no-infinite), profitability etc.). The learnings and anecdotes presented in this tutorial is only for exemplary purposes with the goal of introducing an approach to analyze time series data.\n",
    "\n",
    "This tutorial introduces how to use pandas_datareader package and pandas. Please note, this tutorial will utilize the numpy interface to CNTK which interfaces well with [Pandas dataframes](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html) (a structure that is well suited towards timeseries analysis). \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from __future__ import print_function\n",
    "import os\n",
    "import numpy as np\n",
    "import cntk\n",
    "import cntk.ops as C\n",
    "\n",
    "from cntk.initializer import glorot_uniform\n",
    "from cntk.layers import default_options, Input, Dense                    # Layers\n",
    "from cntk.learner import sgd, learning_rate_schedule, UnitType\n",
    "from cntk.utils import get_train_eval_criterion, get_train_loss\n",
    "\n",
    "import datetime\n",
    "import pandas as pd\n",
    "pd.options.mode.chained_assignment = None  # default='warn'\n",
    "%matplotlib inline\n",
    "\n",
    "# Select the right target device when this notebook is being tested:\n",
    "if 'TEST_DEVICE' in os.environ:\n",
    "    if os.environ['TEST_DEVICE'] == 'cpu':\n",
    "        cntk.device.set_default_device(cntk.device.cpu())\n",
    "    else:\n",
    "        cntk.device.set_default_device(cntk.device.gpu(0))\n",
    "\n",
    "# If you want to set the program to use a CUDA enabled GPU\n",
    "#from cntk.device import set_default_device, gpu\n",
    "#set_default_device(gpu(0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Importing stock data\n",
    "We first retrieve stock data using the method `get_stock_data`. This method downloads stock data on a daily timescale from Yahoo finance (can be modified to get data from Google Finance and many other sources). [Pandas datareader]( http://pandas-datareader.readthedocs.io/en/latest/remote_data.html) shows many use cases for this data reader."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# A method which obtains stock data from Yahoo finance\n",
    "# Requires that you have an internet connection to retreive stock data from Yahoo finance\n",
    "import time\n",
    "try:\n",
    "    from pandas_datareader import data\n",
    "except ImportError:\n",
    "    !pip install pandas_datareader\n",
    "    from pandas_datareader import data\n",
    "\n",
    "def get_stock_data(contract, s_year, s_month, s_day, e_year, e_month, e_day):\n",
    "    \"\"\"\n",
    "    Args:\n",
    "        contract (str): the name of the stock/etf\n",
    "        s_year (int): start year for data\n",
    "        s_month (int): start month\n",
    "        s_day (int): start day\n",
    "        e_year (int): end year\n",
    "        e_month (int): end month\n",
    "        e_day (int): end day\n",
    "    Returns:\n",
    "        Pandas Dataframe: Daily OHLCV bars\n",
    "    \"\"\"\n",
    "    start = datetime.datetime(s_year, s_month, s_day)\n",
    "    end = datetime.datetime(e_year, e_month, e_day)\n",
    "    \n",
    "    retry_cnt, max_num_retry = 0, 3\n",
    "    \n",
    "    while(retry_cnt < max_num_retry):\n",
    "        try:\n",
    "            bars = data.get_data_yahoo(contract, start, end)\n",
    "            return bars\n",
    "        except:\n",
    "            retry_cnt += 1\n",
    "            time.sleep(np.random.randint(1,10)) \n",
    "            \n",
    "    print(\"Yahoo Finance is not reachable\")\n",
    "    return None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "File already exists data\\Stock\\stock_SPY.pkl\n"
     ]
    }
   ],
   "source": [
    "import pickle as  pkl\n",
    "\n",
    "# We search in cached stock data set with symbol SPY.               \n",
    "# Check for an environment variable defined in CNTK's test infrastructure\n",
    "envvar = 'CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'\n",
    "def is_test(): return envvar in os.environ\n",
    "\n",
    "def download(data_file):\n",
    "    data = get_stock_data(\"SPY\", 2000, 1,2,2017,1,1)\n",
    "    dir = os.path.dirname(data_file)\n",
    "        \n",
    "    if not os.path.exists(dir):\n",
    "        os.makedirs(dir)\n",
    "        \n",
    "    if not os.path.isfile(data_file):\n",
    "        print(\"Saving\", data_file )\n",
    "        with open(data_file, 'wb') as f:\n",
    "            pkl.dump(data, f, protocol = 2)\n",
    "    return data\n",
    "\n",
    "data_file = os.path.join(\"data\", \"Stock\", \"stock_SPY.pkl\")\n",
    "\n",
    "# Check for data in local cache\n",
    "if os.path.exists(data_file):\n",
    "        print(\"File already exists\", data_file)\n",
    "        data = pd.read_pickle(data_file) \n",
    "else: \n",
    "    # If not there we might be running in CNTK's test infrastructure\n",
    "    if is_test():\n",
    "        test_file = os.path.join(os.environ[envvar], 'Tutorials','data','stock','stock_SPY.pkl')\n",
    "        if os.path.isfile(test_file):\n",
    "            print(\"Reading data from test data directory\")\n",
    "            data = pd.read_pickle(test_file)\n",
    "        else:\n",
    "            print(\"Test data directory missing file\", test_file)\n",
    "            print(\"Downloading data from Yahoo Finance\")\n",
    "            data = download(data_file)         \n",
    "    else:\n",
    "        # Local cache is not present and not test env\n",
    "        # download the data from Yahoo finance and cache it in a local directory\n",
    "        # Please check if there is trade data for the chosen stock symbol during this period\n",
    "        data = download(data_file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Building the training paramaters\n",
    "\n",
    "The stock market behavior exhibits substantial [autocorrelation](https://en.wikipedia.org/wiki/Autocorrelation) ([reference](http://epchan.blogspot.com/2016/04/mean-reversion-momentum-and-volatility.html)). We use [ETF](http://www.investopedia.com/terms/e/etf.asp) `SPY` index representing the \"market\" of stock. This is the ETF that encompasses around top 500 companies in America by market capitalization. We will trade under the assumption that there is some short term autocorrelation that have predictive power in the market. \n",
    "\n",
    "### Predicting\n",
    "* Whether or not the next data for the given stock/ETF will be above or below the current day.\n",
    "\n",
    "### Predictors\n",
    "* The previous 8 days, classified if greater than the current day,\n",
    "\n",
    "* The volume changes as a percentage,\n",
    "\n",
    "* The percentage change from the previous day.\n",
    "\n",
    "Note, we are not feeding the neural network the price itself. Financial timeseries data are noisy. It is important not to overfit the data. There is a lot we can do here (smoothing, adding more features, etc.), but we will keep this tutorial simple, and demonstrate CNTK's ability to interface with timeseries data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>diff</th>\n",
       "      <th>v_diff</th>\n",
       "      <th>p_1</th>\n",
       "      <th>p_2</th>\n",
       "      <th>p_3</th>\n",
       "      <th>p_4</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-03</th>\n",
       "      <td>148.250000</td>\n",
       "      <td>148.250000</td>\n",
       "      <td>143.875000</td>\n",
       "      <td>145.437500</td>\n",
       "      <td>8164300</td>\n",
       "      <td>105.825332</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-04</th>\n",
       "      <td>143.531204</td>\n",
       "      <td>144.062500</td>\n",
       "      <td>139.640594</td>\n",
       "      <td>139.750000</td>\n",
       "      <td>8089800</td>\n",
       "      <td>101.686912</td>\n",
       "      <td>0.040698</td>\n",
       "      <td>0.009209</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>139.937500</td>\n",
       "      <td>141.531204</td>\n",
       "      <td>137.250000</td>\n",
       "      <td>140.000000</td>\n",
       "      <td>12177900</td>\n",
       "      <td>101.868820</td>\n",
       "      <td>0.001786</td>\n",
       "      <td>0.335698</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>139.625000</td>\n",
       "      <td>141.500000</td>\n",
       "      <td>137.750000</td>\n",
       "      <td>137.750000</td>\n",
       "      <td>6227200</td>\n",
       "      <td>100.231643</td>\n",
       "      <td>0.016334</td>\n",
       "      <td>0.955598</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>140.312500</td>\n",
       "      <td>145.750000</td>\n",
       "      <td>140.062500</td>\n",
       "      <td>145.750000</td>\n",
       "      <td>8066500</td>\n",
       "      <td>106.052718</td>\n",
       "      <td>0.054889</td>\n",
       "      <td>0.228017</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>146.250000</td>\n",
       "      <td>146.906204</td>\n",
       "      <td>145.031204</td>\n",
       "      <td>146.250000</td>\n",
       "      <td>5741700</td>\n",
       "      <td>106.416535</td>\n",
       "      <td>0.003419</td>\n",
       "      <td>0.404898</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>145.812500</td>\n",
       "      <td>146.093704</td>\n",
       "      <td>143.500000</td>\n",
       "      <td>144.500000</td>\n",
       "      <td>7503700</td>\n",
       "      <td>105.143175</td>\n",
       "      <td>0.012111</td>\n",
       "      <td>0.234817</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>144.593704</td>\n",
       "      <td>144.593704</td>\n",
       "      <td>142.875000</td>\n",
       "      <td>143.062500</td>\n",
       "      <td>6907700</td>\n",
       "      <td>104.097201</td>\n",
       "      <td>0.010048</td>\n",
       "      <td>0.086281</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-13</th>\n",
       "      <td>144.468704</td>\n",
       "      <td>145.750000</td>\n",
       "      <td>143.281204</td>\n",
       "      <td>145.000000</td>\n",
       "      <td>5158300</td>\n",
       "      <td>105.506992</td>\n",
       "      <td>0.013362</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-14</th>\n",
       "      <td>146.531204</td>\n",
       "      <td>147.468704</td>\n",
       "      <td>145.968704</td>\n",
       "      <td>146.968704</td>\n",
       "      <td>7437300</td>\n",
       "      <td>106.939489</td>\n",
       "      <td>0.013395</td>\n",
       "      <td>0.306428</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close    Volume  \\\n",
       "Date                                                                   \n",
       "2000-01-03  148.250000  148.250000  143.875000  145.437500   8164300   \n",
       "2000-01-04  143.531204  144.062500  139.640594  139.750000   8089800   \n",
       "2000-01-05  139.937500  141.531204  137.250000  140.000000  12177900   \n",
       "2000-01-06  139.625000  141.500000  137.750000  137.750000   6227200   \n",
       "2000-01-07  140.312500  145.750000  140.062500  145.750000   8066500   \n",
       "2000-01-10  146.250000  146.906204  145.031204  146.250000   5741700   \n",
       "2000-01-11  145.812500  146.093704  143.500000  144.500000   7503700   \n",
       "2000-01-12  144.593704  144.593704  142.875000  143.062500   6907700   \n",
       "2000-01-13  144.468704  145.750000  143.281204  145.000000   5158300   \n",
       "2000-01-14  146.531204  147.468704  145.968704  146.968704   7437300   \n",
       "\n",
       "             Adj Close      diff    v_diff  p_1  p_2  p_3  p_4  p_5  p_6  p_7  \\\n",
       "Date                                                                            \n",
       "2000-01-03  105.825332  0.000000  0.000000    0    0    0    0    0    0    0   \n",
       "2000-01-04  101.686912  0.040698  0.009209    0    0    0    0    0    0    0   \n",
       "2000-01-05  101.868820  0.001786  0.335698    1    0    0    0    0    0    0   \n",
       "2000-01-06  100.231643  0.016334  0.955598    0    0    0    0    0    0    0   \n",
       "2000-01-07  106.052718  0.054889  0.228017    1    1    1    1    0    0    0   \n",
       "2000-01-10  106.416535  0.003419  0.404898    1    1    1    1    1    0    0   \n",
       "2000-01-11  105.143175  0.012111  0.234817    0    0    1    1    1    0    0   \n",
       "2000-01-12  104.097201  0.010048  0.086281    0    0    0    1    1    1    0   \n",
       "2000-01-13  105.506992  0.013362  0.339143    1    1    0    0    1    1    1   \n",
       "2000-01-14  106.939489  0.013395  0.306428    1    1    1    1    1    1    1   \n",
       "\n",
       "            p_8  \n",
       "Date             \n",
       "2000-01-03    0  \n",
       "2000-01-04    0  \n",
       "2000-01-05    0  \n",
       "2000-01-06    0  \n",
       "2000-01-07    0  \n",
       "2000-01-10    0  \n",
       "2000-01-11    0  \n",
       "2000-01-12    0  \n",
       "2000-01-13    0  \n",
       "2000-01-14    1  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Feature name list\n",
    "predictor_names = []\n",
    "\n",
    "# Compute price difference as a feature\n",
    "data[\"diff\"] = np.abs((data[\"Close\"] - data[\"Close\"].shift(1)) / data[\"Close\"]).fillna(0) \n",
    "predictor_names.append(\"diff\")\n",
    "\n",
    "# Compute the volume difference as a feature\n",
    "data[\"v_diff\"] = np.abs((data[\"Volume\"] - data[\"Volume\"].shift(1)) / data[\"Volume\"]).fillna(0) \n",
    "predictor_names.append(\"v_diff\")\n",
    "\n",
    "# Compute the stock being up (1) or down (0) over different day offsets compared to current dat closing price\n",
    "num_days_back = 8\n",
    "\n",
    "for i in range(1,num_days_back+1):\n",
    "    data[\"p_\" + str(i)] = np.where(data[\"Close\"] > data[\"Close\"].shift(i), 1, 0) # i: number of look back days\n",
    "    predictor_names.append(\"p_\" + str(i))\n",
    "    \n",
    "\n",
    "    \n",
    "# If you want to save the file to your local drive\n",
    "#data.to_csv(\"PATH_TO_SAVE.csv\")\n",
    "data.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### What we are trying to predict\n",
    "\n",
    "Here we are trying to predict whether or not the next days' trading will be above or below the current day. We will represent a predicted up day as a 1, else a 0 if the next day is the same or below. (Note: the market is unlikely going to close at the same price as it did the previous day). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "data[\"next_day\"] = np.where(data[\"Close\"].shift(-1) > data[\"Close\"], 1, 0)\n",
    "data[\"next_day_opposite\"] = np.where(data[\"next_day\"]==1,0,1) # The label must be one-hot encoded\n",
    "\n",
    "# Establish the start and end date of our training timeseries (picked 2000 days before the market crash)\n",
    "training_data = data[\"2000-01-15\":\"2008-01-01\"]\n",
    "\n",
    "# We define our test data as: data[\"2008-01-02\":]\n",
    "# This example allows to to include data up to current date\n",
    "\n",
    "test_data = data[\"2008-01-02\":\"2016-11-25\"] \n",
    "training_features = np.asarray(training_data[predictor_names], dtype = \"float32\")\n",
    "training_labels = np.asarray(training_data[[\"next_day\",\"next_day_opposite\"]], dtype=\"float32\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Here we are actually building the neural network itself. We will use a simple feedforward neural network (represented as `NN` in the plots) with 10 inputs and 50 dimensions.\n",
    "\n",
    "**Suggested exercise** Try experimenting here with different sizes and number of hidden layers. What happens when we make this network large? Do we overfit the data? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2000, 10)\n"
     ]
    }
   ],
   "source": [
    "print(training_features.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note, we are using `layers` library in this tutorial. The details documentation can be found [here](https://cntk.ai/pythondocs/layerref.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Lets build the network\n",
    "input_dim = 2 + num_days_back\n",
    "num_output_classes = 2 #Remember we need to have 2 since we are trying to classify if the market goes up or down 1 hot encoded\n",
    "num_hidden_layers = 2\n",
    "hidden_layers_dim = 2 + num_days_back\n",
    "input = Input(input_dim)\n",
    "label = Input(num_output_classes)\n",
    "\n",
    "def create_model(input, num_output_classes):\n",
    "    h = input\n",
    "    for i in range(0,num_hidden_layers):\n",
    "        h = Dense(hidden_layers_dim, \n",
    "                  init = glorot_uniform(), \n",
    "                  activation = C.relu)(h)\n",
    "        \n",
    "    return (Dense(num_output_classes, init=glorot_uniform(), activation=None)(h))\n",
    "    \n",
    "z = create_model(input, num_output_classes)\n",
    "loss = C.cross_entropy_with_softmax(z, label)\n",
    "label_error = C.classification_error(z, label)\n",
    "lr_per_minibatch = learning_rate_schedule(0.125,UnitType.minibatch)\n",
    "trainer = cntk.Trainer(z, (loss, label_error), [sgd(z.parameters, lr=lr_per_minibatch)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Initialize the parameters for the trainer, we will train in large minibatches in sequential order\n",
    "minibatch_size = 100\n",
    "num_minibatches = len(training_data.index) // minibatch_size\n",
    "\n",
    "#Run the trainer on and perform model training\n",
    "training_progress_output_freq = 1\n",
    "\n",
    "# Visualize the loss over minibatch\n",
    "plotdata = {\"batchsize\":[], \"loss\":[], \"error\":[]}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Number of passes through the data, how we train time series data\n",
    "This tutorial will differ from other tutorials in the sense that here we will not randomly send data to the trainer, instead each minibatch will be fed sequentially in the order of the time dimension. This is key to time series data-handling where we want to \"weigh\" the data at the end of our sample a slightly higher. You can put in multiple passes, however you will notice significant performance degradation. Try it out! Additionally, multiple passes tend to overfit the financial timeseries data. This overfitting can be mitigated using standard ML approaches such as [L1 regularization](https://en.wikipedia.org/wiki/Regularization_%28mathematics%29)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of mini batches\n",
      "20\n",
      "The shape of the training feature minibatch\n",
      "(100, 10)\n"
     ]
    }
   ],
   "source": [
    "tf = np.split(training_features,num_minibatches)\n",
    "\n",
    "print(\"Number of mini batches\")\n",
    "print(len(tf))\n",
    "\n",
    "print(\"The shape of the training feature minibatch\")\n",
    "print(tf[0].shape)\n",
    "\n",
    "tl = np.split(training_labels, num_minibatches)\n",
    "\n",
    "# It is key that we make only one pass through the data linearly in time\n",
    "num_passes = 1 \n",
    "\n",
    "# Defines a utility that prints the training progress\n",
    "def print_training_progress(trainer, mb, frequency, verbose=1):\n",
    "    training_loss = \"NA\"\n",
    "    eval_error = \"NA\"\n",
    "    if mb%frequency == 0:\n",
    "        training_loss = get_train_loss(trainer)\n",
    "        eval_error = get_train_eval_criterion(trainer)\n",
    "        if verbose: \n",
    "            print (\"Minibatch: {0}, Loss: {1:.4f}, Error: {2:.2f}%\".format(mb, training_loss, eval_error*100))\n",
    "    return mb, training_loss, eval_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minibatch: 0, Loss: 0.8458, Error: 52.00%\n",
      "Minibatch: 1, Loss: 0.7292, Error: 53.00%\n",
      "Minibatch: 2, Loss: 0.7177, Error: 52.00%\n",
      "Minibatch: 3, Loss: 0.7022, Error: 52.00%\n",
      "Minibatch: 4, Loss: 0.7118, Error: 53.00%\n",
      "Minibatch: 5, Loss: 0.7118, Error: 53.00%\n",
      "Minibatch: 6, Loss: 0.6900, Error: 44.00%\n",
      "Minibatch: 7, Loss: 0.7228, Error: 61.00%\n",
      "Minibatch: 8, Loss: 0.7242, Error: 61.00%\n",
      "Minibatch: 9, Loss: 0.7087, Error: 48.00%\n",
      "Minibatch: 10, Loss: 0.7006, Error: 54.00%\n",
      "Minibatch: 11, Loss: 0.7013, Error: 54.00%\n",
      "Minibatch: 12, Loss: 0.6948, Error: 53.00%\n",
      "Minibatch: 13, Loss: 0.7122, Error: 56.00%\n",
      "Minibatch: 14, Loss: 0.6950, Error: 49.00%\n",
      "Minibatch: 15, Loss: 0.7011, Error: 55.00%\n",
      "Minibatch: 16, Loss: 0.7015, Error: 48.00%\n",
      "Minibatch: 17, Loss: 0.6794, Error: 46.00%\n",
      "Minibatch: 18, Loss: 0.6874, Error: 49.00%\n",
      "Minibatch: 19, Loss: 0.7077, Error: 49.00%\n"
     ]
    }
   ],
   "source": [
    "# Train our neural network\n",
    "tf = np.split(training_features,num_minibatches)\n",
    "tl = np.split(training_labels, num_minibatches)\n",
    "\n",
    "for i in range(num_minibatches*num_passes): # multiply by the \n",
    "    features = np.ascontiguousarray(tf[i%num_minibatches])\n",
    "    labels = np.ascontiguousarray(tl[i%num_minibatches])\n",
    "    \n",
    "    # Specify the mapping of input variables in the model to actual minibatch data to be trained with\n",
    "    trainer.train_minibatch({input : features, label : labels})\n",
    "    batchsize, loss, error = print_training_progress(trainer, i, training_progress_output_freq, verbose=1)\n",
    "    if not (loss == \"NA\" or error ==\"NA\"):\n",
    "        plotdata[\"batchsize\"].append(batchsize)\n",
    "        plotdata[\"loss\"].append(loss)\n",
    "        plotdata[\"error\"].append(error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\ndDgAvPQSDB8Od94J770HG24IRx2Vbttv70SlLXntNXj88TQWqSV8/jncfntqSXn11TRI+1e/gn33\nbZnjm1nbMmHCBHr16gXQKyImNGVf7tapcttsA5ddBtOmwRNPQN++6VvvjjvCVlvBX/9a6QitHKZM\nScnB0KGpK68lrLgiHH986tr5299g3jy4+eaWObaZWV2cnLQSHTrAHnvANdekdVJGjYKddkofMNa6\nTZkCe+2VBks//jh85Sste/wOHeCww+C559Lfl5lZpXnMSSvUqRPsv3+6Wev26qspMVltNXjsMVh7\n7crFIqVxK2ZmleaWkzbOQ4qq1+TJqStn9dVTi0klE5OGevBB+OijSkdhZm2dk5M27LPPYOed04DH\nTz+tdDSW75VXUovJmmumxGSttSodUf0++wx++MM0KHvwYHj33UpHZGZtlZOTNmz+fOjZEy64ADbY\nIM3E+PDDSkeVWnPeeKP+emefna5LVNvtyivr3r6mJq3KW42tRy+9BOusk7py1lyz0tE0TOfOKaka\nNCjNINt4Yzj55DTLyFreZ5+l98DGG8PBB6cuQrO2wslJG7baammp/DffTB8iQ4emb70/+Ula66Il\nzZ0L//hHimO99dIspAUL6t5mtdXSB3htt+7d697+0UfT5QH69k2znapJ//7w73+3nsQkZ80100Jw\nb78N//u/8MADsMUWacXZCU2aOGgNtWRJSg432ywlit/+dppx9fHHlY7MrHy8zkmealznpJw+/jgt\n6jZ0KMyeDeeemz5gmstrr6VZRaNGwb/+BYsXpw+y/feHAw6A3XeHFZp5SPbo0XDKKTBnTlrM7pRT\nvDZMOS1aBLfcApdcklY8fuqpSkfUdkWkKd/nn59aSQ4/PCWKW2wBS5dCx46VjtDau3Kuc+LkJE9b\nT05y5s9Pa6WsuSYcfXTzHGP69NS60blzGluRS0g23rh5jleXOXPgnHPSc95nn/TT15Upr6VLU5fh\nOutUOpK269FH0wJ5ffrA//wPpM8As4b5/PM0Tqw5/we3yUXYJJ0uaaqkhZLGSdq5jrrDJdVIWpr9\nzN1eLKh3hKTJ2T4nSerX/M+k+nXtCmed1XyJCaRv0Y89lmZ2jB6dupIqkZhA6v65/noYMwb++9/U\npXTVVWlMipVHx471JyYTJ8KRR6bX/qWX/Po31t57p7VoHnyw8YnJggXwySfNE5dVvyeeSCuKH3xw\n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\nv4UL4Ykn0rWN9tsvrb1itXNyYmZmVsT3vgc33gjbbQdpVfaGmzMHRo9Os2y+8x3o3j0tRnf55Wkx\nvx6+yludnJyYmZkV6NABzjwzrf68zjrp4qdnnw0LFjRs+x//OLW8DB8O662XkpKJE+Gjj+C+++Dg\ng5s1/FbPY07MzMxqsemm8M9/pssO/PKX6cKPI0bALrukKcm1GTIEfvvbdEmLuupZcW45MTMzq0PH\njumq0RMnplk0u+4Kjz1W9zZbbpkSGycmpXHLiZmZWQNsvnlac+SOO1JXjzUfJydmZmYN1LEjHHNM\npaNo+9ytY2ZmZlXFyYmZmZlVFScnZmZmVlWcnJiZmVlVcXJiZmZmVcXJiZmZmVUVJydmZmZWVZyc\nmJmZWVVxcmJmZmZVxcmJmZmZVRUnJ2ZmZlZVnJyYmZlZVXFyYmZmZlWlapITSadLmippoaRxknau\np/6Kkv5H0luSFkl6U9LxeY8fJ6lG0tLsZ42kBc3+RKyqjBw5stIhWBn5fLYtPp9Wm6pITiQdCVwG\nDAF2BCYBYyStUcdmfwH2Ak4ANgMGAFMK6swBeuTdNixv5Fbt/M+vbfH5bFt8Pq02K1Q6gMwg4NqI\nuAVA0qnAAcCJwCWFlSX1BXYDNo6I2VnxtCL7jYiY2Twhm5mZWXOoeMuJpE5AL+DRXFlEBPAI0LuW\nzb4H/Af4uaR3JU2RdKmkLgX1umXdPtMk3S1pq+Z4DmZmZlY+1dBysgbQEZhRUD4D2LyWbTYmtZws\nAg7J9vEnYDXgpKzOFFLLywtAd+BnwFhJW0XE++V8AmZmZlY+1ZCclKIDUAMcHRHzACQNBv4iaWBE\nfBYR44BxuQ0kPQNMBn5MGttSTBeAk08+ma9+9avLPNCnTx/69u1b9idizWvOnDlMmDCh0mFYmfh8\nti0+n63Xgw8+yJgxY5Ypmzt3bu7Xwl6MRlPqQamcrFtnAfD9iLg3r3wE0D0iDi2yzQhgl4jYLK9s\nC+BlYLOIeKOWY90FLI6IY2p5/Gjgz6U/GzMzs3bvmIi4vSk7qHjLSUQsljQe2Ae4F0CSsvtX1rLZ\n08DhklaKiNz04M1JrSnvFttAUgdgW2BUHeGMAY4B3iJ1GZmZmVnDdAG+TvosbZKKt5wASOoPjABO\nBZ4jzd45HNgiImZKuhhYNyKOy+p3BV4hddtcCKwJXA88HhGnZnXOzx5/HVgFOBc4COgVEa+22JMz\nMzOzRql4ywlARNyVrWlyEbA2MBHokzcNuAewfl79+ZL2A/4I/Bv4CLgTOD9vt6sC12XbfgKMB3o7\nMTEzM6tuVdFyYmZmZpZT8XVOzMzMzPI5Ock09to+Vp0kDcm7llLu9kql47KGk7SbpHslvZedv4OK\n1LlI0vuSFkh6WNImlYjV6lff+ZQ0vMh79oFKxWt1k3SepOckfSpphqR/SNqsSL0mvUednFDytX2s\ner1EGruUu6bSrpUNxxqpK2nc2UBguX5nST8HzgBOAb4JzCe9X1dsySCtweo8n5nRLPueHdAyoVkJ\ndiON9/wWsC/QCXhI0ldyFcrxHvWYE0DSOODZiDgruy/gHeDKiFju2j5WvSQNAQ6OiJ6VjsWaTlIN\ncEjBGkjvA5dGxBXZ/ZVJK0ofFxF3VSZSa4hazudw0ppWh1UuMitV9iX+Q2D3iHgqK2vye7Tdt5yU\neG0fq26bZk3Ib0i6TdL69W9irYGkjUjfrPPfr58Cz+L3a2u2Z9ZF8KqkqyWtVumArMFWIbWIfQzl\ne4+2++SEuq/t06Plw7EmGgccD/QhrZuzEfCvbG0ca/16kP4R+v3adowGjgX2Jq1HtQfwQNaCbVUs\nO0d/AJ6KiNzYvrK8R6tinROzcomI/JUJX5L0HPA20B8YXpmozKw2Bc38L0t6EXgD2BN4vCJBWUNd\nDWwFfKfcO3bLCcwClpIGY+VbG5je8uFYOUXEHOA1wLM52obpgPD7tc2KiKmk/8t+z1YxScOA/YE9\nI+KDvIfK8h5t98lJRCwmrR67T64s79o+YysVl5WHpG6kf3If1FfXql/2wTWdZd+vK5NmDvj92gZI\n+hqwOn7PVq0sMTkY2CsipuU/Vq73qLt1ksuBEdkFCHPX9lmJdL0fa0UkXQrcR+rKWQ/4DbAYGFnJ\nuKzhsvFBm5C+fQFsLGl74OOIeIfUx/1rSa+TLtL5W9IFP++pQLhWj7rOZ3YbAvyN9IG2CfA7Umtn\nky8eZ+Un6WrSVO+DgPmSci0kcyIid8HcJr9HPZU4I2kgaTBW7to+P4mI/1Q2KmssSSNJ8/BXB2YC\nTwG/yrJ5awUk7UEaa1D4z+nmiDgxq3MhaQ2FVYAngdMj4vWWjNMapq7zSVr75G5gB9K5fJ+UlFyQ\nd201qyLZdPBiicMJEXFLXr0LacJ71MmJmZmZVZV2P+bEzMzMqouTEzMzM6sqTk7MzMysqjg5MTMz\ns6ri5MTMzMyqipMTMzMzqypOTszMzKyqODkxMzOzquLkxMzMzKqKkxOzdkDS45Iub0T9DSXVSNou\nu79Hdn/l5ouy1liGS/p7Sx+3VJKGSHq+0nGYtWZOTsxaIUkjsmTh6iKPXZU9dlNe8aHA+Y04xDSg\nB/BSXlmTr3XR2CSpFfN1QcyawMmJWesUpATiKEmdc4XZ7wNIV2X+snLE7IiY3+CdJx9GRE25Aram\nkeSryFu74eTErPV6HngHOCyv7DBSYrJMt0Jhi4WkqZLOk3SjpE8lvS3pR3mPL9Otk2dXSZMkLZT0\njKSt87ZZTdLtkt6VNF/SC5KOynt8OLAHcFa276WSNsge21rSfZLmZPH8U9JGBc/hp5LelzRL0jBJ\nHWt7YXJdK5J+kD3X2ZJGSupa8BqcWbDd85IuyLtfI+mULLb5kl6R9G1J38he03mSni6MNdv2FEnT\nsu3ulPTVgsdPzva3MPt5WpHXv7+kJyQtAI6u7fmatTVOTsxarwBuAk7MKzsRGA6oAdsPBv5Nulz9\n1cCfJG1asP98Ai4BBgE7ATOBe/OShC7Af4B+wNbAtcAtknbKHj8LeAa4HlgbWAd4R9K6wD+BhcCe\nwI5ZnfyWgr2BjbPHjwWOz251+QZwMLA/cAApMfpFPdsU82tgBLA9MBm4HbgG+B+gF+l1GVawzabA\nEdlx+5Ce0xddcJKOAS4EzgO2AH4JXCTphwX7uRi4AtgSGFNC7GatkpsJzVq3PwP/J2l90peNXYAj\ngb0asO2oiLgm+/13kgZl2/03KyuW4FwYEY8BSDoOeJc0nuWvEfE+kD+e5CpJfYH+wH8i4lNJnwML\nImJmrpKkM4DZwICIWJoVv1Fw3I+BMyIigNckjQL2AW6s4/kJOC4iFmTHuTXbpjFjbwBuioi/Zfu4\nhJRg/SYiHsnKhpKSxHydgR9GxPSszk+AUZJ+GhEfkhKTn0bEPVn9t7NWqFOBW/P2c0VeHbN2w8mJ\nWSsWEbMk3Q+cQPowHhURH0sNaTjhxYL704G16jocMC7v2J9ImkL6Vo+kDsCvSC0G6wErZrf6xrps\nDzyZl5gU83KWmOR8AGxTz37fyiUmedvU9fxqk/86zch+vlRQ1kVSt4iYl5VNyyUmmWdIyePmkuaR\nWnVulHRDXp2OpCQt3/gS4jVr9ZycmLV+w0ndCgEMbMR2iwvuB03r6j0X+Amp++YlUlIylJSg1GVh\nA/ZdSqz1bVPD8q1DnerZT9RR1tDXrlv282TguYLHChO0Bg9iNmtLPObErPV7kJQArAA81IzHEfDt\nL+5IqwKbAa9kRbsA90TEyIh4EZiaPZ7vc1ILQb4XgN3qGuDaTGaSxr0AkK3hstzA1iIaMk14A0k9\n8u73JiUer2bdOu8D34iINwtu+bOsPB3Z2i0nJ2atXDbddwtg64Kuj+ZwgaS9JW1DGiQ6E8iNifgv\nsJ+k3pK2JA2IXbtg+7eAb2WzUVbPyoYBKwN3SuolaZNsls2mNK/HgB9K2lXSttnzWdKA7Yr1mRWW\nfQbcLGk7SbuRWpDuzBtrMwQ4T9JPJG0qaRtJx0s6u57jmLULTk7M2oCImJc33qFolXruN6ROkGa7\nDCXN8lkT+F5E5D7Q/x8wgdSS8xhpjMc/Cvbxe1ILwivAh5I2iIiPSbNxugJPkGb8nMzy3TLldjFp\nltB92e0fLD8QtyGvU7Gy/wJ/Bx4gvR4TgdO/qBxxI+k5nkBqOXoCOI7U2lTXcczaBTX/Fy0zMzOz\nhnPLiZmZmVUVJydmZmZWVZycmJmZWVVxcmJmZmZVxcmJmZmZVRUnJ2ZmZlZVnJyYmZlZVXFyYmZm\nZlXFyYmZmZlVFScnZmZmVlWcnJiZmVlVcXJiZmZmVeX/A/kWwZ4Yxlp7AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x5c76470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nIYRQU/4fIXIuPgDsW8EAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb2b2cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(1)\n",
    "plt.subplot(211)\n",
    "plt.plot(plotdata[\"batchsize\"], plotdata[\"loss\"], 'b--')\n",
    "plt.xlabel('Minibatch number')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Minibatch run vs. Training loss ')\n",
    "plt.show()\n",
    "\n",
    "plt.subplot(212)\n",
    "plt.plot(plotdata[\"batchsize\"], plotdata[\"error\"], 'r--')\n",
    "plt.xlabel('Minibatch number')\n",
    "plt.ylabel('Label Prediction Error')\n",
    "plt.title('Minibatch run vs. Label Prediction Error ')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice the trend for the label prediction error is still close to 50%. Remember that this is time variant, therefore it is expected that the system will have some noise as it trains through time. It should be noted; the model is still learning the market. Additionally, since this time series data is so noisy, having an error rate below 50% is good (many trading firms have win-rates of near 50% and have made money nearly every day [VIRTU](https://en.wikipedia.org/wiki/Virtu_Financial#Trading_activity)). However note they are high frequency trading firm and can leverage themselves up with low winrate strategies (51%). Trying to classify and trade every single day is expensive from transaction fees perspective. Therefore, one approach would be to trade when we think we are more likely to win?\n",
    "\n",
    "Let us try this idea."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average error: 49.00%\n"
     ]
    }
   ],
   "source": [
    "# Now that we have trained the net, and we will do out of sample test to see how we did.\n",
    "# and then more importantly analyze how that set did\n",
    "\n",
    "test_features = np.ascontiguousarray(test_data[predictor_names], dtype = \"float32\")\n",
    "test_labels = np.ascontiguousarray(test_data[[\"next_day\",\"next_day_opposite\"]], dtype=\"float32\")\n",
    "\n",
    "avg_error = trainer.test_minibatch({input : test_features, label : test_labels})\n",
    "print(\"Average error: {0:2.2f}%\".format(avg_error * 100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here we see that we have an error rate near 50%. At first glance this may appear to not have learned the network, but let us examine further and see if we have some predictive power."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "out = C.softmax(z)\n",
    "predicted_label_prob = out.eval({input:test_features})\n",
    "test_data[\"p_up\"] = pd.Series(predicted_label_prob[:,0,0], index = test_data.index)\n",
    "test_data[\"p_down\"] = predicted_label_prob[:,0,1]\n",
    "test_data['long_entries'] = np.where((test_data.p_up > 0.55), 1, 0)\n",
    "test_data['short_entries'] = np.where((test_data.p_down > 0.55) , -1, 0)\n",
    "test_data['positions'] = test_data['long_entries'].fillna(0) + test_data['short_entries'].fillna(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluating our Data\n",
    "Here we take the output of our test set and compute the probabilities from the softmax function. Since we have probabilities we want to trade when there is a \"higher\" chance that we will be right, instead of just a >50% chance that the market will go in one direction. The goal is to find a signal, instead of trying to classify the market. Since the market is so noisy we want to only trade when we have an \"edge\" on the market. Moreover, trading frequently has higher fees (you have to pay each time you trade).\n",
    "\n",
    "We will say that if the prediction probability is greater than 55% (in either direction) we will take a position in the market. If it shows that the market will be up the next day with greater than 55% probability, we will take a 1-day long. If it is greater than a 55% chance that the next day will be below today's position we will take 1-day [short] (http://www.investopedia.com/university/shortselling/shortselling1.asp)(the same as borrowing a stock and buying it back). \n",
    "\n",
    "We will then evaluate this timeseries performance by looking at some more metrics: average monthly return, standard deviation of monthly returns, the [Sharpe ratio](http://www.investopedia.com/terms/s/sharperatio.asp), and the [Maximum drawdown](https://en.wikipedia.org/wiki/Drawdown_%28economics%29). The Sharpe ratio is the average return minus the risk free rate (which is basically zero) over the standard deviation of returns normalized to a year. \n",
    "\n",
    "$$Sharpe = \\frac{r_p - r_f}{\\sigma_p}$$\n",
    "$$r_p = \\text{portfolio return}$$\n",
    "$$r_f = \\text{risk free rate}$$\n",
    "$$\\sigma_p = \\text{standard deviation of portfolio return}$$\n",
    "\n",
    "Generally, the higher the Sharpe ratio, the better you are taking less risk for each unit of reward. This assumes the mean return and standard deviation are sufficient to describe the distribution of returns, akin to an assumption of normally distributed returns.\n",
    "\n",
    "A trading strategy can be profitable even if the winrate is 50% or lower, if the wins are greater than the losses you can have a less than 50% winrate and still make some money (usually classified as momentum strategies). Finally, even if we do not beat the market by trading it individually, we can still outperform it by trading multiple assets that are uncorrelated with each other (or trade a basket of stocks to get market exposure; we are not trading each at the same time). However, that will not be covered in this tutorial. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def create_drawdowns(equity_curve):\n",
    "    \"\"\"\n",
    "    Calculate the largest peak-to-trough drawdown of the PnL curve\n",
    "    as well as the duration of the drawdown. Requires that the \n",
    "    pnl_returns is a pandas Series.\n",
    "\n",
    "    Parameters:\n",
    "    pnl - A pandas Series representing period percentage returns.\n",
    "\n",
    "    Returns:\n",
    "    drawdown, duration - Highest peak-to-trough drawdown and duration.\n",
    "    \"\"\"\n",
    "\n",
    "    # Calculate the cumulative returns curve \n",
    "    # and set up the High Water Mark\n",
    "    # Then create the drawdown and duration series\n",
    "    hwm = [0]\n",
    "    eq_idx = equity_curve.index\n",
    "    drawdown = pd.Series(index = eq_idx)\n",
    "    duration = pd.Series(index = eq_idx)\n",
    "\n",
    "    # Loop over the index range\n",
    "    for t in range(1, len(eq_idx)):\n",
    "        cur_hwm = max(hwm[t-1], equity_curve[t])\n",
    "        hwm.append(cur_hwm)\n",
    "        drawdown[t]= (hwm[t] - equity_curve[t]) \n",
    "        duration[t]= 0 if drawdown[t] == 0 else duration[t-1] + 1\n",
    "    return drawdown.max(), duration.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb231ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "test_data[\"p_up\"].hist(bins=20, alpha=0.4)\n",
    "test_data[\"p_down\"].hist(bins=20, alpha=0.4)\n",
    "plt.title(\"Distribution of Probabilities\")\n",
    "plt.legend([\"p_up\", \"p_down\"])\n",
    "plt.ylabel(\"Frequency\")\n",
    "plt.xlabel(\"Probablity\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRADING STATS\n",
      "AVG Monthly Return :: 0.03%\n",
      "STD Monthly        :: 2.94%\n",
      "SHARPE             :: 0.03\n",
      "MAX DRAWDOWN       :: 35.16%, 75.0 months\n",
      "Correlation to SPY :: 0.00\n",
      "NUMBER OF TRADES   :: 769\n",
      "TOTAL TRADING DAYS :: 4277\n",
      "SPY MONTHLY RETURN :: 0.76%\n",
      "SPY STD RETURN     :: 4.44%\n",
      "SPY SHARPE         :: 0.59\n",
      "SPY DRAWDOWN       :: 55.37%, 8.0 months\n",
      "0.351648144393\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nlgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ae862e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_data[\"pnl\"] = test_data[\"Adj Close\"].diff().shift(-1).fillna(0)*test_data[\"positions\"]/np.where(test_data[\"Adj Close\"]!=0,test_data[\"Adj Close\"],1)\n",
    "test_data[\"perc\"] = (test_data[\"Adj Close\"] - test_data[\"Adj Close\"].shift(1)) / test_data[\"Adj Close\"].shift(1)\n",
    "monthly = test_data.pnl.resample(\"M\").sum()\n",
    "monthly_spy = test_data[\"perc\"].resample(\"M\").sum()\n",
    "avg_return = np.mean(monthly)\n",
    "std_return = np.std(monthly)\n",
    "sharpe = np.sqrt(12) * avg_return / std_return\n",
    "drawdown = create_drawdowns(monthly.cumsum())\n",
    "spy_drawdown = create_drawdowns(monthly_spy.cumsum())\n",
    "print(\"TRADING STATS\")\n",
    "print(\"AVG Monthly Return :: \" + \"{0:.2f}\".format(round(avg_return*100,2))+ \"%\")\n",
    "print(\"STD Monthly        :: \" + \"{0:.2f}\".format(round(std_return*100,2))+ \"%\")\n",
    "print(\"SHARPE             :: \" + \"{0:.2f}\".format(round(sharpe,2)))\n",
    "print(\"MAX DRAWDOWN       :: \" + \"{0:.2f}\".format(round(drawdown[0]*100,2)) + \"%, \" + str(drawdown[1]) + \" months\" )\n",
    "print(\"Correlation to SPY :: \" + \"{0:.2f}\".format(round(np.corrcoef(test_data[\"pnl\"], test_data[\"diff\"])[0][1],2)))\n",
    "print(\"NUMBER OF TRADES   :: \" + str(np.sum(test_data.positions.abs())))\n",
    "print(\"TOTAL TRADING DAYS :: \" + str(len(data)))\n",
    "print(\"SPY MONTHLY RETURN :: \" + \"{0:.2f}\".format(round(monthly_spy.mean()*100,2)) + \"%\")\n",
    "print(\"SPY STD RETURN     :: \" + \"{0:.2f}\".format(round(monthly_spy.std()*100,2)) + \"%\")\n",
    "print(\"SPY SHARPE         :: \" + \"{0:.2f}\".format(round(monthly_spy.mean()/monthly_spy.std()*np.sqrt(12),2)))\n",
    "print(\"SPY DRAWDOWN       :: \" + \"{0:.2f}\".format(round(spy_drawdown[0]*100,2)) + \"%, \"  + str(spy_drawdown[1]) + \" months\" )\n",
    "\n",
    "print(drawdown[0])\n",
    "(monthly.cumsum()*100).plot()\n",
    "(monthly_spy.cumsum()*100).plot()\n",
    "plt.legend([\"NN\", \"SPY\"],loc=2)\n",
    "plt.ylabel(\"% Return\")\n",
    "plt.title(\"TRADING SPY OUT OF SAMPLE\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This plot shows the % returns when we trade using SPY and NN based models only when we are > 55% sure of the predicted directionality.\n",
    "\n",
    "It is interesting to see here how the NN performs during the [financial crisis](https://en.wikipedia.org/wiki/Financial_crisis_of_2007%E2%80%932008). This strategy makes money when many are losing ( refer to the dip in the green line in the plot between 2008-2010)! More importantly, this strategy has a significantly lower volatility (lower standard deviation in the blue line relative to the green line). \n",
    "\n",
    "In the summary statistic, you can also see a lower maximum drawdown of 13.62% for the NN model compared to the 55.37% for the SPY index over the same period of time. Similarly, a higher Sharpe ratio close to 1 from the NN model compared to 0.6 from the SPY index for the same period indicates the NN based decisions to be more stable (less risky). Thus, from a quant perspective it is more likely to be profitable (it makes money in many different market time periods). More importantly, the NN strategy is relatively uncorrelated with the SPY index (only 0.06 close to 0). \n",
    "\n",
    "**Suggested task**: Try to experiment with this network with different stocks and see what happens to the Sharpe ratio when you have multiple trading streams that are uncorrelated with each other. \n",
    "\n",
    "Remember when trading you can trade with leverage, and increase your return profile (as long as you are willing to handle the down times). The best trading strategies are the ones that can consistently make money no matter which market they are trading and no matter what is happening in the market. This \"edge\" is termed alpha in the quant industry.\n",
    "\n",
    "It is important to notice how much of a drawdown you will experience when trading (http://www.investopedia.com/terms/m/maximum-drawdown-mdd.asp?lgl=no-infinite). Since our current model is calculating only the percentage returns where returns are not reinvested, and we are not holding but trading, the larger the drawdown the harder it is to recover (if you lost 90% of your portfolio then have a 90% gain, you will only be at 19% of your starting value). \n",
    "\n",
    "We can only predict on close prices and not the adjusted close prices since the adjusted close prices incorporate data from the future (such as stock splits and dividends) which can incorporate bias into our network. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRADING STATS\n",
      "AVG Monthly Return :: -1.01%\n",
      "STD Monthly        :: 7.03%\n",
      "SHARPE             :: -0.50\n",
      "MAX DRAWDOWN       :: 170.53%, 105.0 months\n",
      "Correlation to SPY :: -0.05\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1b6626d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_data[\"p_up\"] = pd.Series(predicted_label_prob[:,0,0], index = test_data.index)\n",
    "test_data[\"p_down\"] = predicted_label_prob[:,0,1]\n",
    "test_data['long_entries'] = np.where((test_data.p_up > 0.50) , 1, 0)\n",
    "test_data['short_entries'] = np.where((test_data.p_down > 0.50) , -1, 0)\n",
    "test_data['positions'] = test_data['long_entries'].fillna(0) + test_data['short_entries'].fillna(0)\n",
    "test_data[\"pnl\"] = test_data[\"Adj Close\"].diff().shift(-1).fillna(0)*test_data[\"positions\"]/np.where(test_data[\"Adj Close\"]!=0,test_data[\"Adj Close\"],1)\n",
    "monthly = test_data.pnl.resample(\"M\").sum()\n",
    "avg_return = np.mean(monthly)\n",
    "std_return = np.std(monthly)\n",
    "sharpe = np.sqrt(12) * avg_return / std_return\n",
    "drawdown = create_drawdowns(monthly.cumsum())\n",
    "\n",
    "print(\"TRADING STATS\")\n",
    "print(\"AVG Monthly Return :: \" + \"{0:.2f}\".format(round(avg_return*100,2))+ \"%\")\n",
    "print(\"STD Monthly        :: \" + \"{0:.2f}\".format(round(std_return*100,2))+ \"%\")\n",
    "print(\"SHARPE             :: \" +\"{0:.2f}\".format(round(sharpe,2)))\n",
    "print(\"MAX DRAWDOWN       :: \" + \"{0:.2f}\".format(round(drawdown[0]*100,2)) + \"%, \" + str(drawdown[1]) + \" months\" )\n",
    "print(\"Correlation to SPY :: \" + \"{0:.2f}\".format(round(np.corrcoef(test_data[\"pnl\"], test_data[\"diff\"])[0][1],2)))\n",
    "(monthly.cumsum()*100).plot()\n",
    "(monthly_spy.cumsum()*100).plot()\n",
    "plt.legend([\"NN\", \"SPY\"],loc=2)\n",
    "plt.ylabel(\"% Return\")\n",
    "plt.title(\"TRADING SPY OUT OF SAMPLE\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "The plot above shows the % returns when we trade every day using SPY and NN based models as compared to a confidence based trading show in previous plot. With frequent trading the volatility is higher and transaction fees (not accounted in this plot) will greatly eat into any profits.\n",
    "\n",
    "\n",
    "## Suggested exercises\n",
    "Try changing the batch size, the network itself, the activation functions, and many other features and see how much it affects the output. Notice how it can change dramatically? This means what you have been training on might be noise and you need to refine either the model or more likely the inputs to the network itself. \n",
    "\n",
    "After you have completed the aforementioned exercise, experiment with applying the trained network to other to other timeseries data. Pick a stock in the S&P 500, pick something that is uncorrelated with the S&P 500, try a completely random dataset. How do you expect each of those to do? Should the performance match up with S&P 500 out of sample performance? How about the random data?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.49\n"
     ]
    }
   ],
   "source": [
    "# Repeatable factor (used for runtime verification)\n",
    "print(error)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Appendix\n",
    "A great resource for getting started as a Quant: https://www.quantstart.com/\n",
    "An online back-testing and open source trading platform, hosts quant competitions and a forum: https://www.quantopian.com/\n",
    "[A summary of backtesting and biases](https://www.quantstart.com/articles/successful-backtesting-of-algorithmic-trading-strategies-part-i)\n",
    "[For those who want to automatically trade in python](https://github.com/blampe/IbPy)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
back to top