Skip to content

Instantly share code, notes, and snippets.

@alkutnikar
Created February 11, 2015 09:08
Show Gist options
  • Save alkutnikar/1d0ffea7ea0ec63ee1d8 to your computer and use it in GitHub Desktop.
Save alkutnikar/1d0ffea7ea0ec63ee1d8 to your computer and use it in GitHub Desktop.
Predicting Prices of Oil and Gold
{
"metadata": {
"name": "",
"signature": "sha256:85226105bfc8d5c74c663d43ca0a683dcad76665e7a857589e2856e238444e36"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Predicting Prices of Oil and Gold"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Authors: Ayush Sengupta, Benjamin Lin, Komal Sanjeev and Sreevathsan Ravichandran **\n",
"\n",
"**Guided by: Professor Steven Skiena**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**[Introduction](#intro)**\n",
"\n",
"**[Data Cleaning & Extraction](#clean)**\n",
"\n",
"**[Observations](#observations)**\n",
"\n",
"**[Baseline Model](#baseline)**\n",
"\n",
"**[Advanced Models](#advanced)**\n",
"\n",
"**[Evaluation, Results & Comparison](#evaluation)**\n",
"\n",
"**[Final Model & Prediction](#prediction)**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"intro\"></a>\n",
"#Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook contains code for machine learning model built to predict prices of oil and Gold on January 1st 2015 as of December 1st 2014. \n",
"Machine learning algorithms are:\n",
"\n",
"- Baseline Model \n",
" * 0.0 - Price remains constant as last month\n",
" * 0.1 - Price is average of last k months\n",
" * 0.2 - Price is calculated using a autoregressive model where the co-efficients are determined using PSO swarm algorithm.\n",
" * 0.3 - Weighted Average of the last k months. Weight of the ith month in the history is (k-i+1)\n",
" * 0.4 - Cubic Weighted Average of the last k months. Weight of the ith month in the history is (k-i+1)^3\n",
"\n",
"- Autoregressive and Multiple Linear Regressive Model\n",
"- Nonlinear Regressive Model\n",
"- ARMA Model"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Importing libraries used in this notebook\n",
"import numpy as np\n",
"from __future__ import print_function\n",
"import prettyplotlib as ppl\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"from pandas import Series, DataFrame\n",
"from sklearn.metrics import mean_squared_error\n",
"from math import sqrt\n",
"from IPython.core.display import HTML\n",
"import brewer2mpl\n",
"import prettyplotlib as ppl\n",
"import seaborn as sb\n",
"import scipy.stats as stats\n",
"from pandas import Series, DataFrame, merge\n",
"from sklearn.metrics import mean_squared_error\n",
"import statsmodels.api as sm\n",
"from statsmodels.graphics.api import qqplot\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"clean\"></a>\n",
"# Data Cleaning & Extraction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Import Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Kindly enter the input and output folder path"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Monthly data for past 30 years\n",
"\n",
"#Oil and Gold\n",
"oilDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/CRUDE_OIL_WTI_US_ENERGY_Monthly_198601-201410.csv'\n",
"goldDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/GOLD_Montly_198410_201410.csv'\n",
"#Factors\n",
"sp500DataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/YAHOO_SP500_INDEX_Monthly_198410-201410.csv'\n",
"nyseDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/YAHOO_NYSE_INDEX_Monthly_198410-201410.csv'\n",
"usdIndexDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/USD_Index_Monthly_198410_201410.csv'\n",
"csiDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/CSI_Monthly_198410-201410.csv'\n",
"infDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/INF_Monthly_198410-201410.csv'\n",
"\n",
"#CPI - For Inflation Adjustment\n",
"cpiDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/CPI_USA_Monthly_198410_201410.csv'\n",
"\n",
"#Read CSV to pandas data frame\n",
"dfOil = pd.read_csv(oilDataPath)\n",
"dfGold = pd.read_csv(goldDataPath)\n",
"\n",
"dfSP500 = pd.read_csv(sp500DataPath)\n",
"dfNyse = pd.read_csv(nyseDataPath)\n",
"dfUsInd = pd.read_csv(usdIndexDataPath)\n",
"dfCsi = pd.read_csv(csiDataPath)\n",
"\n",
"dfCpi = pd.read_csv(cpiDataPath)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Adjust for Inflation"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def adjustForInflation(quantity):\n",
" return quantity * (dfCpi['CPI'][0]/dfCpi['CPI'])\n",
"\n",
"dfOil['Oil_Value'] = adjustForInflation(dfOil['Oil_Value'])\n",
"dfGold['Gold_Value'] = adjustForInflation(dfGold['Gold_Value'])\n",
"dfSP500['SP500_Value'] = adjustForInflation(dfSP500['SP500_Value'])\n",
"dfNyse['NYSE_Value'] = adjustForInflation(dfNyse['NYSE_Value'])\n",
"dfUsInd['USD_Value'] = adjustForInflation(dfUsInd['USD_Value'])\n",
"dfCsi['CSI_Value'] = adjustForInflation(dfCsi['CSI_Value'])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Generate Data Matrices"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Generate data frame for oil/gold\n",
"\n",
"def generateOilDfMaster():\n",
" dfMaster = merge(dfOil,dfSP500,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfNyse,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfUsInd,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfGold,on='Date',how='inner') \n",
" candidatesListOil = ['Oil_Value','SP500_Value','NYSE_Value','USD_Value','Gold_Value']\n",
" return dfMaster, candidatesListOil\n",
"\n",
"def generateGoldDfMaster():\n",
" dfMaster = merge(dfGold,dfSP500,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfNyse,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfUsInd,on='Date',how='inner')\n",
" #dfMaster = merge(dfMaster,dfEurousd,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfCsi,on='Date',how='inner')\n",
" dfMaster = merge(dfMaster,dfOil,on='Date',how='inner')\n",
" candidatesListGold = ['Gold_Value','SP500_Value','NYSE_Value','USD_Value','CSI_Value','Oil_Value']\n",
" return dfMaster, candidatesListGold"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"observations\"></a>\n",
"#Observations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Correlation Matrix and Heatmap"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Compute correlation matrix and plot \n",
"def computeCorrelation(dataFrame, candidatesList,name):\n",
" fig, axes = plt.subplots(figsize=(12,12))\n",
" dfCorr = dataFrame[candidatesList]\n",
" #sb.set_context(\"talk\", font_scale=1.2, rc={\"lines.linewidth\": 2.5})\n",
" plot = sb.corrplot(dfCorr, method=\"pearson\")\n",
" axes.set_title(\"Correlation Matrix - \" + name )\n",
" #plt.savefig('Correlation_'+candidatesList[0]+'_.png')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dfMasterOil,candidatesListOil = generateOilDfMaster()\n",
"computeCorrelation(dfMasterOil,candidatesListOil, \"Oil\")\n",
"\n",
"dfMasterGold,candidatesListGold = generateGoldDfMaster()\n",
"computeCorrelation(dfMasterGold,candidatesListGold, \"Gold\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAnoAAAJOCAYAAAAgQaq3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcjXX/x/HXOTNjGYyZYSyRpfhak2yhbiYkldJd3aXu\nFiRbRLYskSVS9pSQUNpvorh1U37JEtkrwtcSMQwzY+xLM2fO748Zp7GmycyZM9f7+XicR+c613XO\n9bl8OzOf+XyXC0RERERERERERERERERERERERERERERERERERERERERERERyJJe/AxDJ6Ywx3YHW\nQAgQDCwE+lprj2XS+coA2621IX9ynAGKWmuXGWMeAO6z1j5zjWJYAlQASlhrU9K9/gTwPhBtrV36\nJ5/xrLX2ncvsew/4zFr732sUbxjwCnAXkAJ4gA+B16y1KcaYOsAQa20zY8wMUv99h12Lc4uIZCa3\nvwMQycmMMa8B/wKaWmsrAtWAXMD8v/m51+KPtAeBBgDW2rnXKslL5yzQ6ILXWgK//dkbjTFBwOuX\n2eey1j59DZM8N/BfIC9QzVpbidR/lzuAqQDW2tXW2mZpb/GmPUREsr1gfwcgklMZYyKBLkB1a+0B\nAGvtKWNMZ6BJWrKWGxgHRJNaSVoA9E6rIu0G3gGeApoC7wHLgIeAZ4wxW4AJQB1Sv8tDrbUzLojB\nnXZME1IrisuBNsDdQB/gd2NMBLAJ+Le19s60uCeRmpR6gPesta+nfV5KWjzdgeKkVrzGXeLyvcD/\ngMeAb9LeGwGUBX4lrTfBGFMPeBMITbv+5621i4GvgYLGmF+Ae4AZ6a69rTFmeNq/zWngJaCmtdZr\njJkCHLHW9v6T5knvbqAE0PBc9dFae9gY82/gV2PMCOA64B1rbfm096g3REQCgip6IpmnLrDPWmvT\nv2itPWut/a+11gt0IzXJqAzUAP5BanIEqclSSWttBWvtnrTtGtbaytbalcBoINlaWwG4FRhsjKly\nQQwPAg3TPr8SUBN41Fo7D5gDjLPW9rzgPcOBhLQK5O1AJ2NM/XT7K1trawD3AcOvUF2cDzQzxpzr\nQn4I+CLdtQFMAUanVdFGkJpgQmpXtyftWndfcO3fp217rbWfk1ohbGuMuYXUKtzAy8RzOQ2B/6Xv\nYgaw1sYBq0mt7qmCJyIBSYmeSOaJBA7+yTH3AFOstSnW2jOkjgtrmm7/hd2TX6V73hx4A8BaG09q\n4vZg+oOttbOA2tZaj7X2LLCW1KraOZdK0u4BJqa9PxH4nNSxa+fMTPvvBiAPUOQy13YcWJH2eQCP\nAp9ecEwN4JO058uBG64Q11eXeA3gOVKrkxOBTmn/jn9FBBB/mX0HSW1HEZGApK5bkcwTT2q17kqi\ngMR020c4P3E6fMHx6bfDgc+MMclp23mA/6Q/2BgTBUxIq3alAMWAsekOuVSl6sKYEkntpj3nKIC1\n1pM6n4OgS3zGOR8DjxtjVgLFrbU/pr3nnMeALsaYAn/yOXDxvwVpccQYY1YB9UjrJr5QWjc3pFZY\n77xgdzypXbOXUozUZE9dtSISkJToiWSeVUBRY8wt1toN515M68p8GRhGahJRON17CgGxV/n5+4EW\n1tpf0r+YNuv2nGGkToqoaq1NMsZ8cBWfey6mfWnbhfnzyuSleEkdc/gWqQndhUloCVK7butYa38y\nxpQHtv3VkxhjbgZuATYCHUmrRqaX1jV8OV8BHxtjcllrf0/3uVFALeBp/qg0iogEFHXdimQSa+0R\nUmeOvm+MuRHAGBNKanJT3Vp7mtRxbM8YY9zGmHzAE1zcXZte+srSF6QmNhhjgo0xY9Mqd+lFAZvS\nkrybgduAAmn7kkjttrzQfKBd2ucWBv75JzFdVlp38SKgFxd320YBJ4FtxpjgdOfMlxab2xiTP93x\nF1XV0iabTAFeALoCLxljLledu1yMS4H1wHtp7XNuIs0HwHRr7YWzhFXdE5GAoURPJBNZaweTmoh8\naYzZSuoYuQP8MZZuArAX2AysAealjau7nPRdrQNInZm6ldRZsy7gxwuOGw10SJu92hHoQerEhQeB\neWn7PuP8JUNeAiLSuju/A1611q69xPkvtX0pH5M6uWNr+hettRtJrfhZUsfyfUlqFfRbUquVy4E9\naTNzL3eujkCMtXahtXYvqdXDN68ipgu1JLWSujHtupcCi621z6c7xpvuv5qcISIiIiIiIiIiIiIi\nIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi\nIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi\nIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIuI/rivtTElJ8bpcVzxERERE5C9xKbnIMsFX2uly\n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\nb0yeiIiIZA4levK37Nixnb59e+DxeLjxxnLUrFmbxYsX0arV4xw5ksjYsW8RGVkIj8eD2+2mYMHw\n896vap6IiPiFQ37/KNGTDIuNjaV7987cc8991Kt3GzfffAvJycmcPHmSNWtWYUxFKlSoCHDJLlol\neSIiIplLiZ5k2M8/b6R06TJ06NCZlJQUZs6cwaZNP7Jhw3py587NoUMHeemlFxk6dATBwfpfTURE\nspFsss5dZtNvX8mwQoUKs3HjeoYPH8yvv+5k584dREUV4ZZbavD998u59dZ6/PTTRnbu3EG5cuX9\nHa6IiIjjKNGTDLvppptp1aotH330PmXK3MCzz3aiWbN7cLnc9O3bgzp16vHEE60oU6asZteKiEj2\nolm3IlcWEhLCM8+0p0WLBylcOIozZ86QJ08evv76f+zd+xsVK1akVKky/g5TRETEsZToyd9WuHAU\nycnJDBs2iDNnTvPjjxvp3bvfeUmeqnkiIpKtOOT3khI9uSZOnTpFREQEuXIV47HHnqRGjVqOuXet\niIhIdqVET66JsLAwund/0betJE9ERLI1zboVyTgleCIiIv6nRE9EREScxyEFCWfULUVEREQcSBU9\nERERcR6HrKPnjKsUERERcSBV9ERERMRxvBqjJyIiIiKBTBU9ERERcR6HrKPnjKsUERERcSBV9ERE\nRMR5VNETERERkUCmip6IiIg4jmbdioiIiEhAU0VPREREnEdj9EREREQkkKmiJyIiIs6jMXoiIiIi\nEshU0RMRERHncTuj1uWMqxQRERFxIFX0RERExHG0jp6IiIiIBDRV9ERERMR5tI6eiIiIiAQyVfRE\nRETEcbyq6ImIiIhIIFNFT0RERJxHs25FREREJJBdMZ31er3erApEREREnMHl8n857dgP8zM9xwm7\ntfkVr9MYMxa4FfACXa21a9PtuwMYDniAbUBba+1fjvlPu24TX+30Vz9T/CCi70QWFa3i7zDkKjQ9\nuJm4uOP+DkOuUlRUAbVXgFBbyV/i51zTGNMQKGetrW+MqQhMA+qnO2QKEG2tjTHGfAY0A776q+dR\n162IiIhI1msEzAGw1m4FIowx+dPtr2mtjUl7HgdEZuQkSvRERETEeVzuzH9cWTEgPt12HFD83Ia1\n9hiAMaY40BRYkJHLVKInIiIi4n8uUsfq+RhjigBfAh2ttYkZ+VAtryIiIiKO4/X/fJD9pFb1zrkO\n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\nDe2m8QOqp3sKkipA6vstlqhok4GTQwjvACVAN4AQwk3AW8ByoANwVwhh888Mi6LojzsbsNzcMpXK\n0H/Uj4UAABy6SURBVF8GSZKUtWKxWNo3sXvjr8UVXuN0blUl7d9zl4let9sW74l56Ad65I4G9B1d\nnO5paDcMuaIK3e9amu5paDeNH1CXpUvXpHsa2g1161b390q7LZmBGyZXBHv0JEmScpSrbiVJUt5J\n96rbPcVET5IkKUeZ6EmSpLyTL8tNTfQkSZJylImeJEnKO+m+BdqeYqInSZKUo0z0JElS3knaoydJ\nkqRsZqInSZLyjvvoSZIkKauZ6EmSpLzjPnqSJEnKaiZ6kiQp7yTdR0+SJEnZzERPkiTlHXv0JEmS\nlNVM9CRJUt5xHz1JkiRlNRM9SZKUd7zXrSRJkrKaiZ4kSco7rrqVJElSVjPRkyRJeSflnTEkSZKU\nzUz0JElS3nHVrSRJkrKaiZ4kSco7rrqVJElSVjPRkyRJecdET5IkSVnNRE+SJOWdZMp99CRJ2kYq\nX653STnCRE+SVK7NxV0sFqO4+FuqVq2W5hlJP1y+/JvFQk+StEuxWIw335zGc889Q40aNTjyyHZ0\n7nwyVapUTffUJJXDS7eSpHLFYjHmzv2ce++9i/PPv4iZM2fwpz+9RElJiZdylbVSqYp/ZAILPUnS\nd6RSqW2KuHXr1tGsWXM+/fSvJBKV6N27Dx9//BHz589L4ywl7YqXbiVJ3xGLbVyROHv2X1iyZAlH\nHtmOOXMiZs36mKFDf0ezZs158MHh/Pznp7L//gekebbSv8973UqS8s7WKd7atWv53e+GMWbMSP76\n11nceutdVK1alccem8ADDwzhs8/+xr77NkrjbCXtioWeJAmAZDK5JclbunQJ1apVo3fvPtStW48J\nEx5i7dq1PPDA76lSpSpFRUXccssdtGp1uH16ykqpVKzCH5nAQk+SxMKFC3jiicdZvXoVCxcu4Jxz\nTuf555+lZctWXHVVb+LxOBMnjmPFiuXcd9/93H77II4/vpNFnvQjCiHsFUJ4PITwTgjhzRDC/uWc\n+4cQwoRdjWmhJ0li0qSJPPzwaKZOnUKVKlU46aRTGDFiGC+//AIHH9yS7t0vY9GihTz66DiWLPmG\nRCIBbOzl25wCStkkQ1fdXgAsj6LoOGAQcM+OTgohnAwcAOzyU1yMIUl5LJVKEYvF6Nv3ZkpKSpgy\nZTKpVIqrr76eypX3ZsiQe1i2rIh99qnJsccez8UXd6devfrpnraUqzoDj256Pg0Yv/0JIYTKwM3A\nQODsXQ1ooSdJeWrzFiqbE7kBA+7knnvu5KmnngCgR48rSCQq8fDDo9lrr70YOPA+mjUL29wpQ8pW\nGbrqtgGwFCCKomQIIRVCqBRFUelW5/QHRgKrd2dACz1JylObL7vOmPEBn332N/bbb3/697+VwYMH\n8fTTk0kkElx33Q106dKVWCzGAQc03aYwlPT9hRAuBXpsd7jddq+3+Z8thNAMODSKottDCJ1253Ms\n9CQpzyxcuIB160o44IADeeutN7jzzgG0anU4Tz45iXnzvuCmm26hcuUCHnnkYdavX0+3bj2Ix+Mu\nvFBOSfcf5yiKxgHjtj62aXFFQ2B2CGEvILZdmncqcGAIYTpQA6gbQrghiqKhO/scCz1JyiMbNmxg\n4MDbKCn5FxMmTOLjjz+iZ88rSSQS/P3vn/Lii8+TSCTo2vU85s2bx+GHtyEe37huzyRPuSTdhd5O\nvAr8ctN/Twfe2PrNKIqGA8MBQggdgW7lFXngqltJyiuJRILTTjuTb7/9lmnTXqVNmyNZsGABkyY9\nxsCBg9lvvyaMHTuK3r170afPjbRpc4RJXgWaMeMDLrvs11xxRXceeeThnZ43d+7nnHBCexYvXgzA\nO++8yWWXXcyVV/ZgypQn99R0VfEmA4kQwjtALzb24xFCuCmEcPQOznfVrSQJiou/BWJUqVKFdu3a\nM3XqFN59921uvvk29t57bz766APi8QSdOnXmP/7jNBo33o/GjZuke9o5b/jw33L//SMpLKzL1Vf3\npFOnE2nSZNut01KpFCNHDqdRo58BGze2vv/+IUyY8Dg1auxDnz7XcPzxnahbt146vkLWysTFGFEU\nJYHuOzg+eAfH3gLe2tWYJnqSlOMWL/6a7t1/xahRw/nyy/mbiorreeON13j77T/TpMn+FBcXM2jQ\n7QwePIjCwro0a9b8O6ty9eNauHABNWrUoG7desRiMY4++lhmzvzwO+e9+OLzHHlkO2rWrAXAqlUr\nqV69OvvsU5NYLEbr1m356KPv/pwEFnqSlPNq165D8+Yt+Oyzv3P55d149tmnqVOnDhde+GteffVl\natasyZAhD9CtWw9GjBjDYYe13lLgWeRVnBUrlm8p3gBq1apFUVHRNuesWrWS1157hXPPPX/LsZo1\na1FcXMyCBf+ktLSUv/zlE5YvX7bH5p0rMnTD5B+dl24lKYclk0kKCgq44457mDMnYtq0Vxk3bjQz\nZ86grKyUDRs2MGvWJ7Rr156mTZuRSCTsydtDvvvr/N1f99GjR25ZLLP5nFgsRr9+Axg06HZq1apN\n7dp1/D3TTlnoSVIOi8fjJJNJ4vE4zZoFmjULHHXU0Xz44fu8++7bfPnlPJYvX84RRxy1Jb0zxatY\nU6c+zbRpr1GzZq1tkrglS5Z8p89u5swZzJ37BQDz58/l5pv78sADo2jb9kjatj0SgMGDB9Kw4b57\n7gvkiGQy3TPYMyz0JCnHbd4eZfPl2DZtjqBly1Z06dKVsWNHceKJp2yVGKmidelyDl26nAPARRed\ny+LFX1NYWJfp09/lttsGbXPuk08+t+X5Nddczi233EGNGjW44YZrGTDgTmKxOB99NINeva7Zo99B\n2cNCT5Jy2OY0D7ZN6hKJBA0aNNxULMRIJpP25KXBDTf05/bbbwHgxBNPoVGjn7FsWRHjx4+lb9+b\nd/pzp59+FtdffzVlZWX07NmLGjX22VNTzhn5crXbQk+ScsSyZUUsXLiA1atX06LFQRQW1iUej1NW\nVrZNYpdMJre8jsViLrxIo8MOa83o0dvet75OncIdFnkjRozZ8rxjxxPo2PGECp+fsp+FniTlgM8/\nn8Ptt99MPB5n3ry5NGmyPyef/Asuvrg7iURiS7K3dcL35pvTqF+/AQcddEiaZy/tefmS6Lm9iiRl\nublzP+fyy7tx6qmnc/fdQ3nssSdp2PCnvPTSH3n00Y230ty+yJs6dQpDh97D+vUb0jl1SRXMQk+S\nslhxcTHDht1HKgUXXHAxjRr9jCZN9ueGG/rTuHETXn/9FYqKirb04MHGIu+hh0bRv/9tHHbY4Wn+\nBlJ6JFMV/8gEFnqSlMWqVKnCGWecRfXq1bn66p6sW7cOgHr16nP99X2ZP38es2fPIh6PE4vFmDJl\nMuPGjeGWW+7g2GOPS/PsJVU0Cz1JykL//OdXjBnzIKNHj6RNmyO2FHV9+lzD+vXrAahRowZNmzYj\nHt+48KKoaCkTJ07gxhtv5phjOqRz+tqJl176I598MhOAcePGsHjx11veu/vuO9I1rZy0+RZ/FfnI\nBC7GkKQs8/nnc7j66p40abI/P/nJTygsrEunTicCcP/9Q7juuisZNeph/vKXWSxcuID69RsAUFhY\nl4kTn2CffWqmc/raiQceGMrixYsoKKhM7969aN26LYsXf03Llq14//33WLp0KUOG3E2HDsfTvr2F\nunaPiZ4kZZF160q4//77OO20Mxk9ejxDh/6ORYsWMn36u9StW59rr/0NS5Z8Q5cu/0G/fr+hb9/+\ntGhxEMlkklQqZZGXwa677gZisRg1atTg9dffpaysjIYNf8qZZ57NjTfeQmlpKYcccqhF3o/Ee91K\nkjLK0qVL+PzziIKCAurVq8/XXy/ikUce5r333mbVqlUccEBTLrzw1/TseRWPPvowvXv34YQTTnKf\nvCwxZ07E8cefwNKlS/jzn1/nkksu46OPPqSsrIy3336TO+64mxdffG7XA0lbsdCTpCzw7bdr6dev\nD7Vq1WLevLl89tnfGT9+DGVlZRx11NGceWZX7r33LmbN+pi+fW+mbdsjqFOn0DteZJHN9yLe2ub7\n2Z555tkAXHll7z0+r1zlvW4lSRmjatVqnHbamUydOoUDD2zGhg2ltG7dhpYtW3HQQQdTtWo1fv7z\nU1myZDFlZWXUqVMIYJEn5Tl79CQpg61evXrL87POOofzzruARYsWUr16NY47rhOtW7elqKiIF16Y\nytNPP8FJJ/2CSpX+/9/wFnnSjtmjJ0lKqxUrVnDhhefwX/91IRdf3B2AU089HYAJEx5i0qRHqVGj\nJs888yT16zegX78BtG9/7JaePEmy0JOkDFW5cmU6duzMuHFj2HvvvTn33AuAjcVeMlnG0KH38tBD\nEzn11NOpVq0aDRv+NGP27pIyXabcuaKiWehJUoaqUqUK11xzHVWq/IQRI+4nlUpx3nkXAnDqqWcw\nefIkioqW0r79sdv8nGmepM0s9CQpg1WpUpVLL70cgJEjH6C0tJQTTzyFv/1tNitXrqRevfrbnG+R\nJ+2efAm/LfQkKcNtLvaqVq3G6NEjeeGF51izZg3XX9+Xpk0PtCdP0k5Z6ElSFqhSpSrdu/ekY8fO\nrFq1klq1arP//gfYkyd9T6k8adKz0JOkLNK06YFbnm8u8kzzJO2MhZ4kZSkLPOn7y5NAzw2TJUmS\ncpWJniRJyjv50t5qoidJkpSjTPQkSVLeSeZJk56JniRJUo4y0ZMkSXnHHj1JkiRlNRM9SZKUd0z0\nJEmSlNVM9CRJUt5J5kmkZ6InSZKUo0z0JElS3kkl0z2DPcNET5IkKUeZ6EmSpLyTskdPkiRJ2cxE\nT5Ik5Z1kBvbohRD2Ah4BGgNlwCVRFM3b7pzDgHFACnguiqKB5Y1poidJkpQZLgCWR1F0HDAIuGcH\n54wFegBHAQeHEH5S3oAmepIkKe9kaI9eZ+DRTc+nAeO3fjOEUB+oGkXRrE2HLtjVgCZ6kiRJmaEB\nsBQgiqIkkAohbB3KNQGWhxAmhBDeDSH03tWAJnqSJCnvJNMc6IUQLmXjJdittdvudWwHr/cHzgRK\ngOkhhNeiKPr7zj7HQk+SJGkPi6JoHBsXVWwRQpgANARmb1qYEYuiqHSrUxYDf4uiaMWm898FDgF2\nWuh56VaSJOWdVDJV4Y/v4VXgl5uenw68sfWbURTNB6qHEGqFEOLA4cA/yhvQRE+SJOWdzFyLwWTg\n5BDCO2y8NNsNIIRwE/BWFEXvA9cDL7Nxe5WXoyiaXd6AFnqSJEkZYNMCjO47OD54q+cfAkfv7pgW\nepIkKe8k070aYw+xR0+SJClHmehJkqS8k6EbJv/oTPQkSZJylImeJEnKO6lkumewZ5joSZIk5ajt\nb62xjVS+XMCWJEl7TCwWK7f+2BP6jPq2wmuc315ZNe3fc5eXbr/49Wl7Yh76gZo++gILok/TPQ3t\nhkahJSs/mZbuaWg31Wx9IsOm5sk1niz3my5xli5dk+5pSBnFHj1JkpR38uWipT16kiRJOcpET5Ik\n5R3vjCFJkqSsZqInSZLyTp606JnoSZIk5SoTPUmSlHdS9uhJkiQpm5noSZKkvJPMkyY9Ez1JkqQc\nZaInSZLyjj16kiRJymomepIkKe+Y6EmSJCmrmehJkqS8kyeBnomeJElSrjLRkyRJeccePUmSJGU1\nEz1JkpR3Ut4ZQ5IkSdnMRE+SJOWdpD16kiRJymYmepIkKe/YoydJkqSsZqInSZLyjvvoSZIkKauZ\n6EmSpLxjoidJkqSsZqInSZLyTtJVt5IkScpmJnqSJCnv2KMnSZKyTr5sBKzdY6InSVKOSKVSpFIp\nYrEYRUVLWbduHfvu2yjd08pI+VIQW+hJkpQjYrEYsViM119/hQkTHiIWi7Pvvvty9dXX87OfNU73\n9JQGFnqSJOWQ5cuX8dhjE7jxxlt4+eUXePfdt9l7773TPa2Mk8zAHr0Qwl7AI0BjoAy4JIqiedud\nMwjoyMb2u2ejKBpS3pj26EmSlOWSySQApaWlFBRUZs2aNUyaNJFZsz7h7ruH8OGH7zNlyuQ0z1K7\n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\n",
"text": [
"<matplotlib.figure.Figure at 0xb5566a6c>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE\nRERERERERERERERERERERERERERERERERLKM7VobU1NTHTbbNXcRERERuSk2JRcu43utjTabjdjY\n066KxSuFhhZQH7uA+jnrqY+znvrYNdTPkpPY3R2AiIiIiGQNJXoiIiIiOZQSPREREZEcSomeiIiI\nSA6lRE9EREQkh1KiJyIiIpJDKdETERERyaGU6ImIiIjkUEr0RERERHIoJXoiIiIiOZQSPREREZEc\n6pq/dSsiIiIiWcOyrErAV8B4Y8y7l2x7CBgBpADLjDHDb+UYquiJiIiIuJhlWXmBccDyq+wyCXgG\nqA80sSyr3K0cR4meiIiIiOslAk8ARy7dYFnW3cBxY0y0McYBLAMa38pBlOiJiIiIuJgxJsUYk3iV\nzUWA2EyPjwJFb+U4mqMnIiIiXmepr+XI6mM8kWxst/jSS2O71fdRRU9ERETEwxzCWdVLVxyIvpU3\nUkVPREREvI7N75aLZDcu+Yb2uiwQY8xBy7ICLMsqiTPBexx48VZCUKInIiIi4mKWZdUB3gPCgGTL\nstoD84D9xpjFQAfg07TdPzPG7L2V4yjRExEREa9j93VBRe8ajDHrgYrX2L4GqPe/Hkdz9ERERERy\nKFX0RERExOvY/Lyj1uUdrRQRERHxQqroAQ6HA5vNvWP1IiIi4jrunqPnKl5f0XM4HDgcznUJ4+Ji\niY6OcnNEIiIiIreH11f0bDYbNpuNH35Yzrx572Gz2SlWrBidO/fgzjtLuDs8ERERyQIuWUfPA3h9\nRQ/g+PFjfPTRPPr2HUiFChXZsWM7uXPndndYIiIiIv8Tr63opaamYrfbSU5Oxt8/F6dPn+aTTz7k\n4MGDRESMYcOG9Zw/f45nn23m7lBFRETkNtMcvRzObrezbt1aZsyYyrlzCYSHN2L9+l94+ulnqFSp\nCgcPRnLo0CGSk2/s90tEREREPI3XVfRSUlLw8fEB4I8/trFgwXxy5cpF+fKVOHHiBO++O4nNmzey\nYcN6Ro4ch6+v13WRiIhIjuctc/S8JotJSkrC19cXHx8ftm//nbJl76Nt247Y7XY++GAOLVq8xvPP\n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\nq1YdAAoVCuGDD+bwxRefYrf7cPJkPPff/wAxMTEMHTqSatVqaLhWREREbgtPWecuq7kt0bPbfYiO\njmL//n1UrVqd5ORk/v77L95+ezi//baV//znW1q0eJ0CBQrg4+ODw5HlcyZFRETES3jK8idZzW2J\nXkhICE888TQffjiXkJBQHnjgQQYMeBu73c6WLZu555578fHxwZ42hq5KnoiIiOQklmVNAGoDDqCb\nMWZTpm2dgJeAFGCTMabHrRzDrTMRW7RoSZkyZRk/fhRff/0l+/bt4bvvlvLFF5/y9NPPUqBAASV4\nIiIictu5+yfQLMt6AChtjKkHtAImZ9pWEOgNNDDG3A/cZ1lW7Vtpp1uvug0LK0zv3v2ZO3cWY8e+\nQ5EiRUlNTaV//7eoV6+B5uSJiIhITtUI+ArAGLPLsqwgy7LyG2POAIlptwKWZZ0F8gLHbuUgbl9H\nLyysMP36DeKVV17H4XDg4+NDkSJFNSdPREREsowHLK9SBNic6XEsUBTYY4w5b1nWYGAfcB74yBiz\n91YO4vZEL90ddxS77DlV80RERMRL2HDO1cOyrADgTcACTgMrLcuqaIz542bf1GMSvUspyRMREZGs\n4gHLqxzCWdVLdwdwOO1+OWC/MeY4gGVZPwM1gJtO9NxetxQRERHxQt8DzwFYllUNiDbGnE3bFgmU\nsywrd9rjGsCeWzmIx1b0RERERLKKuyt6xph1lmVttixrLc4lVDpZlvUqcNIYs9iyrDHAKsuykoG1\nxpifb+U4SvRERERE3MAY0/+Sp/7ItG0WMOt/PYYSPREREfE67q7ouYrm6ImIiIjkUKroiYiIiNfx\ngHX0XMI7WikiIiLihVTRExEREa9j99EcPRERERHJxlTRExEREa+jq25FREREJFtTRU9ERES8jq66\nFREREZFsTRU9ERER8TqaoyciIiIi2ZoqeiIiIuJ1VNETERERkWxNFT0RERHxOrrqVkRERESyNVX0\nRERExOt4yxy96yZ6oaEFXBGHV1Mfu4b6Oeupj7Oe+tg11M+SU1w30Ysy210Rh9cqblUgNva0u8PI\n8UJDC6ifs5j6OOupj11D/ewdNEdPRERERLI1zdETERER72Pzjjl6quiJiIiI5FCq6ImIiIjX8Zar\nblXRExEREcmhVNETERERr6OrbkVEREQkW1NFT0RERLyO5uiJiIiISLamip6IiIh4Hc3RExEREZFs\n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\nRERugM2e9bdrKwLEZXocCxRNf2CMOQVgWVZRoAmw7FaaqURPxMPExcWxf/8+AO69tww1a9Zm5coV\nBAUF8dhjT5GSksz69Ws5c+YMzZq9xMKFSyhXrjygJVRERLIxG865ehksywoDvgE6GGNO3Mqb6mIM\nEQ9y5swZWrZsTqFChWjU6GFefbUVbdp04Pfff2PixDGMGTOJSpWq8MsvP7N06dcMGzaSoCBnNV+/\nenG5jRt/Zdasafj4+FCnTj1atmx90faJE8ewb99eAM6fP0+BAgUYP35qxvYZM6ayY8cfTJky06Vx\nZyfX6+N0+/fvpVWrFnz66VcUKVKExMRERo8ewcGDkcye/aGLo85eJk8ex59/7sBmg27delO27H0Z\n25577kkKFy6S8fOGb789guDgYMaMeYfIyH34+vrRp09/SpQo5aboPZfD/efLQzireunuAA6nP7As\nKwBnFW+AMeaHWz2IEj0RD5I/f37693+LNWtWM3/+h6xbt5aXX27Jo48+zk8/rWLr1s307/8WO3Zs\nJ1++fJQqdVdGgqck73KTJo1jwoSphISE0rlzW8LDG1Oq1F0Z27t375Nxf96897jrrrszHh84sJ9t\n27bi5+fn0pizm+v1MTi/hEydOonixe/MeG769Mncd195Dh6MdHHE2cvWrZuJiopixoy5HDwYyTvv\nDGXGjLkZ2202G+PGTSF37twZz/344yoSEs4wffpcoqOjmDRpLKNHT3RH+HJt3wNDgFmWZVUDoo0x\nZzNtHwdMMMZ8/78cREO3Ih7E4XBQv/79dOnSgxkz5uDr68unn37E0qVfEx0dzZo1qwEoX75CRpIn\nVxYdHUVAQAChoWHYbDbq1KnP5s0brrjvqVOn2Lx5I+HhjTOemzZtEu3adVIfX8ON9vG3335DzZq1\nCQwMIn1kql27ztSv39DFEWc/W7ZsomHDcABKlizF6dOnSEhIuGifSz+j0dF/Z0znKFasOIcORetz\nfCVunqNnjFkHbLYsay0wEehkWdarlmU9bVlWHqAF0NqyrFVptza30kxV9EQ8SHpVLl++/Nx9d2km\nT57BqlU/sG3bVr76aiEHDx6gWbOXCA0Nw263q4p3DSdOHE9LLJyCgoKIjo664r5LlnzF448/lfF4\n2bIlVKtWkyJFil5xf3G6kT4+eTKeFSuWM378FH75ZQ3OaUiQJ08e4uNvacqRVzl2LI4yZcpmPA4M\n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\nsmUzRxxxJG+//QZ33TWQE044kRdeeJYlS/7NrbfeTpkypZk4cRw//vgjV199LRkZGU68kFJANN4F\nlBCDnqS0tHXrVoYOvZPNm39gwoRn+eijD+nS5UYyMzOZP/8z/va3l8nMzKR9+0tZsmQJJ57YmIyM\nbfPX7ORJShYGPUlpKTMzkzZt2vLUU+OZMeNVGjduwocffsB7773D0KHDmTTpWR5//BGmTp3M6NEP\nU6fO4V6u3Ys///k+5s//nEgEevTow9FHH1O4b8qUF3jttX+QkZHB0Uc3oHv3WwBYvHgRAwb04dJL\n/0j79pfEq/SkMXv2+zz++CNkZmbStOnpXH31tbvsHz16JP/+92IANm/eTMWKFRkw4E4GD/5T4THL\nly+ja9ebad363BKtPZE5Rk+SUtCmTd8DEbKzszn11NOYNm0KM2e+w4ABd1K2bFk+/PB9MjIyadny\nLH73uzbUqXMYdeocHu+yE9LcuXNYunQpjz32JF9//RX33HMXjz32JLDtbiLPP///mDRpGhkZGfTu\n3Y358z/jiCOO5KGHHuCUU06Lc/XJY8yY+3jggYeoXj2Xbt260LJlKw4/vG7h/p49+xY+nzDhCerW\nPYLq1XN58MGxABQUFHDzzdfTrFmLEq9d8ec6epLSxooV39Kp05U88sgYvv76q+0/OHvxxhuv8c47\nb3L44XXZtGkTw4YNYvjwYVSvnkv9+kftMStX23z00Yc0b94SgMMOO5wNG9azadMmAEqVKkWpUqXY\ntGkT+fn5bN68mZycSpQqVYoRI0ZTtWrVOFaePJYtW0pOTg65uTWIRCI0bXoGc+Z8sNdj169fz5w5\ns2nZstUu21955a+0bNmKsmXLlkTJScN19CQpxVStWo2jjjqaBQvmc/31V3P99d1o0uRU/vjHq3j1\n1b/TrFlzRo4czcKFC6hT5zAaNmxkwCvC6tWrOOqoowu/rly5CqtXryI7uw5lypShU6cuXHppW0qX\nLsO5557HIYccClC4yLR+2tq1a6hcuUrh11WqVGHZsqV7Pfavf53K739/wR7bp09/iQceeLjYalRi\nM+hJSgvRaJTSpUszePA9LFoUMmPGq4wf/xhz5symoCCfrVu38vHHczn11NOoV68+mZmZzq79hXYO\nxd9/v5GnnhrPc8+9SHZ2eXr06Mq//72YevWOjHOVyWXPv4P7/jv5+uv/ZOzYibts++yzTznssMPJ\n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\nWsCoUffyxBNPc95551OhQgVq1z6IWKL8Oi0pIcX7FmglxaAnKeFlZ2dz8809yc4ux4MPPkAsFuPS\nS/8IwHnnXcCkSc+yalUep512xi7fZzdPUroz6ElKCtnZ5enc+XoAHnpoNPn5+bRqdQ6ffz6P7777\njho1au5yvCFPUlGiadL0N+hJSho7wl758hV47LGHmD79JTZs2ECvXn2pV+9Ix+RJ0m4MepKSSnZ2\neTp16kKLFmexbt13VKlSlbp1j3BMnqRfJBZLj18KDXqSklK9ekcWPt8R8uzmSdKuDHqSkp4BT9Iv\nlS4XAVwwWZIkKUXZ0ZMkSWknmibr6NnRkyRJSlF29CRJUtpxjJ4kSZKSmh09SZKUdtJlHT07epIk\nSSnKjp4kSUo76XKvWzt6kiRJKcqOniRJSjvOupUkSVJSs6MnSZLSTsw7Y0iSJCmZ2dGTJElpx1m3\nkiRJSmp29CRJUtpx1q0kSZKSmh09SZKUduzoSZIkKanZ0ZMkSWknGnMdPUmSJCWxIuNsLJYuV7Al\nSVJJiUQicW+nPTuz+FfSu6JZRtzf509eur3nhYKSqCNt9b8kk+lztsa7jJTX5qRSjJ/h7y3FqXOr\nCJ+3axXvMlLasdNmkJe3Id5lpLzc3Ip+zkoZjtGTJElpJ12uWTpGT5IkKUXZ0ZMkSWnHe91KkiQp\nqdnRkyRJaSeWJuvoGfQkSZISQBAEpYCJQB2gALgmDMMl+zj2OWBzGIbXFHVOL91KkqS0E4sV/2M/\nXAGsCcPwN8Aw4J69HRQEwdnAEcBPvopBT5IkKTGcBUzd/nwGcMbuBwRBUAYYAAzlJ258AQY9SZKU\nhqKx4n/sh1pAHkAYhlEgFgTB7sPs+gMPAet/zgkdoydJklTCgiDoDFy72+ZTd/t6l45dEAT1gePD\nMBwUBEHLn/M6Bj1JkpR24n1njDAMxwPjd94WBMEEoDYwb/vEjEgYhvk7HXIecGQQBLOAHCA3CII+\nYRiO2tfrGPQkSVLaiXfQ24dXgYu3/3k+8MbOO8MwHAOMAQiCoAVwdVEhDxyjJ0mSlCgmAZlBELwL\ndGXbeDyCILg1CIKmezn+J+OqHT1JkpR2EvEWaNsnYHTay/bhe9n2NvD2T53Tjp4kSVKKsqMnSZLS\nToKO0Tvg7OhJkiSlKDt6kiQp7USj8a6gZNjRkyRJSlF29CRJUtpxjJ4kSZKSmh09SZKUduzoSZIk\n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\nKZn8/3C3sUgAxLO+AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0xaba2b92c>"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"baseline\"></a>\n",
"#Baseline Model"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Input: Select Oil or Gold (0 - Oil and 1 - Gold)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"choice = 0\n",
"candidatesList = ['Oil_Value', 'Gold_Value']\n",
"kMonths = 3"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Read CSV to pandas data frame\n",
"if choice == 0:\n",
" dfMaster = pd.read_csv(oilDataPath)\n",
" #dfMaster = DataFrame.from_csv(oilDataPath)\n",
"else:\n",
" dfMaster = pd.read_csv(goldDataPath)\n",
"dfCpi = pd.read_csv(cpiDataPath)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#slice only last 9 years for testing\n",
"dfMaster = dfMaster[:107]\n",
"dfMaster.head()\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Oil_Value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 11/30/2014</td>\n",
" <td> 75.74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 10/31/2014</td>\n",
" <td> 80.53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 9/30/2014</td>\n",
" <td> 91.17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 8/31/2014</td>\n",
" <td> 97.86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 7/31/2014</td>\n",
" <td> 98.23</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows \u00d7 2 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
" Date Oil_Value\n",
"0 11/30/2014 75.74\n",
"1 10/31/2014 80.53\n",
"2 9/30/2014 91.17\n",
"3 8/31/2014 97.86\n",
"4 7/31/2014 98.23\n",
"\n",
"[5 rows x 2 columns]"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Naming the model\n",
"def getModelName(modelNo):\n",
" if modelNo == \"0.0\":\n",
" return \"Price remains constant as last month\"\n",
" elif modelNo == \"0.1\":\n",
" return \"Price is average of last\" +str(kMonths)+ \" months\"\n",
" elif modelNo == \"0.2\":\n",
" return \"Price is calculated using a autoregressive model where the co-efficients are determined using PSO swarm algorithm.\"\n",
" elif modelNo == \"0.3\":\n",
" return \"Weighted Average of the last \"+str(kMonths)+\" months. Weight of the ith month in the history is (\"+str(kMonths)+\"-i+1)\"\n",
" elif modelNo == \"0.4\":\n",
" return \"Cubic Weighted Average of the last \"+str(kMonths)+\" months. Weight of the ith month in the history is (\"+str(kMonths)+\"-i+1)^3\"\n",
" else:\n",
" return \"New Baseline Model, Yet to be defined\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Baseline Model\n",
"def performPrediction(y,modelNo,k):\n",
" n = len(y)\n",
" pred_y = np.copy(y)\n",
" if modelNo == \"0.0\":\n",
" print (\"Model 0.0\")\n",
" for i in range(0,n,1):\n",
" if(i<n-k):\n",
" pred_y[i]=y[i+1]\n",
" else:\n",
" pred_y[i]=y[i]\n",
" elif modelNo == \"0.1\":\n",
" print (\"Model 0.1\")\n",
" for i in range(0,n,1):\n",
" if (i<n-k):\n",
" pred_y[i]=0\n",
" for j in range(1,k+1,1):\n",
" pred_y[i]=pred_y[i] + y[i+j]\n",
" pred_y[i]=pred_y[i]/k\n",
" else:\n",
" pred_y[i] = y[i]\n",
" elif modelNo == \"0.2\":\n",
" print (\"Model 0.2\")\n",
" for i in range(0,n,1):\n",
" if (i<n-k):\n",
" pred_y[i] = 0.976*y[i+1] + 0.01373*y[i+2] + 0.1157\n",
" else:\n",
" pred_y[i] = y[i]\n",
" elif modelNo == \"0.3\":\n",
" print (\"Model 0.3\")\n",
" for i in range(0,n,1):\n",
" if(i<n-k):\n",
" pred_y[i]=0\n",
" for j in range(1,k+1,1):\n",
" pred_y[i]=pred_y[i]+(y[i+j]*(k-j+1))\n",
" pred_y[i]=(2*pred_y[i])/(k*(k+1))\n",
" else:\n",
" pred_y[i]=y[i]\n",
" elif modelNo == \"0.4\":\n",
" print (\"Model 0.4\")\n",
" cubic = (k*(k+1))/2\n",
" cubic = cubic**2\n",
" for i in range(0,n,1):\n",
" if(i<n-k):\n",
" pred_y[i]=0\n",
" for j in range(1,k+1,1):\n",
" factor=k-j+1\n",
" factor=factor**3\n",
" pred_y[i]=pred_y[i]+(y[i+j]*factor)\n",
" pred_y[i]=((pred_y[i])/cubic)\n",
" else:\n",
" pred_y[i]=y[i]\n",
" else:\n",
" print (\"Wrong Model\")\n",
" return pred_y"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Plot the error histogram\n",
"colors = brewer2mpl.get_map('Set1', 'qualitative', 8).mpl_colors\n",
"def plotErrorHistogram(error,nBins,modelName):\n",
" fig, axes = ppl.subplots(1, 1, figsize=(9,6))\n",
" ppl.hist(error, bins=nBins, color=colors[1], grid='y')\n",
" axes.set_ylabel('Error Frequency')\n",
" axes.set_xlabel('Error')\n",
" axes.set_title(modelName)\n",
" plt.savefig(modelName+'.png')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Error Correction\n",
"def computeErrorCorrectionFactor(pred,yActual):\n",
" err_corr = (np.mean((pred - yActual)))\n",
" return err_corr\n",
"\n",
"def computeCorrectedMean(newPredy,yActual):\n",
" return np.mean((newPredy - yActual))\n",
"\n",
"def computeCorrectedSD(newPredy,yActual):\n",
" return round(np.std((newPredy-yActual)/yActual),5)\n",
"\n",
"def computeNewPrediction(pred,errCorrection):\n",
" newPredy = pred - errCorrection\n",
" #print(\"Mean is \" + str(computeCorrectedMean(new_pred,actual)))\n",
" #print(\"Standard Deviation is \" + str(computeCorrectedSD(new_pred,actual)))\n",
" return newPredy\n",
"\n",
"def computeRelativeError(newPredy, yActual):\n",
" errRel = 100*(np.absolute(newPredy - yActual)/yActual)\n",
" return errRel\n",
"\n",
"def computerRMSError(newPredy, yActual):\n",
" errRMSe = sqrt(mean_squared_error(yActual,newPredy))\n",
" return round(errRMSe,2)\n",
"\n",
"def computeAbsoluteError(newPredy, yActual):\n",
" return np.absolute(newPredy - yActual)\n",
"\n",
"def computeProbability(newPredy,yActual, newSD):\n",
" pos = 0\n",
" for i in range(0,len(newPredy)):\n",
" if(np.absolute((newPredy[i]-yActual[i])/yActual[i]) <= np.absolute(newSD)):\n",
" pos += 1\n",
" conf = round((1. * pos/len(newPredy) ),5)\n",
" return conf\n",
" \n",
"def computeErrors(yPred, yActual,modelNo):\n",
" errCorr = computeErrorCorrectionFactor(yPred,yActual)\n",
" newPredy = computeNewPrediction(yPred,errCorr)\n",
" newMean = computeCorrectedMean(newPredy,yActual)\n",
" newSD = computeCorrectedSD(newPredy, yActual)\n",
" errRel = computeRelativeError(newPredy, yActual)\n",
" errRMS = computerRMSError(newPredy, yActual)\n",
" errAbs = computeAbsoluteError(newPredy, yActual)\n",
" prob = computeProbability(newPredy,yActual,newSD)\n",
" #Mean Computations\n",
" meanErrRel = np.mean(errRel)\n",
" meanErrRel = round(meanErrRel,2)\n",
" meanErrAbs = np.mean(errAbs)\n",
" meanErrAbs = round(meanErrAbs,2)\n",
" \n",
" #Plot Relative Error Distributions\n",
" #Uncomment the below line during the report\n",
" #plotErrorHistogram(((newPredy-yActual)/yActual),15,getModelName(modelNo))\n",
" \n",
" dfErr = DataFrame(data=None, columns=['Model','Mean Relative Error', 'Mean Absolute Error', \\\n",
" 'RMS Error', 'Standard Deviation', 'Probability'])\n",
" dfErr.loc[0,'Model'] = getModelName(modelNo)\n",
" dfErr.loc[0,'Mean Relative Error'] = meanErrRel\n",
" dfErr.loc[0,'Mean Absolute Error'] = meanErrAbs\n",
" dfErr.loc[0,'RMS Error'] = errRMS\n",
" dfErr.loc[0,'Standard Deviation'] = newSD\n",
" dfErr.loc[0,'Probability'] = prob\n",
" \n",
" return dfErr"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def baselineModel(modelNo):\n",
" x = dfMaster['Date']\n",
" yActual = np.array(dfMaster[candidatesList[choice]])\n",
" yPred = performPrediction(yActual,modelNo,kMonths)\n",
" yPredNew = predictNextMonth(yActual, modelNo)\n",
" print(\"The predicted value for next month is \"+str(yPredNew[0]))\n",
" return computeErrors(yPred, yActual,modelNo)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def computePrediction(yPredNew, modelNo, k):\n",
"\n",
" if modelNo == \"0.0\":\n",
"\n",
" yPredNew[0] = yPredNew[1]\n",
"\n",
" elif modelNo == \"0.1\":\n",
"\n",
" sumi = 0.\n",
"\n",
" for i in range(1,k+1,1):\n",
"\n",
" sumi = sumi + yPredNew[i]\n",
"\n",
" yPredNew[0] = round(sumi/k,2)\n",
"\n",
" elif modelNo == \"0.2\":\n",
"\n",
" yPredNew[0] = 0.976*yPredNew[1] + 0.01373*yPredNew[2] + 0.1157\n",
"\n",
" elif modelNo == \"0.3\":\n",
"\n",
" wsum = 0.\n",
"\n",
" for i in range(0,k+1,1):\n",
"\n",
" wsum = wsum + (yPredNew[i+1] * (k-i))\n",
"\n",
" denom = (k*(k+1))/2\n",
"\n",
" yPredNew[0] = round(wsum/denom,2)\n",
"\n",
" elif modelNo == \"0.4\":\n",
"\n",
" csum = 0.\n",
"\n",
" for i in range(0,k+1,1):\n",
"\n",
" factor = (k-i) ** 3\n",
"\n",
" csum = csum + (yPredNew[i+1] * factor)\n",
"\n",
" denom = (k*(k+1))/2\n",
"\n",
" denom = denom ** 2\n",
"\n",
" yPredNew[0] = round(csum/denom,2)\n",
"\n",
" return yPredNew\n",
"\n",
" \n",
"\n",
"def predictNextMonth(yActual, modelNo):\n",
"\n",
" yPredNew = np.copy(yActual)\n",
"\n",
" yPredNew = np.insert(yPredNew,0,0)\n",
"\n",
" #compute for current month\n",
"\n",
" yPredNew = computePrediction(yPredNew, modelNo, kMonths)\n",
"\n",
" yPredNew = np.insert(yPredNew,0,0)\n",
"\n",
" #compute for next month\n",
"\n",
" yPredNew = computePrediction(yPredNew, modelNo, kMonths) \n",
"\n",
" return yPredNew\n",
"\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"baselineModel('0.0')\n",
"\n",
"\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model 0.0\n",
"The predicted value for next month is 75.74\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Mean Relative Error</th>\n",
" <th>Mean Absolute Error</th>\n",
" <th>RMS Error</th>\n",
" <th>Standard Deviation</th>\n",
" <th>Probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Price remains constant as last month</td>\n",
" <td> 6.67</td>\n",
" <td> 5.56</td>\n",
" <td> 7.4</td>\n",
" <td> 0.09271</td>\n",
" <td> 0.79439</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows \u00d7 6 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 17,
"text": [
" Model Mean Relative Error \\\n",
"0 Price remains constant as last month 6.67 \n",
"\n",
" Mean Absolute Error RMS Error Standard Deviation Probability \n",
"0 5.56 7.4 0.09271 0.79439 \n",
"\n",
"[1 rows x 6 columns]"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"baselineModel('0.1')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model 0.1\n",
"The predicted value for next month is 79.58\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Mean Relative Error</th>\n",
" <th>Mean Absolute Error</th>\n",
" <th>RMS Error</th>\n",
" <th>Standard Deviation</th>\n",
" <th>Probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Price is average of last3 months</td>\n",
" <td> 9.59</td>\n",
" <td> 7.61</td>\n",
" <td> 10.78</td>\n",
" <td> 0.15279</td>\n",
" <td> 0.84112</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows \u00d7 6 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
" Model Mean Relative Error Mean Absolute Error \\\n",
"0 Price is average of last3 months 9.59 7.61 \n",
"\n",
" RMS Error Standard Deviation Probability \n",
"0 10.78 0.15279 0.84112 \n",
"\n",
"[1 rows x 6 columns]"
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"baselineModel('0.2')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model 0.2\n",
"The predicted value for next month is 74.4957802944\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Mean Relative Error</th>\n",
" <th>Mean Absolute Error</th>\n",
" <th>RMS Error</th>\n",
" <th>Standard Deviation</th>\n",
" <th>Probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Price is calculated using a autoregressive mod...</td>\n",
" <td> 6.67</td>\n",
" <td> 5.56</td>\n",
" <td> 7.4</td>\n",
" <td> 0.09287</td>\n",
" <td> 0.79439</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows \u00d7 6 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": [
" Model Mean Relative Error \\\n",
"0 Price is calculated using a autoregressive mod... 6.67 \n",
"\n",
" Mean Absolute Error RMS Error Standard Deviation Probability \n",
"0 5.56 7.4 0.09287 0.79439 \n",
"\n",
"[1 rows x 6 columns]"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"baselineModel('0.3')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model 0.3\n",
"The predicted value for next month is 78.62\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Mean Relative Error</th>\n",
" <th>Mean Absolute Error</th>\n",
" <th>RMS Error</th>\n",
" <th>Standard Deviation</th>\n",
" <th>Probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Weighted Average of the last 3 months. Weight ...</td>\n",
" <td> 8.43</td>\n",
" <td> 6.79</td>\n",
" <td> 9.47</td>\n",
" <td> 0.12975</td>\n",
" <td> 0.83178</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows \u00d7 6 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 20,
"text": [
" Model Mean Relative Error \\\n",
"0 Weighted Average of the last 3 months. Weight ... 8.43 \n",
"\n",
" Mean Absolute Error RMS Error Standard Deviation Probability \n",
"0 6.79 9.47 0.12975 0.83178 \n",
"\n",
"[1 rows x 6 columns]"
]
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"baselineModel('0.4')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model 0.4\n",
"The predicted value for next month is 76.99\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Mean Relative Error</th>\n",
" <th>Mean Absolute Error</th>\n",
" <th>RMS Error</th>\n",
" <th>Standard Deviation</th>\n",
" <th>Probability</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Cubic Weighted Average of the last 3 months. W...</td>\n",
" <td> 7.33</td>\n",
" <td> 6.02</td>\n",
" <td> 8.14</td>\n",
" <td> 0.10612</td>\n",
" <td> 0.81308</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows \u00d7 6 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
" Model Mean Relative Error \\\n",
"0 Cubic Weighted Average of the last 3 months. W... 7.33 \n",
"\n",
" Mean Absolute Error RMS Error Standard Deviation Probability \n",
"0 6.02 8.14 0.10612 0.81308 \n",
"\n",
"[1 rows x 6 columns]"
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"advanced\"></a>\n",
"#Advanced Models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Regression Models"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#shift data\n",
"def shiftData(candidatesList, dfMasterTrain,dfMasterTest,p_vector):\n",
" \n",
" yArrTrain = np.array(dfMasterTrain[candidatesList[0]])\n",
" yArrTest = np.array(dfMasterTest[candidatesList[0]])\n",
" xArrTrain = []\n",
" \n",
" n = len(p_vector)\n",
" for i in range(0,n,1):\n",
" k = p_vector[i]\n",
" for j in range(0,k,1):\n",
" xArrTrain.append(np.array(dfMasterTrain[candidatesList[i]]))\n",
" \n",
" #now we must shift accordingly\n",
" curr=0\n",
" for it in range(0,n,1):\n",
" k = p_vector[it]\n",
" for i in range(0,k,1):\n",
" l=len(xArrTrain[curr])\n",
" for j in range(0,l,1):\n",
" if(j<l-i-1):\n",
" xArrTrain[curr][j]=xArrTrain[curr][j+i+1]\n",
" else:\n",
" xArrTrain[curr][j]=xArrTrain[curr][l-1]\n",
" curr=curr+1\n",
" \n",
" #set xArrTest\n",
" xArrTest = []\n",
" n = len(p_vector)\n",
" for i in range(0,n,1):\n",
" k = p_vector[i]\n",
" for j in range(0,k,1):\n",
" xArrTest.append(np.array(dfMasterTest[candidatesList[i]]))\n",
" \n",
" #now we must shift accordingly\n",
" curr=0\n",
" for it in range(0,n,1):\n",
" k = p_vector[it]\n",
" for i in range(0,k,1):\n",
" l=len(xArrTest[curr])\n",
" for j in range(0,l,1):\n",
" if(j<l-i-1):\n",
" xArrTest[curr][j]=xArrTest[curr][j+i+1]\n",
" else:\n",
" xArrTest[curr][j]=xArrTest[curr][l-1]\n",
" curr=curr+1\n",
" \n",
" #train \n",
" #result = mvRegress(yArrTrain, xArrTrain)\n",
" \n",
" #predict\n",
" #yPred = mvPredict(xArrTest,result)\n",
" \n",
" #return result,yPred\n",
" return xArrTrain, yArrTrain ,xArrTest"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Autoregressive and Multiple Linear Regressive Model"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def linearRegress(y, x):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" results = sm.OLS(y, X).fit()\n",
" return results\n",
"\n",
"def regressionPredict(x,res):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" return res.predict(X)\n",
"\n",
"def linearRegressionModel(candidatesList,dfMasterTrain,dfMasterTest,p_vector):\n",
" \n",
" xArrTrain, yArrTrain ,xArrTest = shiftData(candidatesList,dfMasterTrain,dfMasterTest,p_vector)\n",
" #train \n",
" result = linearRegress(yArrTrain, xArrTrain)\n",
" #predict\n",
" yPred = regressionPredict(xArrTest,result)\n",
" \n",
" return result,yPred"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Nonlinear Regressive Model"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sklearn.svm import SVR\n",
"from sklearn.linear_model import Ridge\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.pipeline import make_pipeline\n",
"\n",
"def nonLinearRegress(y, x):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" \n",
" #Polynomial Regression\n",
" model = make_pipeline(PolynomialFeatures(2), Ridge())\n",
" results=model.fit(X, y)\n",
" \n",
" # SVM Regression \n",
" #svr_rbf = SVR(kernel='poly')\n",
" #results_rbf = svr_rbf.fit(X, y)\n",
" return results\n",
"\n",
"def nonLinearPredict(x,res):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" return res.predict(X)\n",
"\n",
"def nonLinearRegressiveModel(dfMasterTrain,dfMasterTest,p_vector):\n",
" xArrTrain, yArrTrain ,xArrTest = shiftData(candidatesList,dfMasterTrain,dfMasterTest,p_vector)\n",
" #train \n",
" result = nonLinearRegress(yArrTrain, xArrTrain)\n",
" #predict\n",
" yPred = regressionPredict(xArrTest,result)\n",
" \n",
" return result,yPred"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##3. ARMA Model"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def armaModel(data, ar, ma):\n",
" \n",
" trainingRatio = 0.6\n",
" trainSize = np.floor(len(data) * trainingRatio) #60:40 ratio\n",
"\n",
" timeSeries = np.array(data)\n",
" timeSeries=timeSeries[::-1]\n",
" \n",
" #plotAcfPacf(timeSeries)\n",
" \n",
" arma_mod20 = sm.tsa.ARMA(timeSeries,(ar,ma), dates=None).fit()\n",
" #print(arma_mod20.params)\n",
" yPredARMA= arma_mod20.fittedvalues[np.int(trainSize):]\n",
" y = timeSeries[np.int(trainSize):]\n",
" return yPredARMA, y\n",
"\n",
"def plotAcfPacf(timeSeries):\n",
" \n",
" acf_values = sm.tsa.stattools.acf(timeSeries, unbiased=False, nlags=10)\n",
" pacf_values = sm.tsa.stattools.pacf(timeSeries, nlags=10)\n",
"\n",
" #Plot ARMA autocorrelation and partial autocorrelation factors\n",
" fig = plt.figure(figsize=(18,12))\n",
" ax1 = fig.add_subplot(211)\n",
" fig = sm.graphics.tsa.plot_acf(timeSeries, lags=50, ax=ax1)\n",
" ax2 = fig.add_subplot(212)\n",
" fig = sm.graphics.tsa.plot_pacf(timeSeries, lags=50, ax=ax2)\n",
" #plt.savefig('ARMA_ACF_PACF.png')\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def computeCorrectedSD(newPredy,yActual):\n",
" return round(np.std((newPredy-yActual)/yActual),4)\n",
"\n",
"def computeProbability(newPredy,yActual, newSD):\n",
" pos = 0\n",
" for i in range(0,len(newPredy)):\n",
" if(np.absolute((newPredy[i]-yActual[i])/yActual[i]) <= np.absolute(newSD)):\n",
" pos += 1\n",
" conf = round((1. * pos/len(newPredy) ),4)\n",
" return conf\n",
"\n",
"def computeErrors(yPred, yArrTest):\n",
"\n",
" #Error in prediction\n",
" errPred = yPred - yArrTest\n",
" #Mean Error\n",
" avgErr=np.mean(errPred)\n",
" #Subtracting the mean error\n",
" yPred = yPred - avgErr\n",
" #Updated error in prediction\n",
" errPred = yPred - yArrTest\n",
" \n",
" #Relative Error\n",
" errRel= 100 * (np.absolute(errPred) / yArrTest)\n",
" meanErrRel = np.mean(errRel)\n",
" meanErrRel = round(meanErrRel,2)\n",
" #RMSE\n",
" errRMSE = np.sqrt(mean_squared_error(yArrTest,yPred))\n",
" errRMSE = round(errRMSE,2)\n",
" #Absolute Error\n",
" errAbs= np.absolute(yPred-yArrTest)\n",
" meanErrAbs = np.mean(errAbs)\n",
" meanErrAbs = round(meanErrAbs,2)\n",
" \n",
" errPlot = errPred/yArrTest\n",
" \n",
" newSD = computeCorrectedSD(yPred,yArrTest)\n",
" prob = computeProbability(yPred,yArrTest,newSD)\n",
" \n",
" return meanErrRel,meanErrAbs,errRMSE,errPlot,newSD,prob"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###Plot Error Histogram"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plotErrorHistogram(error,nBins,modelName):\n",
" fig, axes = ppl.subplots(1, 1, figsize=(18,12))\n",
" axes.set_xlim(-0.4, 0.4)\n",
" axes.set_ylim(0, 50)\n",
" axes.set_ylabel('Error Frequency')\n",
" axes.set_xlabel('Error')\n",
" axes.set_title(modelName)\n",
"\n",
" #sb.distplot(error, kde=False, fit=stats.norm, bins=nBins);\n",
" ppl.hist(error, bins=nBins, grid='y', label=modelName)\n",
" plt.savefig('images/'+modelName+'.png')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Generate Model Name"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def generateModelName(model, modelVector, candidatesList):\n",
" modelName = model +' Model - Parameters: '\n",
" for i in range(len(modelVector)):\n",
" if(modelVector[i] > 0):\n",
" modelName += (candidatesList[i][:-6] +' ')\n",
" return modelName"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"evaluation\"></a>\n",
"#Evaluation, Results and Comparison"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Predict Future Prices"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def PredictNextMonth(p_vector, candidatesList, modelRes, dfTest):\n",
" xArrTest = []\n",
" n = len(p_vector)\n",
" for i in range(0,n,1):\n",
" k = p_vector[i]\n",
" for j in range(0,k,1):\n",
" xArrTest.append(np.array(dfTest[candidatesList[i]]))\n",
" \n",
" #shift\n",
" curr=0\n",
" for it in range(0,n,1):\n",
" k = p_vector[it]\n",
" for i in range(0,k,1):\n",
" l=len(xArrTest[curr])\n",
" for j in range(0,l,1):\n",
" if(j<l-i-1):\n",
" xArrTest[curr][j]=xArrTest[curr][j+i+1]\n",
" else:\n",
" xArrTest[curr][j]=xArrTest[curr][l-1]\n",
" curr=curr+1\n",
" \n",
" return regressionPredict(xArrTest,modelRes)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def computePrediction(modelRes, dfMasterTrain, dfMasterTest, modelVector, yPred, candidatesList):\n",
" \n",
" cols = np.array(candidatesList)\n",
" cols = np.insert(cols,0,'Date')\n",
" \n",
" dfPred = DataFrame(data=dfMasterTest[:1], columns=cols)\n",
" dfPred = dfPred.append(dfMasterTest,ignore_index=True)\n",
" errRel = 100. * np.absolute((yPred - dfMasterTest['Oil_Value'])) / dfMasterTest['Oil_Value']\n",
" \n",
" #Predict Current Month\n",
" yPredNew = PredictNextMonth(modelVector,candidatesList,modelRes,dfPred)\n",
" dfPred.loc[0,'Oil_Value']=yPredNew[0]\n",
" \n",
" #Predict Next Month\n",
" dfPredNext = DataFrame(data=dfPred[:1], columns=cols)\n",
" dfPredNext = dfPredNext.append(dfPred,ignore_index=True)\n",
" yPredNew = PredictNextMonth(modelVector,candidatesList,modelRes,dfPredNext)\n",
" dfPredNext.loc[0,'Oil_Value']=yPredNew[0]\n",
" dfPredNext.loc[0,'Date'] = '12/30/2014'\n",
" dfPredNext.loc[1,'Date'] = '11/30/2014'\n",
" \n",
" #Compute Confidence\n",
" a = len(errRel[errRel <= np.mean(errRel)])\n",
" b = len(errRel)\n",
" #conf = round((1. * a/b ),2) \n",
" predVal = round(dfPred.loc[0,'Oil_Value'],2)\n",
" #meanRelErr = round(np.mean(errRel),2)\n",
" #strResult = \"\\nThe predicted value is \"+str(predVal) + \" +/- \" \\\n",
" #+ str(meanRelErr)+\"% with \" + str() + \"% confidence \\n\"\n",
" \n",
" return predVal"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def runAutoregressionModel(commodity, inputModels, model, maxMonths, plotHistogram):\n",
" \n",
" if commodity == 'Oil':\n",
" dfMaster,candidatesList = generateOilDfMaster()\n",
" elif commodity == 'Gold':\n",
" dfMaster,candidatesList = generateGoldDfMaster()\n",
" else:\n",
" print(\"Check the 'commodity' parameter!\")\n",
" return None\n",
" \n",
" #Split data into training and testing data\n",
" trainingRatio = 0.6\n",
" trainSize = np.floor(len(dfMaster['Date']) * trainingRatio) #60:40 ratio\n",
" dfMasterTrain = dfMaster[len(dfMaster)-np.int(trainSize):len(dfMaster)]\n",
" dfMasterTest = dfMaster[0:(len(dfMaster)-np.int(trainSize))-1]\n",
" #Result Data Frame\n",
" dfResult = DataFrame(data=None, columns=['Model', 'Months', 'Relative_Error(%)', 'Mean_Absolute_Error', \\\n",
" 'Mean_RMS_Error']) #,'SD','Probability','Prediction'\n",
" \n",
" ctr = 0\n",
" relErrModelMaster = []\n",
" \n",
" #For each model in inputModels,\n",
" for m in range(len(inputModels)):\n",
" \n",
" modelVector = inputModels[m]\n",
" nMonths = []\n",
" relErrModel = []\n",
" \n",
" #Run each model for the number of months in range 1 to maxMonths\n",
" for nMonth in range(1,maxMonths+1):\n",
" \n",
" if(nMonth > 1):\n",
" modelVector[modelVector == (nMonth-1)] = nMonth\n",
" \n",
" yArrTest = np.array(dfMasterTest[candidatesList[0]])\n",
" \n",
" #Run the model, get errors\n",
" modelRes,yPred = linearRegressionModel(candidatesList,dfMasterTrain,dfMasterTest,modelVector)\n",
" meanErrRel,meanErrAbs,meanErrRMSE,errPlot,sd,prob = computeErrors(yPred, yArrTest)\n",
" \n",
" #Non-Linear\n",
" #modelRes,yPred = nonLinearRegressiveModel(dfMasterTrain,dfMasterTest,modelVector)\n",
" #modelName = generateModelName('Non-Linear Regression', modelVector, candidatesList)\n",
" \n",
" relErrModel.append(meanErrRel)\n",
" \n",
" nMonths.append(nMonth)\n",
" \n",
" #Predict next month\n",
" predVal = computePrediction(modelRes, dfMasterTrain, dfMasterTest, modelVector, yPred, candidatesList)\n",
" \n",
" modelName = generateModelName('Autoregressive', modelVector, candidatesList)\n",
"\n",
" if(nMonth == 3):\n",
" dfResult.loc[ctr,'Model'] = modelName\n",
" dfResult.loc[ctr,'Months'] = nMonth\n",
" dfResult.loc[ctr,'Relative_Error(%)'] = meanErrRel\n",
" dfResult.loc[ctr,'Mean_Absolute_Error'] = meanErrAbs\n",
" dfResult.loc[ctr,'Mean_RMS_Error'] = meanErrRMSE\n",
" #dfResult.loc[ctr,'SD'] = sd\n",
" #dfResult.loc[ctr,'Probability'] = prob\n",
" #dfResult.loc[ctr,'Prediction'] = predVal\n",
" \n",
" if(plotHistogram == True):\n",
" plotErrorHistogram(errPlot,8 ,commodity + \" - \" + modelName)\n",
" ctr = ctr + 1\n",
"\n",
" #ppl.plot(nMonths,relErrModel, linewidth=2, linestyle=linestyles[m-1], color=colors[m-1], label=modelName, marker='o')\n",
"\n",
" if m==0:\n",
" relErrModelMaster = relErrModel\n",
" modelNameMaster = [modelName]\n",
" if m>0:\n",
" relErrModelMaster = np.vstack((relErrModelMaster,relErrModel))\n",
" modelNameMaster = np.append(modelNameMaster,modelName)\n",
" \n",
" return dfResult, modelNameMaster, relErrModelMaster"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def runArmaModel(commodity, ar, ma, plotHistogram):\n",
" \n",
" if(commodity=='Oil'):\n",
" data = dfOil['Oil_Value']\n",
" elif(commodity=='Gold'):\n",
" data = dfGold['Gold_Value']\n",
" \n",
" dfResult = DataFrame(data=None, columns=['Model', 'Months', 'Relative_Error(%)', 'Mean_Absolute_Error', \\\n",
" 'Mean_RMS_Error']) #,'SD','Probability','Prediction' \n",
" relErrArma=[]\n",
" ctr=0\n",
" \n",
" for nMonth in range(1,ar+1):\n",
" \n",
" #Run ARMA Model\n",
" yPredARMA,y=armaModel(data,nMonth,0)\n",
" \n",
" #Compute ARMA Errors\n",
" meanErrRelARMA,meanErrAbsARMA,meanErrRMSEARMA,errPlotARMA, sdARMA, probARMA = computeErrors(yPredARMA, y)\n",
" relErrArma.append(meanErrRelARMA)\n",
" \n",
" #predVal = computePrediction(modelRes, dfMasterTrain, dfMasterTest, modelVector, yPred, candidatesList)\n",
" \n",
" modelName = \"Autoregressive Moving Average Model\" \n",
" if(nMonth == 3):\n",
" dfResult.loc[ctr,'Model'] = modelName + \"(\" + str(3) + \", \"+str(ma) + \")\"\n",
" dfResult.loc[ctr,'Months'] = nMonth\n",
" dfResult.loc[ctr,'Relative_Error(%)'] = meanErrRelARMA\n",
" dfResult.loc[ctr,'Mean_Absolute_Error'] = meanErrAbsARMA\n",
" dfResult.loc[ctr,'Mean_RMS_Error'] = meanErrRMSEARMA\n",
" #dfResult.loc[ctr,'SD'] = sdARMA\n",
" #dfResult.loc[ctr,'Probability'] = probARMA\n",
" #dfResult.loc[ctr,'Prediction'] = \"\"\n",
" \n",
" ctr = ctr + 1\n",
" if(plotHistogram == True):\n",
" plotErrorHistogram(errPlotARMA,8 ,modelName)\n",
" \n",
" return dfResult, modelName, relErrArma"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Generating Error Metrics Comparison Plot"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def generateModelComparisonGraph(modelName, errorMaster):\n",
"\n",
" #Parameters for plot\n",
" figHeight = 12\n",
" figWidth = 18\n",
"\n",
" linestyles = ['solid' , 'dashed' , 'dashdot' , 'dotted',\n",
" 'solid' , 'dashed' , 'dashdot' , 'dotted']\n",
" #colors=['r','b','g','k','c','m','r','b','g','k','c','m']\n",
" current_palette = sb.color_palette(\"hls\",len(errorMaster))\n",
" \n",
" sb.set_context(\"talk\", font_scale=1.2, rc={\"lines.linewidth\": 2.5})\n",
" \n",
" fig0, axes0 = ppl.subplots(1, figsize=(figWidth,figHeight))\n",
" \n",
" axes0.set_xlim(1, maxMonths)\n",
" axes0.set_ylim(0, 10)\n",
" \n",
" axes0.set_title(\"Comparing Error Metrics of Predictive Models\")\n",
" axes0.set_ylabel(\"Relative Error\")\n",
" axes0.set_xlabel(\"No of Months\")\n",
" \n",
" month = np.arange(1,len(errorMaster[0])+1,1)\n",
" \n",
" for x in range(len(errorMaster)):\n",
" ppl.plot(month, errorMaster[x], linewidth=2, color=current_palette[x], label=modelName[x], marker='o')\n",
" \n",
" ppl.legend( loc='lower right')\n",
" \n",
" #plt.savefig('plot.png')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"oil = 'Oil'\n",
"gold = 'Gold'\n",
"\n",
"#OIL\n",
"inputModels_oil = [\n",
" np.array([1,0,0,0,0]),\n",
" np.array([1,0,0,0,1]),\n",
" np.array([1,1,0,0,1]),\n",
" np.array([1,0,1,0,1]),\n",
" np.array([1,0,1,1,1]),\n",
" np.array([1,1,0,1,1])\n",
" ]\n",
"#GOLD\n",
"inputModels_gold = [\n",
" np.array([1,0,0,0,0,0]),\n",
" np.array([1,0,0,0,1,0]),\n",
" np.array([1,0,0,0,1,1]),\n",
" np.array([1,1,1,0,0,1]),\n",
" np.array([1,1,1,0,1,1]),\n",
" np.array([1,1,1,1,1,1])\n",
" ]\n",
"\n",
"maxMonths = 5\n",
"plotHistogram = False\n",
"model = 0\n",
"\n",
"#Change oil/gold\n",
"commodity = oil\n",
"inputModels = inputModels_oil\n",
"\n",
"#Autoregressive\n",
"resultAR, modelNamesAR, errorMasterAR = runAutoregressionModel(commodity, inputModels, model, maxMonths, plotHistogram)\n",
"\n",
"ar = 5\n",
"ma = 0\n",
"\n",
"#ARMA\n",
"resultARMA, modelNamesARMA, errorMasterARMA = runArmaModel(commodity, ar, ma, plotHistogram)\n",
"\n",
"result = resultAR.append(resultARMA)\n",
"result.to_excel(commodity + '_ErrorMetrics.xls','ErrorMetrics')\n",
"\n",
"modelNames = np.append(modelNamesAR,modelNamesARMA)\n",
"error = np.vstack((errorMasterAR,errorMasterARMA))\n",
"\n",
"#PLOT\n",
"generateModelComparisonGraph(modelNames, error)\n",
"#generateModelComparisonGraph(modelNamesAR, errorMasterAR)\n",
"\n",
"resultAR"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Months</th>\n",
" <th>Relative_Error(%)</th>\n",
" <th>Mean_Absolute_Error</th>\n",
" <th>Mean_RMS_Error</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Autoregressive Model - Parameters: Oil </td>\n",
" <td> 3</td>\n",
" <td> 7.36</td>\n",
" <td> 5.73</td>\n",
" <td> 7.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Autoregressive Model - Parameters: Oil Gold </td>\n",
" <td> 3</td>\n",
" <td> 7.27</td>\n",
" <td> 5.67</td>\n",
" <td> 7.21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Autoregressive Model - Parameters: Oil SP500 G...</td>\n",
" <td> 3</td>\n",
" <td> 6.99</td>\n",
" <td> 5.52</td>\n",
" <td> 7.16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Autoregressive Model - Parameters: Oil NYSE Gold </td>\n",
" <td> 3</td>\n",
" <td> 7.06</td>\n",
" <td> 5.56</td>\n",
" <td> 7.16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Autoregressive Model - Parameters: Oil NYSE US...</td>\n",
" <td> 3</td>\n",
" <td> 7.17</td>\n",
" <td> 5.61</td>\n",
" <td> 7.14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td> Autoregressive Model - Parameters: Oil SP500 U...</td>\n",
" <td> 3</td>\n",
" <td> 7.04</td>\n",
" <td> 5.54</td>\n",
" <td> 7.12</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>6 rows \u00d7 5 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
" Model Months Relative_Error(%) \\\n",
"0 Autoregressive Model - Parameters: Oil 3 7.36 \n",
"1 Autoregressive Model - Parameters: Oil Gold 3 7.27 \n",
"2 Autoregressive Model - Parameters: Oil SP500 G... 3 6.99 \n",
"3 Autoregressive Model - Parameters: Oil NYSE Gold 3 7.06 \n",
"4 Autoregressive Model - Parameters: Oil NYSE US... 3 7.17 \n",
"5 Autoregressive Model - Parameters: Oil SP500 U... 3 7.04 \n",
"\n",
" Mean_Absolute_Error Mean_RMS_Error \n",
"0 5.73 7.29 \n",
"1 5.67 7.21 \n",
"2 5.52 7.16 \n",
"3 5.56 7.16 \n",
"4 5.61 7.14 \n",
"5 5.54 7.12 \n",
"\n",
"[6 rows x 5 columns]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nVX+dDV82taVqp7XYvenrCzqiTZ3a2nvV0nbRVtbaVns7Wct7aSQlS/+fvXuP83rO//9/m2Y6H9Wi\nFmvbeCHZt01lMpSStmySU2FF6EfbiWqJkCWnWOtYNKSvLadOVgcfhbIIi0LbhpeVQyeMiaYaHWaa\n3x/TvHfe0xze1YyZt7ldLxeXmffr8Hw93u/n+z153d/P1/O169/13MLPo5SaSqix+P4r+XFe0bag\n+JP6Qs83bw/6OxoWlNTfJbQV04eFgoeSa6yefrYhRu0/tKBODxPcpKSk/51sFl5eOeWUu+TkJJo2\nbcCGDZvJzd23T3L0D2aRkKRKBj4Fy/KIO/Apuu8eBz4xrwv/a7+qBD7bd7L9nxk/1dFUSar5xYGC\n/M/64m8ruwpVsHIdZamS7UG4sjcB1+6hT/6CvC05ZZaWPXkVSXWTiz8xL+tEVQnDf9fLSeHPYcH5\nX3GPC4fXSYXWUdzj/+2XVBDYFm634PyycKBb439tJSUlkbv2x/zzhXL2swsxkuok0+CKViS3cVIg\n7Zmfe+BTnuILfEoKd/Yg8Nn1OPfL7DIDipqpzUg+qG6FP3dVnhpJUK9ebbKzt0W/iNDPS+7aH9nx\ndumjMWoe35TkFoU+63mFfin8TVbM+rwi21LkW6y83ddFfy9+XV7RAxV3AlXcsfNKWVfk97wSjh2t\nq6R9y6wrr7hfY78dLLbtIieSpdVVePMy1hc9dlIS+aMsd+QWOmzpxy4Yurxb2wX77s3rWOTYecUe\nex/fW0WWFftaldGHJb2Oxa4rqsT1Zf2Rje+P8D79qc6DvOzcvd+/uBOzUk7yYk7qovvt+qVGkbYg\nfwRp0ZO6Uk4C8zeNfRx7rFJqoki7xR27RuGT0yLPoZQT1aQyTkSLayupyOOSnm9BjcW/tknUqAH1\n6tcm+8ft//t3vUZBU7ufeBfXdrSmos+vUFuxr93/2trtxHy35x/7msf0X9HXsoS2kgo/jqmr+Pdk\nUpHHJfVB4Roqe2RVaXZ8+APZj60q93Z/diHGfr0OKZdv5SWV7CcPfNo3I6l+SolDT50ErHpITk6i\nSdMG7PRv/M/a1qa1/KxXc+U5ylLF2+uArPD6guV7EZDt+M9Gtj75Vak11rnwUGq2aRz/SV2hx1X5\npE7/47/rP381I02ofVoLJ/aUVD0VnLgU/SPopWPSz4ufdaniJRX+Jnf3teVzjFLW1U79BXnf7yg1\nsKx9vPNcST8HJf27vi8MMSQljDo9W5D8y7r8OGM1NWokUbfvIV46Jv0M+VmXfv4MLKXqo/C/63kb\nd6zb1/Z+dmOt8vLy8hx+WH045LR6st+rJ/u9+rHPqyf7vXrZ8eEPBpbVlJ/16ic5OYlmzRrucwbh\nSAxJkiRJlaJmpAl12u7nyaykuNUoexNJkiRJkqTKZ4ghSZIkSZISgiGGJEmSJElKCIYYkiRJkiQp\nIRhiSJIkSZKkhGCIIUmSJEmSEoIhhiRJkiRJSgiGGJIkSZIkKSEYYkiSJEmSpIRgiCFJkiRJkhKC\nIYYkSZIkSUoIhhiSJEmSJCkhGGJIkiRJkqSEYIghSZIkSZISgiGGJEmSJElKCIYYkiRJkiQpIRhi\nSJIkSZKkhGCIIUmSJEmSEoIhhiRJkiRJSgiGGJIkSZIkKSEYYkiSJEmSpIRgiCFJkiRJkhKCIYYk\nSZIkSUoIhhiSJEmSJCkhGGJIkiRJkqSEYIghSZIkSZISQkplF1CSIAhOBu4G2gDrgb+GYTixUouS\nJEmSJEmVpkqOxAiC4Bjg/4DngCOBO4AHgiD4Q6UWJkmSJEmSKk1VHYlxPfBKGIa373r8aBAE3wL/\nrcSaJEmSJElSJapyIUYQBDWA04ARhZeHYfh85VQkSZIkSZKqgioXYgC/BhoAG4MgmA50BjYAN4dh\n+ExlFiZJkiRJkipPVZwTY/9dP8cDrwC/B+YATwVBcFalVSVJkiRJkipVVRyJUXPXz+fCMJy06/cP\ngiDoBPx/wOyyGqhRI6mialMVU9DX9nn1Yr9XT/Z79WOfV0/2e/Vjn1dP9nv1U159XRVDjE27fr5f\nZPnbQJ94GmjSpH65FqSqzz6vnuz36sl+r37s8+rJfq9+7PPqyX7XnqqKIcZnwE6gcTHrtsXTwA8/\nbGHnzrxyLUpVU40aSTRpUt8+r2bs9+rJfq9+7PPqyX6vfuzz6sl+r35+tiMxwjDcHATB28AfgImF\nVqUC/46njZ0788jN9YNQndjn1ZP9Xj3Z79WPfV492e/Vj31ePdnv2lNVLsTY5TZgXhAE1wEzgP5A\nB4rcdlWSJEmSJFUfVfHuJIRh+H/AH8kPL1YA5wK9wjB8u1ILkyRJkiRJlaaqjsQgDMNngGcquw5J\nkiRJklQ1VMmRGJIkSZIkSUUZYkiSJEmSpIRgiCFJkiRJkhKCIYYkSZIkSUoIhhiSJEmSJCkhGGJI\nkiRJkqSEYIghSZIkSZISgiGGJEmSJElKCIYYkiRJkiQpIaSUtUEQBDWB9UDrMAy/rfiSJEmSJEmS\ndlfmSIwwDHcA3wBHVnw5kiRJkiRJxStzJMYuI4DbgiCYB7wL/FB0gzAMl5VnYZIkSZIkSYXFG2K8\nuOtnWgnr84DkfS9HkiRJkiSpePGGGJdWaBWSJEmSJElliCvECMPw/1VwHZIkSZIkSaWKdyQGQRAc\nDvwJaAs0In9ejLeBCWEYrq2Y8iRJkiRJkvKVeXcSgCAIOgAfAIOBJsAW4BfAn4HlQRAcVWEVSpIk\nSZIkEf9IjFuB14DzwjDcWLAwCIJmwAzgDqBP+ZcnSZIkSZKUL66RGMDxwLWFAwyAMAwzgWuAzuVd\nmCRJkiRJUmHxhhi1gawS1n0H1CufciRJkiRJkooXb4jxGfCHEtadvWu9JEmSJElShYl3ToxHgPuC\nIGhP/twYWUBjoCvQF7iqYsqTJEmSJEnKF1eIEYbhg0EQNCb/biT9C636ARgThuFDFVGcJEmSJElS\ngXgvJyEMw1uB/YEI0GnXzwPDMLyrgmqTJEmSJEmKKnMkRhAENYFngMvCMPwB+HeFVyVJkiRJklRE\nmSMxwjDcAZwAHFDx5UiSJEmSJBUv3stJrgQeCILg+CAIkiuyIEmSJEmSpOLEe3eS24D6wFvAziAI\nsoEkIK/gZxiGjSqmREmSJEmSpPhDjCVlrM/b10IkSZIkSZJKE+8tVgdUcB2SJEmSJEmlivfuJOuB\n1mEYflvxJUmSJEmSJO0u3ruTfAMcWfHlSJIkSZIkFS/eOTFGALcFQTAPeBf4oegGYRguK8/CJEmS\nJEmSCos3xHhx18+0EtbnAd56VZIkSZIkVZh4Q4xLK7QKSZIkSZKkMsR7d5L/V8F1SJIkSZIklarE\niT2DIBgeBEHtshoIgqBxEARvlm9ZkiRJkiRJsUq7O8l9QP3CC4Ig+DwIgoOLbFcTSC3vwiRJkiRJ\nkgor8xarRTTZi30kSZIkSZL2mYGEJEmSJElKCIYYkiRJkiQpIRhiSJIkSZKkhGCIIUmSJEmSEkJK\nGeubBkFQ8HvSrv/2C4Jgc6Ft9quIwiRJkiRJkgorK8QIi1n2fkUUIkmSJEmSVJrSQoxb9qCdvH0t\nRJIkSZIkqTQlhhhhGP7lJ6xDkiRJkiSpVE7sKUmSJEmSEoIhhiRJkiRJSgiGGJIkSZIkKSEYYkiS\nJEmSpIRgiCFJkiRJkhJCabdY3U0QBO2AdsAvgXvDMPw+CIIDwzD8pkKqkyRJkiRJ2iWuECMIgvrA\ndKDnrkV5wGNBEBwIvBUEwYlhGP6ngmqUJEmSJEmK+3KS24C2wCXAwUDWruWrgJeBW8q/NEmSJEmS\npP+JN8Q4BxgUhuETYRiuK1gYhuF28gOOrhVRnCRJkiRJUoF4Q4ymwLIS1m0A6pdPOZIkSZIkScWL\nN8T4Aji5hHXHA2vLoxhJkiRJkqSSxHt3krnAg0EQNAVeApKAQ4IgSAP+BjxRQfVJkiRJkiQB8YcY\nfwGOBO4ttOz1XT/n7VovSZIkSZJUYeIKMcIw/BE4IwiC44ATgMbA98CSMAw/qMD6JEmSJEmSgDhD\njCAIRgLTwjBcCiyt2JIkSZIkSZJ2F+/Enn8FVgdBMCcIgrOCIIj3MhRJkiRJkqRyEW+I0Qq4BfgN\nMBNYHwTBA0EQtK2wyiRJkiRJkgqJK8QIw/DzMAxvC8OwDXAsMBnoDbwXBMGHuy43kSRJkiRJqjDx\njsSICsNweRiG14Zh+GugK7AduLu8C5MkSZIkSSpsj+e2CIKgNnAa0G/XzzrA/HKuS5IkSZIkKUa8\ndyepCfye/OCiN9AQWAbcADwVhuF3FVahJEmSJEkS8Y/E+BZoDKwBJgJ/D8PwowqrSpIkSZIkqYh4\nQ4w5wN+BxWEY7qzAeiRJkiRJkooVV4gRhuHFFV2IJEmSJElSaUoMMYIg2AT8KgzD73f9ngckFdms\nYFleGIaNKq5MSZIkSZJU3ZU2EmMWsK3Q76XJK59yJEmSJEmSildiiBGG4YDifi8qCIK6wIHlWpUk\nSZIkSVIRNeLZKAiC3CAImpaw+nDg3fIrSZIkSZIkaXelTuwZBMFZ5M95kQScvmtujMKSgFOBBhVT\nniRJkiRJUr6y7k5yK3DErt+nlLLd0+VTjiRJkiRJUvFKDTHCMGwdBEEzIAPoA2QVs9mGMAyXV0Rx\nkiRJkiRJBcoaiUEYhplBEHQF3gjDMKfo+iAI6gdBMDAMw8cqpEJJkiRJkiTiCDEAwjB8FSAIggZA\n4Qk+k4CTgAcBQwxJkiRJklRh4goxgiBoDjwDdALyyA8vKPT7sgqpTpIkSZIkaZe4brEKjAeaA38B\ntgG3A/cC64F0oEtFFCdJkiRJklQg3hDjFGBAGIa3kB9ipIdhOAoIgDYYYkiSJEmSpAoWb4hxAPD5\nrt9zgDoAYRhmAyOBceVfmiRJkiRJ0v/EG2J8Bxy+6/dvgGMKrfum0DpJkiRJkqQKEdfEnsBcYHoQ\nBO2Bl4H7giDYSX64cRWwpoLqkyRJkiRJAuIPMa4HWgI7gb8CZwKzdq3bDlxc/qVJkiRJkiT9T1wh\nRhiG3wHdCx4HQdCa/Mk8awPvhmH4VcWUJ0mSJEmSlC/ekRgxwjDcAswr51okSZIkSZJKVGKIEQTB\nXCAv3obCMOxdLhVJkiRJkiQVo7SRGMeQH2IkxdFO3GGHJEmSJEnS3igxxAjD8Nc/YR2SJEmSJEml\n2uM5MYIgqA0cBKwOw3BH+ZckSZIkSZK0u7hDjCAI+gJjgdbkXz7SMgiCzcAE4OIwDLdXTImSJEmS\nJElQI56NgiA4D3gGyABuALbuWlUfSCM/3JAkSZIkSaowcYUYwDXA7WEYdgnD8HZgO0AYhquBIcAf\nK6g+SZIkSZIkIP7LSY4Ezi1h3TLg4PIpR5IkSZIkqXjxjsTYADQrYd0vgc3lU44kSZIkSVLx4g0x\nlgJ/C4Jg/8ILgyCoD9wMvFbehUmSJEmSJBUW7+UkNwCvA18FQbCc/Ak9nwUCIBk4sWLKkyRJkiRJ\nyhfXSIwwDP8NHAs8Rn7w8RX54cVU4NgwDFdUWIWSJEmSJEnEPxKDMAy/AIZVXCmSJEmSJEkli2sk\nRhAE9cpYf3z5lCNJkiRJklS8UkOMIAiuCYLgO2BzEARfB0FwdZH1dYIg+CvwRkUWKUmSJEmSVGKI\nEQTBAOBO8u9M8lfgPWB8EARDd61PAz4ErgImVXilkiRJkiSpWittToxBwANhGF5VsCAIghHAlUEQ\ntCJ/foyVwIlhGL5dsWVKkiRJkqTqrrTLSdqQfzeSwtKBVsAVwI1AWwMMSZIkSZL0UyhtJEY9YF3h\nBWEYbgmCYCPQIwzDf1VoZZIkSZIkSYXEdXeSYqwv1yokSZIkSZLKsLchhiRJkiRJ0k/KEEOSJEmS\nJCWE0ubEAPgiCIKkIsvqAyuDIMgD8oAkIC8Mw0YVUaAkSZIkSRKUHmL8fQ/aydvXQiRJkiRJkkpT\nYogRhuGAn7AOSZIkSZKkUjknhiRJkiRJSgiGGJIkSZIkKSEYYkiSJEmSpIRgiCFJkiRJkhKCIYYk\nSZIkSUoIhhiSJEmSJCkhlHiL1aogCIJGwEdAGIZhl8quR5IkSZIkVZ6qPhLjVuAXQF5lFyJJkiRJ\nkipXlQ0xgiBoB1wKPAUkVXI5kiRJkiSpklXJECMIgmRgEnAX8EXlViNJkiRJkqqCKhliAEOBHiz/\nWAAAIABJREFU+sAdOApDkiRJkiRRBUOMIAgOAm4BBodhuKOy65EkSZIkSVVDlQsxgAeAOWEYLtr1\n2Ek9JUmSJElS1brFahAEvYBOwNGFFu/x5SQ1angFSnVR0Nf2efViv1dP9nv1Y59XT/Z79WOfV0/2\ne/VTXn1dpd4xQRA8DlwM7Cy0uAb5deYCXcMwfL20NvLy8hy5IUmSJElSFZOUlLTPGUSVGokB3AD8\ntciyIUA74BLivFPJDz9sYedOs4zqoEaNJJo0qW+fVzP2e/Vkv1c/9nn1ZL9XP/Z59WS/Vz/lNRKj\nSoUYYRiuA9YVXhYEQQaQHYbhynjb2bkzj9xcPwjViX1ePdnv1ZP9Xv3Y59WT/V792OfVk/2uPVUV\nJ/YsKg8n95QkSZIkqdqrUiMxihOG4c2VXYMkSZIkSap8iTASQ5IkSZIkyRBDkiRJkiQlBkMMSZIk\nSZKUEAwxJEmSJElSQjDEkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIk\nSQnBEEOSJEmSJCUEQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKU\nEAwxJEmSJElSQjDEkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnB\nEEOSJEmSJCUEQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwx\nJEmSJElSQjDEkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnBEEOS\nJEmSJCUEQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwxJEmS\nJElSQjDEkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnBEEOSJEmS\nJCUEQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwxJEmSJElS\nQjDEkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnBEEOSJEmSJCUE\nQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwxJEmSJElSQjDE\nkCRJkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnBEEOSJEmSJCUEQwxJ\nkiRJkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwxJEmSJElSQjDEkCRJ\nkiRJCcEQQ5IkSZIkJQRDDEmSJEmSlBAMMSRJkiRJUkIwxJAkSZIkSQnBEEOSJEmSJCUEQwxJkiRJ\nkpQQDDEkSZIkSVJCMMSQJEmSJEkJwRBDkiRJkiQlBEMMSZIkSZKUEAwxJEmSJElSQjDEkCRJkiRJ\nCcEQQ5IkSZIkJQRDDEmSJEmSlBBSKrsASZKkRNaoUa3KLuFnZ9u2bdSvX7Oyy9BPyD6vnuz3n6es\nrO0V2r4jMSRJkiRJUkIwxJAkSZIkSQnBEEOSJEmSJCUEQwxJkiRJkpQQDDEkSZIkSVJCMMSQJEnS\nbi688EIikQhLly6t7FISViQS4cknn6yw9idOnEgkEuHuu+8udv26deuIRCL06NFjn46TlZVFJBJh\nzpw5ce8TiUSYNm3aPh333XffJRKJxPzXtm1bTj/9dGbOnLlPbSvW8uXLGTlyJF26dKFdu3aceuqp\n3HjjjXz55Zcx202cOJG0tLTo4/LoZ2lPGWJIkiRVIdnvv8faa65k7TVXkv1B5QQIX331FStWrODo\no49m/vz5e9XG4sWLueyyy8q5ssSyaNEizj777Ao9Rp06dVi4cCF5eXm7rVuwYAF16tQhKSmpQmso\nSXkd99FHH2XRokUsWrSIf/zjH/Tr14877riDiRMnlkv7leGqq67i+eefr+wyAJg3bx4DBgygSZMm\nPPjgg8ybN4877riDTZs20a9fP957773otgMGDGDevHkx+1fW+0vVlyGGJElSFbFx3j/IfORBdm78\ngZ0bfyDz4QfYOO8fP3kdc+fO5YgjjqBfv3689NJL7NixY4/b+Pe//71PNeTm5u7T/pXVdmHNmjWj\nTp06FdZ+UlISRx55JNnZ2cWOmFm4cCFt27YtNuBIJE2aNKFZs2Y0a9aMX/3qV1x44YWcddZZzJ49\ne6/b/KneAyVZsWLFPu2fk5NTLnWsX7+eW265hcsuu4yxY8fSpk0bmjdvTrt27bjvvvvo3Lkzo0eP\nZuvWrQDUq1eP/fbbr1yOLe0tQwxJkqQqYOO8f5A197ndlmfNfe4nDTLy8vKYP38+p512Gl27dmXr\n1q289tprMdvccMMN9O3bN2bZ1KlTiUQi0fWTJ0/mvffeIxKJRL/JXbJkCeeffz7t27cnLS2NkSNH\n8vXXX0fb6NGjB+np6QwZMoT27dvz448/AvDMM89w9tln06FDB3r27MkTTzwRc+wVK1bQt29f2rdv\nT9++ffnggw/o0aNH9Jv6iRMncsYZZzBz5kzS0tKYMWMGAJ988gmDBg2iU6dOpKWlcc0115CZmRlt\n96uvvmLYsGF07tyZDh060K9fPxYvXhxdv3LlSi677DLS0tLo2LEjF198Me+//350fcFQ+9dff51I\nJMJnn30WU/fcuXNp27YtGzZsiOt5FiclJYXU1FRefPHFmOVr1qzhk08+oWPHjjHLc3JyuP/+++ne\nvTvHHXccPXv2JD09PWabN954g9NPP5327dvzxz/+kTAMdzvuwoULOf/880lNTaVbt27cf//95XZi\nHY/DDjuMjIyMaBjx0UcfccUVV5Camhrtiw8//DC6fUnvgQULFtC3b1/atWtH586dGTVqFN9++210\nv0svvZRx48bxxBNPcPLJJ5OWlsaECRPIysriqquuIjU1lV69erFkyZLoPrm5uTzyyCP07t2bDh06\n0KdPH+bOnRtdH4lEyMjIYOzYsfTs2TOufQourXn11Vfp0aMH1113HQAvvPBC9D3TqVMnRowYQUZG\nRnS/Hj16lHi5EcDs2bOpVasWl19+ebHrR4wYQWZmJi+//HL0dSx8OYlUGQwxJEmSKln2B0uLDTAK\nZM197ie7tOT9999n3bp19OzZk4YNG9K5c+fdho+X5dprryUtLY1jjz2WRYsWEYlEWLlyJcOGDSM1\nNZWZM2fy8MMPs3btWgYPHhwzUmD+/PmkpqbywgsvUKdOHWbNmsX48ePp06cPs2fPZtCgQUyYMIFn\nn30WgG3btjF8+HDq1q3LtGnTGDlyJHfccQdZWVnUqPG//9XdsmULb7zxBs8++yy9evUiMzOTgQMH\nkpyczOTJk3n44Yf58ssvGT58eHSf66+/nh07djB58mSee+45OnXqxKhRo1i/fj15eXkMHz6cAw88\nkKeeeopnnnmGVq1aMXTo0Oi31pA/WqJjx440atQoJgABeOWVV2jfvj1NmzYt83kWp+B1O/XUU3n5\n5ZdjRhcsXLiQ9u3b07hx45h97r33XmbOnMmYMWOYM2cOgwYN4rHHHuPxxx8HIDMzk5EjR9K6dWum\nT5/O8OHDue+++2LaeOutt7jmmmtITU1lxowZjBkzhtmzZ/Pggw+W/sYoR2vXruWAAw4gOTmZ3Nxc\nhg0bRs2aNXn66aeZMWMGv/nNbxg+fDjZ2dnRfYq+Bz799FOuvfZaOnfuzNy5c0lPT+ebb75h7Nix\n0X2SkpJ46623yMjIYOrUqVxwwQWkp6czcuRIevXqxfTp0znkkEMYN25cdJ+JEycyZcoUBg4cyKxZ\nszjrrLMYO3Ysr7/+OkB0bpHRo0fz9NNPx7VPgWnTpnHPPfcwZswYVq1axZgxY+jTpw/PP/88jzzy\nCJmZmdxwww3R7Z955hmGDBlS4uu4bNky2rRpQ82aNYtd37x5c1q2bOncOKpSUiq7AEmSpJ+bjAf/\nxtYVH5a94R7IfPgBMsveDIA6bSLsP2zkXh1n3rx5tGvXjgMOOACAXr16cfXVV7Np0yYaNmwYVxsN\nGjSgZs2apKSk0KxZMwCeffZZDj30UK688srodjfddBPnn38+S5cupV27dvm116lD//79o9tMmTKF\n0047Lbrs4IMP5uOPP2bq1Kn069ePd955h8zMTCZNmsThhx8OwODBg2PCCICMjAwGDx7MwQcfDMBT\nTz1FTk4Od999N/Xq1QPg5ptvpl+/fnzwwQcce+yxfPbZZ1x++eUcdthhAAwZMoQTTzyRxo0bk5WV\nRUZGBieffDKHHnookB/enHHGGSQnJ8ccOyUlhS5durB48WIGDhwIwI8//sibb74Z/Ua9rOdZms6d\nO3PTTTfxr3/9ixNOOAHIH2Fw7rnnxmy3bds2ZsyYwaBBgzj55JMBOOigg1i5ciXTp0/n0ksv5ZVX\nXiEnJ4exY8dSv359WrZsycaNG7n66qtj+uR3v/tdtC8POeQQ1q5dy0MPPcTQoUNLPCHeW4VDrpyc\nHN555x1mzZrFgAEDAKhRowZTp06lQYMG0ffoRRddxOzZs/n4449p27YtsPt74NBDD2XOnDm0aNGC\nlJQUWrRoQe/evRk/fjw7d+6kRo0a5OXlkZOTw6hRo0hKSqJ///6kp6fTqlUrunXrBsDZZ5/NqFGj\n2Lx5M7Vr12batGlcdNFF9O7dO1rL0qVLmTp1KieddFL0cowGDRrQpEkTduzYUeY+Bbp27crRRx8N\nwNKlS8nLy6NXr17st99+tGjRgnvuuYfvv/8+un2TJk1KfW0zMjKir09JmjdvHjM6RapsjsSQJEkS\nANu3b2fBggX06NGDnJwccnJySE1NpV69eixYsGCf2v7oo4845phjYpYdccQRJCcnx1yucNRRR0V/\n37RpE6tXr6Z9+/Yx+7Vr147Vq1eTnZ3N2rVrSUpKigYNAKmpqTGjMACSk5MJgiCmniOPPDIaYAAc\neeSRNGjQgI8//hiAE088kUceeYT777+fpUuXkpOTQyQSoV69ejRu3Jg2bdpw++23k56ezooVK0hJ\nSSESiRR7Et+9e3f+85//RC9XWbJkCbm5uZxyyillPs+Cy2pKUrduXTp16hS9pGT16tV8+umn0ZPs\nAl988QXbtm3jt7/9bczy1q1bs379ejZv3syqVas46KCDqF+/fnR9mzZtYrZfuXJlNHQqXOvWrVv5\n6quvSq11b/Tv35/U1FRSU1Pp0KEDI0aM4Mwzz+TSSy8F8kdLfPvtt1x33XV069aNjh07ct555wGw\ncePGaDtF3wO1atVi+fLlXHLJJXTu3JnU1FTuvvtucnNzY0ZwtGrVKjp5ZUFIUvj91qhRIwA2b97M\n559/ztatW4vty08++aTY57cn+xT+fEQiERo2bMjAgQOZPn06q1evZv/99495jmWpUaMGKSmlf6+9\ndetWJ+9UleJIDEmSpHK2p6Mgsj9YSubDD5S6TbM/DafescftS1llevXVV9m8eTPjxo2LGR4P+Zd5\nnHPOOXvddnZ2dsyJMeSfVNauXZstW7ZElxXepmD57bffzp133hldvnPnTpKSksjMzCQrK4u6devG\nnGTVrl17twk169atG/N48+bNfPjhh6SmpsYs37ZtWzRouOWWW5g2bRrz58/n8ccfp0mTJlxxxRVc\ncMEFADz88MNMmTKF5557jgkTJnDggQcyatQofv/73+/2/I8//ngaNmzI4sWLOeecc3jllVeil5kU\nzAtS2vMsGD1Qku7du3PzzTdz4403smDBAtq3b7/bt/AFr2eDBg1ilhcEOVu2bOHHH3+kdu3axa4v\n3M6UKVOYOnVqdFleXh5JSUl89913tGrVqtRa58+fH/P+Gjt2LKeddlqJ2//1r3/lN7/5DZA/quUX\nv/hFzIn3mjVrGDhwIMcddxzjx4/ngAMO4Jtvvtnt7jhF3wP/93//x5gxY7jgggsYM2YMDRs25KWX\nXtrt8pnC76WC91nh16hgWV5eHps3bwZg6NChMUFabm5uNBgsak/2Kfz52H///Zk6dSqPPfYYDz74\nILfddhtHH300N910E0ccccTuL2Qxmjdvzpo1a0rd5uuvv46O8JGqAkMMSZKkSlbv2OPYcfqZJc6L\n0ej0Mys8wID8S0lOOukkBg8eHLP8v//9L2PHjuXrr7+mefPmJCUl7XbHi7JGCzRo0IBNmzbFLMvN\nzWXbtm0lXqZSsHzYsGF06dJlt/UHHnggNWvWZPv27THLt23bFjMvRUltH3PMMdx2223F1gr5J68D\nBw5k4MCBrFmzhieffJLx48dz6KGHkpaWRqNGjbjyyiu58sor+e9//8tjjz3GtddeSxAEtGzZMqbN\nmjVrRi8p6dOnD6+99lr0UpJ4nmdZTjrpJHJzc3n77bd56aWXdpt4tfDzKjhpLlAw6qBhw4bUrl17\nt9euaL81bNiQ3r17R0c7FFZw+VBpunTpEp0EFqBp06albt+8efNSQ5x//vOf0UuDCl7LH374ocw6\nFi5cyFFHHcXo0aOjy/b1Ti4Fr/Gtt95K69atd1tf9FKjvd2nQMuWLbntttvIy8vj3Xff5W9/+xtD\nhgzhpZdeimv0RNu2bXn00UfJzMwstu/Wr1/P+vXrdxslIlUmLyeRJEmqAhr36kOj08/cbXmj3mfR\nuFefCj/+999/z5IlS+jduzetW7eO+e/0009nv/32i07wWb9+fbKysmL2//e//13qSVPr1q1j7hYB\n8J///Ifc3NyYIfKF1a9fn1//+td8/fXXHHzwwdH/6tevT/369alZsyaHHHIIOTk5fPrpp9H9Xnvt\nNXbu3Fnq823Tpg2rV6/mwAMPjGl7+/btNGnShKysLObNmxdt5+CDD2b06NE0aNCAVatWkZGREXOJ\nzWGHHcaYMWPYuXMnq1atKvaY3bt359133+WNN95g+/btdO3atcznWa9evbjmmKhTpw4nn3wy8+bN\nK/ZSEsg/4a1Xrx7Lli2LWb58+XJ+9atfUa9ePX7961+zbt26mBDgX//6V8z2Rx99NGvXro2pdb/9\n9iMlJWW30Q7FqVevXsy+RUd67KmcnBxSUlJiwrAXXnghrv0Kj1bJy8vjxRdfLDaki1fLli2pX78+\nGRkZMc+xZs2aNGnSpNjPyN7sA/l313nnnXeA/NEgHTp04PLLLycjI2O34KkkZ555JikpKUyaNKnY\n9ffeey8tWrTglFNOifMVkCqeIYYkSVIV0bhXH5r9aTg1GjchuUkTfvGnK2n8hzN+kmO/+OKLJCcn\nx0wiWCApKYmuXbsyf/58ID+Q+Prrr5k9ezarV6/miSee4Msvv4w58WvUqBFffvklK1euZMOGDZx3\n3nmsW7eOO++8ky+++IJly5bxl7/8hWOOOSbmW/miLrroImbMmMHMmTNZvXo1y5YtY/DgwdE7MKSm\nptKgQQPuuece/vvf//L2228zbdq0Mk+mzzjjDHJycrjhhhsIw5DPP/+ce+65h/POOy9695Fbb72V\nO+64g1WrVrFu3TqeeuopsrOz+d3vfsemTZu49tprmTRpEl9++SWrV69mypQp1K5de7c5JAqkpqZS\nu3ZtJk6cyIknnhhz8l7S87zxxhtLfR6F/f73v2fhwoV06NBht7uSQP5okH79+vH3v/+dl156iTVr\n1jBjxgyef/756ISiXbt2pUaNGtx55518/vnnvPnmmzz3XOwIoYsuuoh//vOfTJ48mS+++IKVK1fy\n5z//mT/96U9x11qe2rRpw/bt25k6dSpr1qzh0UcfJTs7m+TkZJYvX77byJPC+y1btoy3336bVatW\nMXr0aFq3bk1eXh5Lly6NjkjZk0CjZs2anH/++UyaNIkFCxawZs0a3nzzTS655BLuv/9+ID/ESU5O\nZunSpXz88cdx7VOc5cuXc9VVV/Hiiy+ybt06wjBk1qxZHHbYYdF5OjZs2BAzv0dR+++/PzfffDMz\nZ87k+uuv58MPP2T9+vUsXbqUESNGsGTJEu66665yn6xV2hdeTiJJklSF1Dv2uJ/k0pGi5s2bxwkn\nnFDiyX+3bt2YNWsWH3/8MaeddhrLli3j3nvvZefOnfzhD3/g8ssvj7m14znnnMNbb73FJZdcwq23\n3sqpp57KQw89xAMPPMDMmTOjk1EWvutFcc4++2xyc3N54oknuP3222nYsCHdunVjxIgRQP5Q/L/+\n9a/ccccdXHDBBRx11FFcf/31XHzxxdSqVQvID2GKfpvdrFkzHnvsMe655x769+9PXl4ebdq0IT09\nnRYtWgD5c1488MADXHjhhezcuZOWLVty5513RkOKv/3tb6Snp/P444+TkpLC4YcfzoMPPlji5R8F\ndymZM2dO9C4l8T7P4hR9TieccAL16tXj1FNPLXG7YcOGUaNGDe666y4yMzM56KCDGDVqVPTyk+bN\nm3PnnXdy7733cu655xIEATfccAN//OMfoyfzHTt2ZPz48aSnpzNx4kTq1KnDiSeeyF/+8pcSa91b\n8VwScdxxx3H55ZczefJkJk2axKmnnsr1119PrVq1ePLJJ2ncuHGx74H+/fvz6aefMmLECBo0aMCA\nAQPo27cvYRgyevRoJk2aVOx+ZdU5dOhQatWqxb333su3335L06ZNOf3006OXaaWkpHDxxRfz5JNP\n8tprr7Fo0aIy9ynutTj33HPJysrioYce4uuvv6Zhw4a0bds2Jvi44IILOOWUU0r9nHXv3p1DDjmE\nyZMnc9VVV5GVlUXTpk1JS0tjxowZ/PKXv4ypwUk+Vdl+du/AvLy8vA0bNpObu2/XsykxJCcn0bRp\nA+zz6sV+r57s9+onUfq8UaNalV1CtZeVlUXt2rWjky1u2LCBLl26cNdddxU7yaYkqeJkZW0vdnly\nchLNmjXc5wzCkRiSJElKWNu3b6d3795EIhGGDRtGUlISDz30EE2bNuXEE0+s7PIkSeXMOTEkSZKU\nsGrVqsWkSZP48ccfufjiixkwYABbtmzhkUce2e2WrpKkxOdIDEmSJCW0I444gvT09MouQ5L0E3Ak\nhiRJkiRJSgiGGJIkSZIkKSEYYkiSJEmSpIRgiCFJkiRJkhKCIYYkSZIkSUoIhhiSJEmSJCkhGGJI\nkiRJkqSEYIghSZKk3Vx44YVEIhGWLl1a2aUkrEgkwpNPPllh7U+cOJFIJMLdd99d7Pp169YRiUTo\n0aPHPh0nKyuLSCTCnDlz4t4nEokwbdq0fTruu+++SyQSifmvbdu2nH766cycOXOf2las5cuXM3Lk\nSLp06UK7du049dRTufHGG/nyyy9jtps4cSJpaWnRx/H0848//sjkyZPp27cvxx9/PO3ataN3795M\nmDCBTZs27VGdzz//PJFIhM2bN5e4zZVXXslll122R+0qsaRUdgHFCYKgLnAj0Bc4EAiBW8MwfK5S\nC5MkSapg2Zve4/tvpgKw34EXUa/hcT95DV999RUrVqzg6KOPZv78+Rx33J7XsHjxYqZNm8bkyZMr\noMLEsGjRIurXr1+hx6hTpw4LFy7kz3/+M0lJSTHrFixYQJ06dXZb/lMpr+M++uijtGrVCoAtW7bw\n2muvcccdd/Dtt98yePDgcjnGT+2qq66iS5cunHHGGZVdCvPmzWPs2LH06dOHBx98kF/84hesWbOG\nadOm0a9fPx566CHatWsHwIABAzj//PNj9i+tnzdt2sTAgQPJzs5myJAhHHPMMWzfvp2lS5cyYcIE\nFi1axNSpU6lXr16FPkf9vFTVkRgPAQOA4cCxwEJgRhAEHSqzKEmSpIq08bt/kLn2QXbm/MDOnB/I\nXPsAG7/7x09ex9y5czniiCPo168fL730Ejt27NjjNv7973/vUw25ubn7tH9ltV1Ys2bNqFOnToW1\nn5SUxJFHHkl2dnaxI2YWLlxI27ZtycvLq7AafgpNmjShWbNmNGvWjF/96ldceOGFnHXWWcyePXuv\n2/yp3gMlWbFixT7tn5OTUy51rF+/nltuuYXLLruMsWPH0qZNG5o3b067du2477776Ny5M6NHj2br\n1q0A1KtXj/322y/u9u+77z4yMzOZOnUqPXr04KCDDqJly5acc845pKen88033/D666+Xy3NR9VHl\nQowgCBoDFwE3hGH4QhiGn4VheB2wGuhXudVJkiRVjI3f/YOs73YfdJr13XM/aZCRl5fH/PnzOe20\n0+jatStbt27ltddei9nmhhtuoG/fvjHLpk6dSiQSia6fPHky7733HpFIhPfeew+AJUuWcP7559O+\nfXvS0tIYOXIkX3/9dbSNHj16kJ6ezpAhQ2jfvj0//vgjAM888wxnn302HTp0oGfPnjzxxBMxx16x\nYgV9+/alffv29O3blw8++IAePXowceJEIH8I/BlnnMHMmTNJS0tjxowZAHzyyScMGjSITp06kZaW\nxjXXXENmZma03a+++ophw4bRuXNnOnToQL9+/Vi8eHF0/cqVK7nssstIS0ujY8eOXHzxxbz//vvR\n9QVD7V9//XUikQifffZZTN1z586lbdu2bNiwIa7nWZyUlBRSU1N58cUXY5avWbOGTz75hI4dO8Ys\nz8nJ4f7776d79+4cd9xx9OzZk/T09Jht3njjDU4//XTat2/PH//4R8Iw3O24Cxcu5Pzzzyc1NZVu\n3bpx//33l9uJdTwOO+wwMjIyomHERx99xBVXXEFqamq0Lz788MPo9iW9BxYsWEDfvn1p164dnTt3\nZtSoUXz77bfR/S699FLGjRvHE088wcknn0xaWhoTJkwgKyuLq666itTUVHr16sWSJUui++Tm5vLI\nI4/Qu3dvOnToQJ8+fZg7d250fSQSISMjg7Fjx9KzZ8+49im4tObVV1+lR48eXHfddQC88MIL0fdM\n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\nPCeddBItW7Zk7ty57Nixg+uuu46rrrqKt99+m+nTp9OzZ09+8Ytf8OSTT7JmzRquueYaRo0axWef\nfcYf//jHMpd/BK5S4pwrNbuhouOMJvKY+vXrR1JSUqlv7kP7ZWVlcc011zBz5kyGDBnCwoULmThx\nYqnlJ5mZmTjnyMjICNskNdp7WV5cffr04Q9/+ANLlizh2muvZf369UycOBGg1NVO8vPz+eijj6LO\nIgnIyMhgxYoVwcvJXnbZZTjnSE9PDzs5ryi/ZR3L/fffT1JSEqNHj2bKlClkZWUxZswYEhMTueGG\nGzh+/DiPP/44ADfccANTp05l/PjxpKamBmfMVOa1K3rfApeRTUtLCxsgCVWZmnrooYc4/fTT+f3v\nf89tt93GWWedxfnnnx+8PzExkRdeeIGUlBTGjh3LsGHDWLlyJbNmzQoOLlaUb5G6FnefyJKSkpID\nBwooLi6puLPEvKZNfbRpk4Jy3rgo742T8t74xErOU1OjX3ZS6k5+fj6JiYkkJiYC3hU1Lr30UmbO\nnBl1k02pW/v27aNdu3bB2ytWrODuu+9m1apVUWdcNHSBPUQCM2mKioq4+OKLueWWW7j55pvrMzSR\nBiE/vzBqe9OmPtq2bfGjxyC0saeIiIiIxKzCwkKGDBlCr169yMrKwufzMXv2bNq0acOFF15Y3+E1\netu2bWP06NH87ne/Y+jQoezdu5dnnnmGfv36xeQABngzMJo1a8Z9991HUlISCxcu5NixY+VehlZE\nao5mYkhMi5Vv6aRmKe+Nk/Le+MRKzjUTo/598cUXPPHEE2RnZ9OkSRO6d+/OxIkT6dq1a32HJngz\nL+bNm0dOTk5wn4aJEyfSunXr+g6tWnbv3s3MmTPZuHEjxcXFdO7cmaysLPr27VvfoYk0CLU9E0OD\nGBLTYuU/uFKzlPfGSXlvfGIl5xrEEBER+R+1PYihjT1FREREREREJCZoEENEREREREREYoIGMURE\nREREREQkJmgQQ0RERERERERiggYxRERERERERCQmnFDfAURjZncD44AOwHZgknPuvfqNSkRERKS0\nsnZhl+qJlavSSM1Rzhsn5V2qq8HNxDCzLOBB4F4gDVgMvGVmZ9ZrYCIiIiIiIiJSrxrUTAwz8+EN\nXsxyzr3qb55mZoOBu4Dr6y04EREREREREalXDW0mRjfgZ8CKiPZVwMC6D0dEREREREREGoqGNojR\n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\nkfURtwP7crT0/34T6GZma8zsd2bWxTn3g3Nuo3PuWCWeX0RERCqgQQwREZFGwDn3OvAu8EzI8odQ\nLfFO+CMF2lLLeOqWwNEoJ+kVPa4y/gT8xr/XxBC8pSCLy4gh9DVDHYoSQ+RATQn/M2ulPEeiPI7A\nY51zL/jjLACeBL4ws2wzG1KJ5xYREZFK0CCGiIhI4zEOb0+HB6Lc9wPQKkp7y5D7ozkIJEbZ86Gi\nx1XGn4HWwC/xNgZ9I8pMkUAMoa8ZKvVHxlAlzrmlzrkr8eLOBPYDr5tZl7qKQUREJJ5pEENERCR+\nhe3D4JzLAabgbWbZLaLveuAsM4scCLgQ+NY593UZr/EXvJkIl0R5XOB5q8U5lwt8gLeM5DK8mRnR\nbACK8TbSDDKzM4EW1YyhMjMzQl+riZldGRiscM4VOefex9trpClwVjViEBERkQja2FNERCR+RTsR\nfxxvo8s7I9pn4V2+9L/N7G7gMDASb+POLMr2f4CteMtUxgJf4m2S+SDwmnPO/agj8Db4XATsds59\nENIePDbn3B4zewEYb2YO72oppwJ/BHYCL1Gx0PdqP3COmfUD9jjnvqrowc6542Y2GWhmZuMBhzcz\nZALekpa/ViIGERERqYBmYoiIiMSnEqJcEcM5VwSMxfsioySk/R/Axf62j/Cu6vFrYIxz7pmyXsT/\nfBn+x7yMtxnndOB5vMGSyJiq6k28vS7+XMFzZeFdDnWyP4bX8QZXLnLOHQ55TLQYIttnAd/jDYZM\nqCC+0MddCWzCex9y8C5Z2w7ILGcmi4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI\niIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiINDj/H7v3\n+ZNz8+iEAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0xab929a6c>"
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name=\"prediction\"></a>\n",
"#Final Model & Prediction"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def adjustForInflation(quantity):\n",
" return dfCpi['CPI'][0] * (quantity/dfCpi['CPI'])\n",
"oilDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/CRUDE_OIL_WTI_US_ENERGY_Monthly_198601-201410.csv'\n",
"#CPI - Inflation Adjustment\n",
"cpiDataPath = 'https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/regressionModel/data/Monthly_30yr/CPI_USA_Monthly_198410_201410.csv'\n",
"\n",
"dfOil = pd.read_csv(oilDataPath)\n",
"dfCpi = pd.read_csv(cpiDataPath)\n",
"#dfOil['Oil_Value'] = adjustForInflation(dfOil['Oil_Value'])\n",
"dfOil = np.around(dfOil['Oil_Value'],decimals=2)\n",
"dfOil.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 47,
"text": [
"0 75.74\n",
"1 80.53\n",
"2 91.17\n",
"3 97.86\n",
"4 98.23\n",
"Name: Oil_Value, dtype: float64"
]
}
],
"prompt_number": 47
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import datetime\n",
"masterCols = []\n",
"masterCols.append('Date')\n",
"for i in range(1,13,1):\n",
" masterCols.append(str(i))\n",
"masterCols.append('Actual Value')\n",
"dfMaster = DataFrame(data=None, columns=masterCols)\n",
"\n",
"months = ['F', 'G', 'H', 'J', 'K', 'M', 'N', 'Q', 'U', 'V', 'X', 'Z']\n",
"months = months[::-1] # reverse so that latest data comes at the top\n",
"dateArr = []\n",
"for year in range(2014,1986,-1):\n",
" mon = 12\n",
" for month in months:\n",
" dfTemp = DataFrame(data=None, columns=masterCols)\n",
" path = \"https://raw.githubusercontent.com/Sree-vathsan/CSE591-Data-Science-Project/master/data/futuresData/FUTURE_CL\"+month+str(year)+\".csv\"\n",
" df = pd.read_csv(path,nrows=6,usecols=('Date','Settle'))\n",
" settle = np.array(df['Settle'])\n",
" for i in range(1,5,1):\n",
" dfTemp.loc[0,str(i)] = settle[i-1]\n",
" dfMaster = dfMaster.append(dfTemp,ignore_index=True)\n",
" dateName = datetime.datetime.strptime('01'+str(mon)+str(year), \"%m%d%Y\").date()\n",
" mon = mon - 1\n",
" dateArr.append(dateName)\n",
"dfMaster['Date'] = dateArr\n",
"dfMaster"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>Actual Value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0 </th>\n",
" <td> 2014-01-12</td>\n",
" <td> 75.58</td>\n",
" <td> 80.54</td>\n",
" <td> 90.27</td>\n",
" <td> 94.37</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1 </th>\n",
" <td> 2014-01-11</td>\n",
" <td> 82.81</td>\n",
" <td> 91.16</td>\n",
" <td> 95.02</td>\n",
" <td> 96.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2 </th>\n",
" <td> 2014-01-10</td>\n",
" <td> 91.52</td>\n",
" <td> 95.96</td>\n",
" <td> 97.32</td>\n",
" <td> 103.85</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3 </th>\n",
" <td> 2014-01-09</td>\n",
" <td> 96.07</td>\n",
" <td> 98.17</td>\n",
" <td> 104.73</td>\n",
" <td> 101.03</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4 </th>\n",
" <td> 2014-01-08</td>\n",
" <td> 104.42</td>\n",
" <td> 105.37</td>\n",
" <td> 101.98</td>\n",
" <td> 98.28</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5 </th>\n",
" <td> 2014-01-07</td>\n",
" <td> 107.26</td>\n",
" <td> 102.71</td>\n",
" <td> 99.11</td>\n",
" <td> 99.9</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6 </th>\n",
" <td> 2014-01-06</td>\n",
" <td> 102.44</td>\n",
" <td> 99.74</td>\n",
" <td> 100.82</td>\n",
" <td> 100.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7 </th>\n",
" <td> 2014-01-05</td>\n",
" <td> 102.13</td>\n",
" <td> 101.58</td>\n",
" <td> 101.89</td>\n",
" <td> 95.8</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8 </th>\n",
" <td> 2014-01-04</td>\n",
" <td> 99.43</td>\n",
" <td> 102.59</td>\n",
" <td> 96.71</td>\n",
" <td> 98.44</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9 </th>\n",
" <td> 2014-01-03</td>\n",
" <td> 102.92</td>\n",
" <td> 97.49</td>\n",
" <td> 98.55</td>\n",
" <td> 93.24</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td> 2014-01-02</td>\n",
" <td> 94.99</td>\n",
" <td> 98.42</td>\n",
" <td> 93.01</td>\n",
" <td> 96.66</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td> 2014-01-01</td>\n",
" <td> 98.77</td>\n",
" <td> 92.72</td>\n",
" <td> 96.65</td>\n",
" <td> 101.15</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td> 2013-01-12</td>\n",
" <td> 0</td>\n",
" <td> 96.38</td>\n",
" <td> 101.9</td>\n",
" <td> 105.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td> 2013-01-11</td>\n",
" <td> 97.8</td>\n",
" <td> 102.33</td>\n",
" <td> 107.08</td>\n",
" <td> 102.94</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td> 2013-01-10</td>\n",
" <td> 104.67</td>\n",
" <td> 107.65</td>\n",
" <td> 104.22</td>\n",
" <td> 95.81</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td> 2013-01-09</td>\n",
" <td> 104.96</td>\n",
" <td> 105.03</td>\n",
" <td> 96.44</td>\n",
" <td> 92.3</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td> 2013-01-08</td>\n",
" <td> 106.91</td>\n",
" <td> 96.56</td>\n",
" <td> 92.21</td>\n",
" <td> 93.67</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td> 2013-01-07</td>\n",
" <td> 95.4</td>\n",
" <td> 91.97</td>\n",
" <td> 93.68</td>\n",
" <td> 97.64</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td> 2013-01-06</td>\n",
" <td> 96.16</td>\n",
" <td> 93.46</td>\n",
" <td> 97.49</td>\n",
" <td> 92.84</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td> 2013-01-05</td>\n",
" <td> 88.76</td>\n",
" <td> 97.23</td>\n",
" <td> 92.46</td>\n",
" <td> 98.41</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td> 2013-01-04</td>\n",
" <td> 92.96</td>\n",
" <td> 92.05</td>\n",
" <td> 97.96</td>\n",
" <td> 92.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td> 2013-01-03</td>\n",
" <td> 94.46</td>\n",
" <td> 97.49</td>\n",
" <td> 92.27</td>\n",
" <td> 90.13</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td> 2013-01-02</td>\n",
" <td> 96.24</td>\n",
" <td> 91.82</td>\n",
" <td> 89.49</td>\n",
" <td> 87.28</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td> 2013-01-01</td>\n",
" <td> 89.51</td>\n",
" <td> 88.91</td>\n",
" <td> 86.73</td>\n",
" <td> 93</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td> 2012-01-12</td>\n",
" <td> 86.67</td>\n",
" <td> 86.24</td>\n",
" <td> 92.56</td>\n",
" <td> 97.07</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td> 2012-01-11</td>\n",
" <td> 88.73</td>\n",
" <td> 92.19</td>\n",
" <td> 96.76</td>\n",
" <td> 88.72</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td> 2012-01-10</td>\n",
" <td> 91.87</td>\n",
" <td> 96.47</td>\n",
" <td> 88.34</td>\n",
" <td> 85.76</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td> 2012-01-09</td>\n",
" <td> 96.68</td>\n",
" <td> 88.06</td>\n",
" <td> 85.37</td>\n",
" <td> 87.17</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td> 2012-01-08</td>\n",
" <td> 91.44</td>\n",
" <td> 84.96</td>\n",
" <td> 86.85</td>\n",
" <td> 105.55</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td> 2012-01-07</td>\n",
" <td> 81.8</td>\n",
" <td> 86.53</td>\n",
" <td> 105.26</td>\n",
" <td> 104.03</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td> 2012-01-06</td>\n",
" <td> 91.66</td>\n",
" <td> 104.87</td>\n",
" <td> 103.54</td>\n",
" <td> 107.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td> 2012-01-05</td>\n",
" <td> 103.05</td>\n",
" <td> 103.02</td>\n",
" <td> 107.52</td>\n",
" <td> 99.27</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td> 2012-01-04</td>\n",
" <td> 105.61</td>\n",
" <td> 107.07</td>\n",
" <td> 98.85</td>\n",
" <td> 99.21</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td> 2012-01-03</td>\n",
" <td> 105.84</td>\n",
" <td> 98.48</td>\n",
" <td> 99</td>\n",
" <td> 100.55</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td> 2012-01-02</td>\n",
" <td> 98.46</td>\n",
" <td> 98.83</td>\n",
" <td> 100.46</td>\n",
" <td> 92.99</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td> 2012-01-01</td>\n",
" <td> 97.22</td>\n",
" <td> 100.36</td>\n",
" <td> 93.08</td>\n",
" <td> 79.46</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td> 2011-01-12</td>\n",
" <td> 97.41</td>\n",
" <td> 93.19</td>\n",
" <td> 79.33</td>\n",
" <td> 89.57</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td> 2011-01-11</td>\n",
" <td> 85.3</td>\n",
" <td> 79.2</td>\n",
" <td> 89.16</td>\n",
" <td> 96.6</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td> 2011-01-10</td>\n",
" <td> 86.89</td>\n",
" <td> 88.81</td>\n",
" <td> 96.13</td>\n",
" <td> 96.5</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td> 2011-01-09</td>\n",
" <td> 84.12</td>\n",
" <td> 95.7</td>\n",
" <td> 95.96</td>\n",
" <td> 103.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td> 2011-01-08</td>\n",
" <td> 98.14</td>\n",
" <td> 95.42</td>\n",
" <td> 103.27</td>\n",
" <td> 114.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td> 2011-01-07</td>\n",
" <td> 93.4</td>\n",
" <td> 102.7</td>\n",
" <td> 114.43</td>\n",
" <td> 107.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td> 2011-01-06</td>\n",
" <td> 99.49</td>\n",
" <td> 113.93</td>\n",
" <td> 107.24</td>\n",
" <td> 99.44</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td> 2011-01-05</td>\n",
" <td> 108.15</td>\n",
" <td> 106.72</td>\n",
" <td> 98.64</td>\n",
" <td> 95.82</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td> 2011-01-04</td>\n",
" <td> 102.33</td>\n",
" <td> 96.97</td>\n",
" <td> 94.28</td>\n",
" <td> 92.91</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td> 2011-01-03</td>\n",
" <td> 93.57</td>\n",
" <td> 92.19</td>\n",
" <td> 92.22</td>\n",
" <td> 85.08</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td> 2011-01-02</td>\n",
" <td> 88.86</td>\n",
" <td> 91.38</td>\n",
" <td> 84.65</td>\n",
" <td> 82.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td> 2011-01-01</td>\n",
" <td> 88.81</td>\n",
" <td> 84.11</td>\n",
" <td> 82.15</td>\n",
" <td> 81.81</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td> 2010-01-12</td>\n",
" <td> 81.51</td>\n",
" <td> 81.43</td>\n",
" <td> 80.95</td>\n",
" <td> 75.1</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td> 2010-01-11</td>\n",
" <td> 81.77</td>\n",
" <td> 79.97</td>\n",
" <td> 73.54</td>\n",
" <td> 79.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td> 2010-01-10</td>\n",
" <td> 73.52</td>\n",
" <td> 71.92</td>\n",
" <td> 79.39</td>\n",
" <td> 76.6</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td> 2010-01-09</td>\n",
" <td> 73.46</td>\n",
" <td> 78.95</td>\n",
" <td> 76.16</td>\n",
" <td> 76.12</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td> 2010-01-08</td>\n",
" <td> 77.44</td>\n",
" <td> 75.63</td>\n",
" <td> 75.16</td>\n",
" <td> 89.68</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td> 2010-01-07</td>\n",
" <td> 77.21</td>\n",
" <td> 73.97</td>\n",
" <td> 88.36</td>\n",
" <td> 84.57</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td> 2010-01-06</td>\n",
" <td> 68.01</td>\n",
" <td> 86.15</td>\n",
" <td> 84.18</td>\n",
" <td> 80.37</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td> 2010-01-05</td>\n",
" <td> 83.45</td>\n",
" <td> 83.76</td>\n",
" <td> 80.01</td>\n",
" <td> 73.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td> 2010-01-04</td>\n",
" <td> 81.25</td>\n",
" <td> 79.66</td>\n",
" <td> 73.35</td>\n",
" <td> 80.63</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td> 2010-01-03</td>\n",
" <td> 79.81</td>\n",
" <td> 72.89</td>\n",
" <td> 80.02</td>\n",
" <td> 79.84</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td> 2010-01-02</td>\n",
" <td> 77.62</td>\n",
" <td> 79.36</td>\n",
" <td> 78.66</td>\n",
" <td> 78.27</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td> 2010-01-01</td>\n",
" <td> 73.36</td>\n",
" <td> 77.28</td>\n",
" <td> 77.64</td>\n",
" <td> 71.31</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>336 rows \u00d7 14 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 48,
"text": [
" Date 1 2 3 4 5 6 7 8 9 10 \\\n",
"0 2014-01-12 75.58 80.54 90.27 94.37 NaN NaN NaN NaN NaN NaN \n",
"1 2014-01-11 82.81 91.16 95.02 96.73 NaN NaN NaN NaN NaN NaN \n",
"2 2014-01-10 91.52 95.96 97.32 103.85 NaN NaN NaN NaN NaN NaN \n",
"3 2014-01-09 96.07 98.17 104.73 101.03 NaN NaN NaN NaN NaN NaN \n",
"4 2014-01-08 104.42 105.37 101.98 98.28 NaN NaN NaN NaN NaN NaN \n",
"5 2014-01-07 107.26 102.71 99.11 99.9 NaN NaN NaN NaN NaN NaN \n",
"6 2014-01-06 102.44 99.74 100.82 100.95 NaN NaN NaN NaN NaN NaN \n",
"7 2014-01-05 102.13 101.58 101.89 95.8 NaN NaN NaN NaN NaN NaN \n",
"8 2014-01-04 99.43 102.59 96.71 98.44 NaN NaN NaN NaN NaN NaN \n",
"9 2014-01-03 102.92 97.49 98.55 93.24 NaN NaN NaN NaN NaN NaN \n",
"10 2014-01-02 94.99 98.42 93.01 96.66 NaN NaN NaN NaN NaN NaN \n",
"11 2014-01-01 98.77 92.72 96.65 101.15 NaN NaN NaN NaN NaN NaN \n",
"12 2013-01-12 0 96.38 101.9 105.71 NaN NaN NaN NaN NaN NaN \n",
"13 2013-01-11 97.8 102.33 107.08 102.94 NaN NaN NaN NaN NaN NaN \n",
"14 2013-01-10 104.67 107.65 104.22 95.81 NaN NaN NaN NaN NaN NaN \n",
"15 2013-01-09 104.96 105.03 96.44 92.3 NaN NaN NaN NaN NaN NaN \n",
"16 2013-01-08 106.91 96.56 92.21 93.67 NaN NaN NaN NaN NaN NaN \n",
"17 2013-01-07 95.4 91.97 93.68 97.64 NaN NaN NaN NaN NaN NaN \n",
"18 2013-01-06 96.16 93.46 97.49 92.84 NaN NaN NaN NaN NaN NaN \n",
"19 2013-01-05 88.76 97.23 92.46 98.41 NaN NaN NaN NaN NaN NaN \n",
"20 2013-01-04 92.96 92.05 97.96 92.73 NaN NaN NaN NaN NaN NaN \n",
"21 2013-01-03 94.46 97.49 92.27 90.13 NaN NaN NaN NaN NaN NaN \n",
"22 2013-01-02 96.24 91.82 89.49 87.28 NaN NaN NaN NaN NaN NaN \n",
"23 2013-01-01 89.51 88.91 86.73 93 NaN NaN NaN NaN NaN NaN \n",
"24 2012-01-12 86.67 86.24 92.56 97.07 NaN NaN NaN NaN NaN NaN \n",
"25 2012-01-11 88.73 92.19 96.76 88.72 NaN NaN NaN NaN NaN NaN \n",
"26 2012-01-10 91.87 96.47 88.34 85.76 NaN NaN NaN NaN NaN NaN \n",
"27 2012-01-09 96.68 88.06 85.37 87.17 NaN NaN NaN NaN NaN NaN \n",
"28 2012-01-08 91.44 84.96 86.85 105.55 NaN NaN NaN NaN NaN NaN \n",
"29 2012-01-07 81.8 86.53 105.26 104.03 NaN NaN NaN NaN NaN NaN \n",
"30 2012-01-06 91.66 104.87 103.54 107.95 NaN NaN NaN NaN NaN NaN \n",
"31 2012-01-05 103.05 103.02 107.52 99.27 NaN NaN NaN NaN NaN NaN \n",
"32 2012-01-04 105.61 107.07 98.85 99.21 NaN NaN NaN NaN NaN NaN \n",
"33 2012-01-03 105.84 98.48 99 100.55 NaN NaN NaN NaN NaN NaN \n",
"34 2012-01-02 98.46 98.83 100.46 92.99 NaN NaN NaN NaN NaN NaN \n",
"35 2012-01-01 97.22 100.36 93.08 79.46 NaN NaN NaN NaN NaN NaN \n",
"36 2011-01-12 97.41 93.19 79.33 89.57 NaN NaN NaN NaN NaN NaN \n",
"37 2011-01-11 85.3 79.2 89.16 96.6 NaN NaN NaN NaN NaN NaN \n",
"38 2011-01-10 86.89 88.81 96.13 96.5 NaN NaN NaN NaN NaN NaN \n",
"39 2011-01-09 84.12 95.7 95.96 103.73 NaN NaN NaN NaN NaN NaN \n",
"40 2011-01-08 98.14 95.42 103.27 114.71 NaN NaN NaN NaN NaN NaN \n",
"41 2011-01-07 93.4 102.7 114.43 107.71 NaN NaN NaN NaN NaN NaN \n",
"42 2011-01-06 99.49 113.93 107.24 99.44 NaN NaN NaN NaN NaN NaN \n",
"43 2011-01-05 108.15 106.72 98.64 95.82 NaN NaN NaN NaN NaN NaN \n",
"44 2011-01-04 102.33 96.97 94.28 92.91 NaN NaN NaN NaN NaN NaN \n",
"45 2011-01-03 93.57 92.19 92.22 85.08 NaN NaN NaN NaN NaN NaN \n",
"46 2011-01-02 88.86 91.38 84.65 82.73 NaN NaN NaN NaN NaN NaN \n",
"47 2011-01-01 88.81 84.11 82.15 81.81 NaN NaN NaN NaN NaN NaN \n",
"48 2010-01-12 81.51 81.43 80.95 75.1 NaN NaN NaN NaN NaN NaN \n",
"49 2010-01-11 81.77 79.97 73.54 79.95 NaN NaN NaN NaN NaN NaN \n",
"50 2010-01-10 73.52 71.92 79.39 76.6 NaN NaN NaN NaN NaN NaN \n",
"51 2010-01-09 73.46 78.95 76.16 76.12 NaN NaN NaN NaN NaN NaN \n",
"52 2010-01-08 77.44 75.63 75.16 89.68 NaN NaN NaN NaN NaN NaN \n",
"53 2010-01-07 77.21 73.97 88.36 84.57 NaN NaN NaN NaN NaN NaN \n",
"54 2010-01-06 68.01 86.15 84.18 80.37 NaN NaN NaN NaN NaN NaN \n",
"55 2010-01-05 83.45 83.76 80.01 73.95 NaN NaN NaN NaN NaN NaN \n",
"56 2010-01-04 81.25 79.66 73.35 80.63 NaN NaN NaN NaN NaN NaN \n",
"57 2010-01-03 79.81 72.89 80.02 79.84 NaN NaN NaN NaN NaN NaN \n",
"58 2010-01-02 77.62 79.36 78.66 78.27 NaN NaN NaN NaN NaN NaN \n",
"59 2010-01-01 73.36 77.28 77.64 71.31 NaN NaN NaN NaN NaN NaN \n",
" ... ... ... ... ... ... ... ... ... ... ... \n",
"\n",
" 11 12 Actual Value \n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"17 NaN NaN NaN \n",
"18 NaN NaN NaN \n",
"19 NaN NaN NaN \n",
"20 NaN NaN NaN \n",
"21 NaN NaN NaN \n",
"22 NaN NaN NaN \n",
"23 NaN NaN NaN \n",
"24 NaN NaN NaN \n",
"25 NaN NaN NaN \n",
"26 NaN NaN NaN \n",
"27 NaN NaN NaN \n",
"28 NaN NaN NaN \n",
"29 NaN NaN NaN \n",
"30 NaN NaN NaN \n",
"31 NaN NaN NaN \n",
"32 NaN NaN NaN \n",
"33 NaN NaN NaN \n",
"34 NaN NaN NaN \n",
"35 NaN NaN NaN \n",
"36 NaN NaN NaN \n",
"37 NaN NaN NaN \n",
"38 NaN NaN NaN \n",
"39 NaN NaN NaN \n",
"40 NaN NaN NaN \n",
"41 NaN NaN NaN \n",
"42 NaN NaN NaN \n",
"43 NaN NaN NaN \n",
"44 NaN NaN NaN \n",
"45 NaN NaN NaN \n",
"46 NaN NaN NaN \n",
"47 NaN NaN NaN \n",
"48 NaN NaN NaN \n",
"49 NaN NaN NaN \n",
"50 NaN NaN NaN \n",
"51 NaN NaN NaN \n",
"52 NaN NaN NaN \n",
"53 NaN NaN NaN \n",
"54 NaN NaN NaN \n",
"55 NaN NaN NaN \n",
"56 NaN NaN NaN \n",
"57 NaN NaN NaN \n",
"58 NaN NaN NaN \n",
"59 NaN NaN NaN \n",
" ... ... ... \n",
"\n",
"[336 rows x 14 columns]"
]
}
],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import statsmodels.api as sm\n",
"from statsmodels.graphics.api import qqplot\n",
"\n",
"def mvLinearRegress(y, x):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" results = sm.OLS(y, X).fit()\n",
" return results\n",
"\n",
"def mvLinearPredict(x,res):\n",
" ones = np.ones(len(x[0]))\n",
" X = sm.add_constant(np.column_stack((x[0], ones)))\n",
" for ele in x[1:]:\n",
" X = sm.add_constant(np.column_stack((ele, X)))\n",
" return res.predict(X)\n",
"\n",
"\n",
"def plot(err,c,nb,displayTitle):\n",
" fig, axes = plt.subplots(1, 1, figsize=(12,4))\n",
" axes.hist(err, color='#009999', bins=nb)\n",
" axes.set_ylabel('Error Frequency')\n",
" axes.set_xlabel('Error')\n",
" axes.set_title(displayTitle)\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dfMaster['Actual Value'] = dfOil\n",
"dfMaster"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>Actual Value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0 </th>\n",
" <td> 2014-01-12</td>\n",
" <td> 75.58</td>\n",
" <td> 80.54</td>\n",
" <td> 90.27</td>\n",
" <td> 94.37</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 75.74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1 </th>\n",
" <td> 2014-01-11</td>\n",
" <td> 82.81</td>\n",
" <td> 91.16</td>\n",
" <td> 95.02</td>\n",
" <td> 96.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 80.53</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2 </th>\n",
" <td> 2014-01-10</td>\n",
" <td> 91.52</td>\n",
" <td> 95.96</td>\n",
" <td> 97.32</td>\n",
" <td> 103.85</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 91.17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3 </th>\n",
" <td> 2014-01-09</td>\n",
" <td> 96.07</td>\n",
" <td> 98.17</td>\n",
" <td> 104.73</td>\n",
" <td> 101.03</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 97.86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4 </th>\n",
" <td> 2014-01-08</td>\n",
" <td> 104.42</td>\n",
" <td> 105.37</td>\n",
" <td> 101.98</td>\n",
" <td> 98.28</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 98.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5 </th>\n",
" <td> 2014-01-07</td>\n",
" <td> 107.26</td>\n",
" <td> 102.71</td>\n",
" <td> 99.11</td>\n",
" <td> 99.9</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 106.07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6 </th>\n",
" <td> 2014-01-06</td>\n",
" <td> 102.44</td>\n",
" <td> 99.74</td>\n",
" <td> 100.82</td>\n",
" <td> 100.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 103.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7 </th>\n",
" <td> 2014-01-05</td>\n",
" <td> 102.13</td>\n",
" <td> 101.58</td>\n",
" <td> 101.89</td>\n",
" <td> 95.8</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 100.07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8 </th>\n",
" <td> 2014-01-04</td>\n",
" <td> 99.43</td>\n",
" <td> 102.59</td>\n",
" <td> 96.71</td>\n",
" <td> 98.44</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 101.57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9 </th>\n",
" <td> 2014-01-03</td>\n",
" <td> 102.92</td>\n",
" <td> 97.49</td>\n",
" <td> 98.55</td>\n",
" <td> 93.24</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 102.88</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td> 2014-01-02</td>\n",
" <td> 94.99</td>\n",
" <td> 98.42</td>\n",
" <td> 93.01</td>\n",
" <td> 96.66</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 97.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td> 2014-01-01</td>\n",
" <td> 98.77</td>\n",
" <td> 92.72</td>\n",
" <td> 96.65</td>\n",
" <td> 101.15</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 98.17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td> 2013-01-12</td>\n",
" <td> 0</td>\n",
" <td> 96.38</td>\n",
" <td> 101.9</td>\n",
" <td> 105.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 92.55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td> 2013-01-11</td>\n",
" <td> 97.8</td>\n",
" <td> 102.33</td>\n",
" <td> 107.08</td>\n",
" <td> 102.94</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 96.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td> 2013-01-10</td>\n",
" <td> 104.67</td>\n",
" <td> 107.65</td>\n",
" <td> 104.22</td>\n",
" <td> 95.81</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 102.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td> 2013-01-09</td>\n",
" <td> 104.96</td>\n",
" <td> 105.03</td>\n",
" <td> 96.44</td>\n",
" <td> 92.3</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 107.98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td> 2013-01-08</td>\n",
" <td> 106.91</td>\n",
" <td> 96.56</td>\n",
" <td> 92.21</td>\n",
" <td> 93.67</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 105.10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td> 2013-01-07</td>\n",
" <td> 95.4</td>\n",
" <td> 91.97</td>\n",
" <td> 93.68</td>\n",
" <td> 97.64</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 96.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td> 2013-01-06</td>\n",
" <td> 96.16</td>\n",
" <td> 93.46</td>\n",
" <td> 97.49</td>\n",
" <td> 92.84</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 91.93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td> 2013-01-05</td>\n",
" <td> 88.76</td>\n",
" <td> 97.23</td>\n",
" <td> 92.46</td>\n",
" <td> 98.41</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 93.22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td> 2013-01-04</td>\n",
" <td> 92.96</td>\n",
" <td> 92.05</td>\n",
" <td> 97.96</td>\n",
" <td> 92.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 97.24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td> 2013-01-03</td>\n",
" <td> 94.46</td>\n",
" <td> 97.49</td>\n",
" <td> 92.27</td>\n",
" <td> 90.13</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 92.03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td> 2013-01-02</td>\n",
" <td> 96.24</td>\n",
" <td> 91.82</td>\n",
" <td> 89.49</td>\n",
" <td> 87.28</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 97.65</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td> 2013-01-01</td>\n",
" <td> 89.51</td>\n",
" <td> 88.91</td>\n",
" <td> 86.73</td>\n",
" <td> 93</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 91.83</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td> 2012-01-12</td>\n",
" <td> 86.67</td>\n",
" <td> 86.24</td>\n",
" <td> 92.56</td>\n",
" <td> 97.07</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 88.54</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td> 2012-01-11</td>\n",
" <td> 88.73</td>\n",
" <td> 92.19</td>\n",
" <td> 96.76</td>\n",
" <td> 88.72</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 86.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td> 2012-01-10</td>\n",
" <td> 91.87</td>\n",
" <td> 96.47</td>\n",
" <td> 88.34</td>\n",
" <td> 85.76</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 92.18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td> 2012-01-09</td>\n",
" <td> 96.68</td>\n",
" <td> 88.06</td>\n",
" <td> 85.37</td>\n",
" <td> 87.17</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 96.47</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td> 2012-01-08</td>\n",
" <td> 91.44</td>\n",
" <td> 84.96</td>\n",
" <td> 86.85</td>\n",
" <td> 105.55</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 88.08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td> 2012-01-07</td>\n",
" <td> 81.8</td>\n",
" <td> 86.53</td>\n",
" <td> 105.26</td>\n",
" <td> 104.03</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 85.04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td> 2012-01-06</td>\n",
" <td> 91.66</td>\n",
" <td> 104.87</td>\n",
" <td> 103.54</td>\n",
" <td> 107.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 86.52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td> 2012-01-05</td>\n",
" <td> 103.05</td>\n",
" <td> 103.02</td>\n",
" <td> 107.52</td>\n",
" <td> 99.27</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 104.89</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td> 2012-01-04</td>\n",
" <td> 105.61</td>\n",
" <td> 107.07</td>\n",
" <td> 98.85</td>\n",
" <td> 99.21</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 103.03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td> 2012-01-03</td>\n",
" <td> 105.84</td>\n",
" <td> 98.48</td>\n",
" <td> 99</td>\n",
" <td> 100.55</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 107.08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td> 2012-01-02</td>\n",
" <td> 98.46</td>\n",
" <td> 98.83</td>\n",
" <td> 100.46</td>\n",
" <td> 92.99</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 98.46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td> 2012-01-01</td>\n",
" <td> 97.22</td>\n",
" <td> 100.36</td>\n",
" <td> 93.08</td>\n",
" <td> 79.46</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 98.83</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td> 2011-01-12</td>\n",
" <td> 97.41</td>\n",
" <td> 93.19</td>\n",
" <td> 79.33</td>\n",
" <td> 89.57</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 100.36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td> 2011-01-11</td>\n",
" <td> 85.3</td>\n",
" <td> 79.2</td>\n",
" <td> 89.16</td>\n",
" <td> 96.6</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 93.19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td> 2011-01-10</td>\n",
" <td> 86.89</td>\n",
" <td> 88.81</td>\n",
" <td> 96.13</td>\n",
" <td> 96.5</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 78.93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td> 2011-01-09</td>\n",
" <td> 84.12</td>\n",
" <td> 95.7</td>\n",
" <td> 95.96</td>\n",
" <td> 103.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 88.81</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td> 2011-01-08</td>\n",
" <td> 98.14</td>\n",
" <td> 95.42</td>\n",
" <td> 103.27</td>\n",
" <td> 114.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 95.68</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td> 2011-01-07</td>\n",
" <td> 93.4</td>\n",
" <td> 102.7</td>\n",
" <td> 114.43</td>\n",
" <td> 107.71</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 95.30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td> 2011-01-06</td>\n",
" <td> 99.49</td>\n",
" <td> 113.93</td>\n",
" <td> 107.24</td>\n",
" <td> 99.44</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 102.70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td> 2011-01-05</td>\n",
" <td> 108.15</td>\n",
" <td> 106.72</td>\n",
" <td> 98.64</td>\n",
" <td> 95.82</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 113.39</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td> 2011-01-04</td>\n",
" <td> 102.33</td>\n",
" <td> 96.97</td>\n",
" <td> 94.28</td>\n",
" <td> 92.91</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 106.19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td> 2011-01-03</td>\n",
" <td> 93.57</td>\n",
" <td> 92.19</td>\n",
" <td> 92.22</td>\n",
" <td> 85.08</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 97.10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td> 2011-01-02</td>\n",
" <td> 88.86</td>\n",
" <td> 91.38</td>\n",
" <td> 84.65</td>\n",
" <td> 82.73</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 90.99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td> 2011-01-01</td>\n",
" <td> 88.81</td>\n",
" <td> 84.11</td>\n",
" <td> 82.15</td>\n",
" <td> 81.81</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 91.38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td> 2010-01-12</td>\n",
" <td> 81.51</td>\n",
" <td> 81.43</td>\n",
" <td> 80.95</td>\n",
" <td> 75.1</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 84.12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td> 2010-01-11</td>\n",
" <td> 81.77</td>\n",
" <td> 79.97</td>\n",
" <td> 73.54</td>\n",
" <td> 79.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 81.45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td> 2010-01-10</td>\n",
" <td> 73.52</td>\n",
" <td> 71.92</td>\n",
" <td> 79.39</td>\n",
" <td> 76.6</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 79.95</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td> 2010-01-09</td>\n",
" <td> 73.46</td>\n",
" <td> 78.95</td>\n",
" <td> 76.16</td>\n",
" <td> 76.12</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 71.93</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td> 2010-01-08</td>\n",
" <td> 77.44</td>\n",
" <td> 75.63</td>\n",
" <td> 75.16</td>\n",
" <td> 89.68</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 78.85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td> 2010-01-07</td>\n",
" <td> 77.21</td>\n",
" <td> 73.97</td>\n",
" <td> 88.36</td>\n",
" <td> 84.57</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 75.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td> 2010-01-06</td>\n",
" <td> 68.01</td>\n",
" <td> 86.15</td>\n",
" <td> 84.18</td>\n",
" <td> 80.37</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 74.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td> 2010-01-05</td>\n",
" <td> 83.45</td>\n",
" <td> 83.76</td>\n",
" <td> 80.01</td>\n",
" <td> 73.95</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 86.07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td> 2010-01-04</td>\n",
" <td> 81.25</td>\n",
" <td> 79.66</td>\n",
" <td> 73.35</td>\n",
" <td> 80.63</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 83.45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td> 2010-01-03</td>\n",
" <td> 79.81</td>\n",
" <td> 72.89</td>\n",
" <td> 80.02</td>\n",
" <td> 79.84</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 79.72</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td> 2010-01-02</td>\n",
" <td> 77.62</td>\n",
" <td> 79.36</td>\n",
" <td> 78.66</td>\n",
" <td> 78.27</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 72.85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td> 2010-01-01</td>\n",
" <td> 73.36</td>\n",
" <td> 77.28</td>\n",
" <td> 77.64</td>\n",
" <td> 71.31</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 79.39</td>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>336 rows \u00d7 14 columns</p>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 50,
"text": [
" Date 1 2 3 4 5 6 7 8 9 10 \\\n",
"0 2014-01-12 75.58 80.54 90.27 94.37 NaN NaN NaN NaN NaN NaN \n",
"1 2014-01-11 82.81 91.16 95.02 96.73 NaN NaN NaN NaN NaN NaN \n",
"2 2014-01-10 91.52 95.96 97.32 103.85 NaN NaN NaN NaN NaN NaN \n",
"3 2014-01-09 96.07 98.17 104.73 101.03 NaN NaN NaN NaN NaN NaN \n",
"4 2014-01-08 104.42 105.37 101.98 98.28 NaN NaN NaN NaN NaN NaN \n",
"5 2014-01-07 107.26 102.71 99.11 99.9 NaN NaN NaN NaN NaN NaN \n",
"6 2014-01-06 102.44 99.74 100.82 100.95 NaN NaN NaN NaN NaN NaN \n",
"7 2014-01-05 102.13 101.58 101.89 95.8 NaN NaN NaN NaN NaN NaN \n",
"8 2014-01-04 99.43 102.59 96.71 98.44 NaN NaN NaN NaN NaN NaN \n",
"9 2014-01-03 102.92 97.49 98.55 93.24 NaN NaN NaN NaN NaN NaN \n",
"10 2014-01-02 94.99 98.42 93.01 96.66 NaN NaN NaN NaN NaN NaN \n",
"11 2014-01-01 98.77 92.72 96.65 101.15 NaN NaN NaN NaN NaN NaN \n",
"12 2013-01-12 0 96.38 101.9 105.71 NaN NaN NaN NaN NaN NaN \n",
"13 2013-01-11 97.8 102.33 107.08 102.94 NaN NaN NaN NaN NaN NaN \n",
"14 2013-01-10 104.67 107.65 104.22 95.81 NaN NaN NaN NaN NaN NaN \n",
"15 2013-01-09 104.96 105.03 96.44 92.3 NaN NaN NaN NaN NaN NaN \n",
"16 2013-01-08 106.91 96.56 92.21 93.67 NaN NaN NaN NaN NaN NaN \n",
"17 2013-01-07 95.4 91.97 93.68 97.64 NaN NaN NaN NaN NaN NaN \n",
"18 2013-01-06 96.16 93.46 97.49 92.84 NaN NaN NaN NaN NaN NaN \n",
"19 2013-01-05 88.76 97.23 92.46 98.41 NaN NaN NaN NaN NaN NaN \n",
"20 2013-01-04 92.96 92.05 97.96 92.73 NaN NaN NaN NaN NaN NaN \n",
"21 2013-01-03 94.46 97.49 92.27 90.13 NaN NaN NaN NaN NaN NaN \n",
"22 2013-01-02 96.24 91.82 89.49 87.28 NaN NaN NaN NaN NaN NaN \n",
"23 2013-01-01 89.51 88.91 86.73 93 NaN NaN NaN NaN NaN NaN \n",
"24 2012-01-12 86.67 86.24 92.56 97.07 NaN NaN NaN NaN NaN NaN \n",
"25 2012-01-11 88.73 92.19 96.76 88.72 NaN NaN NaN NaN NaN NaN \n",
"26 2012-01-10 91.87 96.47 88.34 85.76 NaN NaN NaN NaN NaN NaN \n",
"27 2012-01-09 96.68 88.06 85.37 87.17 NaN NaN NaN NaN NaN NaN \n",
"28 2012-01-08 91.44 84.96 86.85 105.55 NaN NaN NaN NaN NaN NaN \n",
"29 2012-01-07 81.8 86.53 105.26 104.03 NaN NaN NaN NaN NaN NaN \n",
"30 2012-01-06 91.66 104.87 103.54 107.95 NaN NaN NaN NaN NaN NaN \n",
"31 2012-01-05 103.05 103.02 107.52 99.27 NaN NaN NaN NaN NaN NaN \n",
"32 2012-01-04 105.61 107.07 98.85 99.21 NaN NaN NaN NaN NaN NaN \n",
"33 2012-01-03 105.84 98.48 99 100.55 NaN NaN NaN NaN NaN NaN \n",
"34 2012-01-02 98.46 98.83 100.46 92.99 NaN NaN NaN NaN NaN NaN \n",
"35 2012-01-01 97.22 100.36 93.08 79.46 NaN NaN NaN NaN NaN NaN \n",
"36 2011-01-12 97.41 93.19 79.33 89.57 NaN NaN NaN NaN NaN NaN \n",
"37 2011-01-11 85.3 79.2 89.16 96.6 NaN NaN NaN NaN NaN NaN \n",
"38 2011-01-10 86.89 88.81 96.13 96.5 NaN NaN NaN NaN NaN NaN \n",
"39 2011-01-09 84.12 95.7 95.96 103.73 NaN NaN NaN NaN NaN NaN \n",
"40 2011-01-08 98.14 95.42 103.27 114.71 NaN NaN NaN NaN NaN NaN \n",
"41 2011-01-07 93.4 102.7 114.43 107.71 NaN NaN NaN NaN NaN NaN \n",
"42 2011-01-06 99.49 113.93 107.24 99.44 NaN NaN NaN NaN NaN NaN \n",
"43 2011-01-05 108.15 106.72 98.64 95.82 NaN NaN NaN NaN NaN NaN \n",
"44 2011-01-04 102.33 96.97 94.28 92.91 NaN NaN NaN NaN NaN NaN \n",
"45 2011-01-03 93.57 92.19 92.22 85.08 NaN NaN NaN NaN NaN NaN \n",
"46 2011-01-02 88.86 91.38 84.65 82.73 NaN NaN NaN NaN NaN NaN \n",
"47 2011-01-01 88.81 84.11 82.15 81.81 NaN NaN NaN NaN NaN NaN \n",
"48 2010-01-12 81.51 81.43 80.95 75.1 NaN NaN NaN NaN NaN NaN \n",
"49 2010-01-11 81.77 79.97 73.54 79.95 NaN NaN NaN NaN NaN NaN \n",
"50 2010-01-10 73.52 71.92 79.39 76.6 NaN NaN NaN NaN NaN NaN \n",
"51 2010-01-09 73.46 78.95 76.16 76.12 NaN NaN NaN NaN NaN NaN \n",
"52 2010-01-08 77.44 75.63 75.16 89.68 NaN NaN NaN NaN NaN NaN \n",
"53 2010-01-07 77.21 73.97 88.36 84.57 NaN NaN NaN NaN NaN NaN \n",
"54 2010-01-06 68.01 86.15 84.18 80.37 NaN NaN NaN NaN NaN NaN \n",
"55 2010-01-05 83.45 83.76 80.01 73.95 NaN NaN NaN NaN NaN NaN \n",
"56 2010-01-04 81.25 79.66 73.35 80.63 NaN NaN NaN NaN NaN NaN \n",
"57 2010-01-03 79.81 72.89 80.02 79.84 NaN NaN NaN NaN NaN NaN \n",
"58 2010-01-02 77.62 79.36 78.66 78.27 NaN NaN NaN NaN NaN NaN \n",
"59 2010-01-01 73.36 77.28 77.64 71.31 NaN NaN NaN NaN NaN NaN \n",
" ... ... ... ... ... ... ... ... ... ... ... \n",
"\n",
" 11 12 Actual Value \n",
"0 NaN NaN 75.74 \n",
"1 NaN NaN 80.53 \n",
"2 NaN NaN 91.17 \n",
"3 NaN NaN 97.86 \n",
"4 NaN NaN 98.23 \n",
"5 NaN NaN 106.07 \n",
"6 NaN NaN 103.40 \n",
"7 NaN NaN 100.07 \n",
"8 NaN NaN 101.57 \n",
"9 NaN NaN 102.88 \n",
"10 NaN NaN 97.55 \n",
"11 NaN NaN 98.17 \n",
"12 NaN NaN 92.55 \n",
"13 NaN NaN 96.29 \n",
"14 NaN NaN 102.36 \n",
"15 NaN NaN 107.98 \n",
"16 NaN NaN 105.10 \n",
"17 NaN NaN 96.36 \n",
"18 NaN NaN 91.93 \n",
"19 NaN NaN 93.22 \n",
"20 NaN NaN 97.24 \n",
"21 NaN NaN 92.03 \n",
"22 NaN NaN 97.65 \n",
"23 NaN NaN 91.83 \n",
"24 NaN NaN 88.54 \n",
"25 NaN NaN 86.23 \n",
"26 NaN NaN 92.18 \n",
"27 NaN NaN 96.47 \n",
"28 NaN NaN 88.08 \n",
"29 NaN NaN 85.04 \n",
"30 NaN NaN 86.52 \n",
"31 NaN NaN 104.89 \n",
"32 NaN NaN 103.03 \n",
"33 NaN NaN 107.08 \n",
"34 NaN NaN 98.46 \n",
"35 NaN NaN 98.83 \n",
"36 NaN NaN 100.36 \n",
"37 NaN NaN 93.19 \n",
"38 NaN NaN 78.93 \n",
"39 NaN NaN 88.81 \n",
"40 NaN NaN 95.68 \n",
"41 NaN NaN 95.30 \n",
"42 NaN NaN 102.70 \n",
"43 NaN NaN 113.39 \n",
"44 NaN NaN 106.19 \n",
"45 NaN NaN 97.10 \n",
"46 NaN NaN 90.99 \n",
"47 NaN NaN 91.38 \n",
"48 NaN NaN 84.12 \n",
"49 NaN NaN 81.45 \n",
"50 NaN NaN 79.95 \n",
"51 NaN NaN 71.93 \n",
"52 NaN NaN 78.85 \n",
"53 NaN NaN 75.59 \n",
"54 NaN NaN 74.00 \n",
"55 NaN NaN 86.07 \n",
"56 NaN NaN 83.45 \n",
"57 NaN NaN 79.72 \n",
"58 NaN NaN 72.85 \n",
"59 NaN NaN 79.39 \n",
" ... ... ... \n",
"\n",
"[336 rows x 14 columns]"
]
}
],
"prompt_number": 50
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"size=len(dfMaster)\n",
"\n",
"testSize=np.int(0.3*size);\n",
"dfMasterTrain=dfMaster[testSize:]\n",
"dfMasterTest=dfMaster[0:testSize]\n",
"\n",
"yTrain=np.array(dfMasterTrain['Actual Value'])\n",
"yTest=np.array(dfMasterTest['Actual Value'])\n",
"\n",
"temp=np.array(dfMaster['Actual Value'])\n",
"for i in range(0,len(temp),1):\n",
" if(i<len(temp)-1):\n",
" temp[i]=temp[i+1]\n",
"\n",
"tempTrain=temp[testSize:]\n",
"tempTest=temp[0:testSize]\n",
" \n",
"\n",
"xTrain=[]\n",
"for i in (1,2,3,4):\n",
" xTrain.append(np.array(dfMasterTrain[str(i)]))\n",
" \n",
"xTrain.append(np.array(tempTrain))\n",
"\n",
"xTest=[]\n",
"for i in (1,2,3,4):\n",
" xTest.append(np.array(dfMasterTest[str(i)]))\n",
"\n",
"xTest.append(np.array(tempTest))\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"result = mvLinearRegress(yTrain, xTrain)\n",
"#result.summary()\n",
"yPred = mvLinearPredict(xTest,result)\n",
"yPred\n",
"\n",
"errPredy= yPred-yTest\n",
"alpha=np.mean(errPredy)\n",
"#print (\"Mean error=\",alpha)\n",
"\n",
"yPred=yPred-alpha\n",
"errPredy=yPred-yTest\n",
"#print (\"Mean error=\",np.mean(errPredy))\n",
"\n",
"\n",
"\n",
"#removing the outlier\n",
"#for i in (0,len(errPredy)-1,1):\n",
"# if((np.absolute(errPredy[i])/yTest[i])>0.2):\n",
"# errPredy[i]=0\n",
"\n",
"\n",
"print (errPredy/yTest)\n",
"errPredy[12]=0\n",
"yPred[12]=yTest[12]\n",
"errRMSE=np.sqrt(mean_squared_error(yPred,yTest))\n",
"errABS=np.absolute(errPredy)\n",
"errVar=(errABS/yTest)\n",
"\n",
"#print (errPredy/yTest)\n",
"print (\"Mean Absolute error\",np.mean(errABS))\n",
"print (\"RMSE error\",errRMSE)\n",
"print (\"Mean variance percentage\",np.mean(errVar))\n",
"print (\"Standard deviation\",np.std(errPredy/yTest))\n",
"\n",
"\n",
"plot(errPredy/yTest,'g',20,\"Futures error plot\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0.038847380262183137 0.070464502278698979 0.053498472172024032\n",
" 0.0086290695513190196 0.087162734899859651 0.024390051418920134\n",
" 0.0070563513213562851 0.036689719486110627 0.00030367652220309572\n",
" 0.0083860079448818247 -0.0090998441234419851 0.014028437777269075\n",
" -0.79526734978947977 0.046341749866129191 0.045375954603005121\n",
" -0.017318400569617073 0.01089138716019453 0.0020272384779412636\n",
" 0.058892297424185294 -0.017024653168457318 -0.025143684339563512\n",
" 0.047275112973852437 -0.008274073780371434 -0.014658471428358289\n",
" 0.0013730418588228661 0.057504707933761293 0.015819053564098361\n",
" 0.0004483528616422138 0.04760829184125967 0.0072046934512980127\n",
" 0.10707082079574613 0.0021810617350987694 0.03929975771510593\n",
" -0.0070993104766738533 0.018478425706131091 -0.001116315715234838\n",
" -0.030687417139983235 -0.074417224156503883 0.13233762315129641\n",
" -0.0099782847891823831 0.045445966713229861 0.025280185749977264\n",
" 0.0012413456120243551 -0.042765283105693538 -0.030345907283773246\n",
" -0.035594276118620483 -0.0076607238147091104 -0.023066848595638477\n",
" -0.01591105147934364 0.011092290558344077 -0.061402503794494856\n",
" 0.048653761689099906 -0.0040159894149595704 0.046002046783394562\n",
" -0.022123141360544971 -0.02134028508969681 -0.017787681187863148\n",
" 0.0082793571090352715 0.08771436579916421 -0.052711892639476399\n",
" 0.0054843198256839818 0.021173802967581281 0.029760327588595429\n",
" 0.043918293958878835 -0.042898281244269185 -0.043881265657315587\n",
" -0.12262638686997522 -0.054423488332638659 0.011661809285389301\n",
" -0.076080783684300227 -0.0037327506283699125 -0.086611548843251382\n",
" 0.035225524142154151 0.16463024726319711 0.22240298958275606\n",
" 0.039041938227445332 0.057171460644082829 -0.040943130932428892\n",
" 0.001591632572275251 0.03645697280414021 0.033551315948522169\n",
" -0.0086266118162835817 0.0033176932344107335 -0.043410589357442686\n",
" 0.072115891306108793 -0.073300256459738242 0.017760527264164005\n",
" -0.031668354363839392 -0.037583160226725393 -0.023614440486743382\n",
" 0.036420608082700021 -0.016594262216431076 -0.11383665987194057\n",
" -0.03767087834631544 -0.073024842628068604 0.049786512747956473\n",
" -0.081577258566364733 0.016596389303702715 0.016124651349694485\n",
" 0.056524492172740269]\n",
"Mean Absolute error 3.1354376986\n",
"RMSE error 4.40951191482\n",
"Mean variance percentage 0.0379566090915\n",
"Standard deviation 0.0522248761398\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0xab7729cc>"
]
}
],
"prompt_number": 52
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"yTrainNew=np.array(dfMasterTrain['Actual Value'])\n",
"yTestNew=np.array(dfMasterTest['Actual Value'])\n",
"\n",
"yTrainDiff=np.zeros(len(yTrainNew)-1)\n",
"yTestDiff=np.zeros(len(yTestNew)-1)\n",
"\n",
"print (len(yTrainDiff))\n",
"\n",
"for i in range(0,len(yTrainNew)-1):\n",
" yTrainDiff[i]=yTrainNew[i]-yTrainNew[i+1]\n",
" \n",
"for i in range(0,len(yTestNew)-1):\n",
" yTestDiff[i]=yTestNew[i]-yTestNew[i+1]\n",
"\n",
" \n",
"##creating train array\n",
"xTrainNew=[]\n",
"r=np.array(dfMasterTrain['1'])\n",
"diff=np.zeros(len(yTrainNew)-1)\n",
"for i in range(0,len(yTrainNew)-1):\n",
" diff[i]=r[i]-yTrainNew[i+1]\n",
" #print (diff[i],r[i],yTrainNew[i+1])\n",
"\n",
"xTrainNew.append(diff)\n",
"\n",
"r2=np.array(dfMasterTrain['2'])\n",
"diff2=np.zeros(len(yTrainNew)-1)\n",
"for i in range(0,len(yTrainNew)-2):\n",
" diff2[i]=r2[i]-yTrainNew[i+2]\n",
" #print (diff2[i])\n",
"\n",
"diff2[len(yTrainNew)-2]=diff2[len(yTrainNew)-3] \n",
"xTrainNew.append(diff2)\n",
"\n",
"\n",
"##creating test array\n",
"xTestNew=[]\n",
"r3=np.array(dfMasterTest['1'])\n",
"diff3=np.zeros(len(yTestNew)-1)\n",
"for i in range(0,len(yTestNew)-1):\n",
" diff3[i]=r3[i]-yTestNew[i+1]\n",
" #print (diff3[i],r3[i],yTestNew[i+1])\n",
"\n",
"xTestNew.append(diff3)\n",
"\n",
"r4=np.array(dfMasterTest['2'])\n",
"diff4=np.zeros(len(yTestNew)-1)\n",
"for i in range(0,len(yTestNew)-2):\n",
" diff4[i]=r4[i]-yTestNew[i+2]\n",
" #print (diff4[i],r4[i],yTestNew[i+2])\n",
"\n",
"diff4[len(yTestNew)-2]=diff4[len(yTestNew)-3] \n",
"xTestNew.append(diff4)\n",
"\n",
"#print (xTrainNew)\n",
" \n",
"result2 = mvLinearRegress(yTrainDiff, xTrainNew)\n",
"\n",
"yPredDiff = mvLinearPredict(xTestNew,result2)\n",
"print (yPredDiff[0])\n",
"\n",
"yPredNew=np.zeros(len(yTestNew))\n",
"for i in range(0,len(yTestNew)-1):\n",
" yPredNew[i]=yPredDiff[i]+yTestNew[i+1]\n",
"\n",
"yErr=yPredNew-yTestNew\n",
"beta=np.mean(yErr)\n",
"yPredNew=yPredNew-beta\n",
"yErr=yPredNew-yTestNew\n",
"\n",
"yErr[12]=0\n",
"yPredNew[12]=yTestNew[12]\n",
"yErr[99]=0\n",
"yPredNew[99]=yTestNew[99]\n",
"print (yErr/yTestNew)\n",
"errRMSE=np.sqrt(mean_squared_error(yPredNew,yTestNew))\n",
"errABS=np.absolute(yErr)\n",
"errVar=(errABS/yTestNew)\n",
"\n",
"#print (errPredy/yTest)\n",
"print (\"Mean Absolute error\",np.mean(errABS))\n",
"print (\"RMSE error\",errRMSE)\n",
"print (\"Mean variance percentage\",np.mean(errVar))\n",
"print (\"Standard deviation\",np.std(yErr/yTestNew))\n",
"plot(yErr/yTestNew,'g',20,\"Futures error plot\")\n",
"\n",
"for i in range(0,len(yErr)):\n",
" if (np.absolute(yErr[i])/yTestNew[i]>0.8):\n",
" print (i)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"235\n",
"-3.76966589719\n",
"[ 0.04276535 0.07696626 0.04158374 0.01057953 0.08831816 0.02508526\n",
" 0.00863359 0.04224272 0.00585327 0.01283591 0.00107441 0.01832611\n",
" 0. 0.04895171 0.04964429 -0.00903832 0.01921306 0.00704601\n",
" 0.06557567 -0.00878057 -0.02130783 0.05543719 -0.00056181 -0.00355885\n",
" 0.00491635 0.06341393 0.02765026 0.0084256 0.05081836 0.0036594\n",
" 0.11241303 0.00471184 0.04723303 -0.00309806 0.02378048 0.01026987\n",
" -0.0182915 -0.07046529 0.13576617 -0.00417037 0.04561279 0.02401227\n",
" 0.0131392 -0.03174972 -0.02562447 -0.01834715 0.00418099 -0.01367944\n",
" -0.00501564 0.02486024 -0.05388567 0.0647572 0.00570883 0.04733518\n",
" -0.00744374 -0.00563764 -0.00493438 0.01541036 0.09982446 -0.03912734\n",
" 0.02150594 0.0351383 0.04289465 0.06033015 -0.02122512 -0.01670539\n",
" -0.09267603 -0.02334103 0.04691052 -0.05425697 0.01373961 -0.0961073\n",
" 0.01480747 0.15857096 0.21551025 0.032268 0.06341308 -0.03402986\n",
" 0.00685972 0.04117789 0.04364871 -0.00335319 0.01457166 -0.03574358\n",
" 0.09303211 -0.05977748 0.02852537 -0.01198877 -0.01898423 -0.01071072\n",
" 0.05214808 0.0029971 -0.09326827 -0.02246502 -0.05149463 0.07219215\n",
" -0.06816536 0.02766473 0.0282977 0. ]\n",
"Mean Absolute error 3.0237214424\n",
"RMSE error 4.32868197237\n",
"Mean variance percentage 0.0363324698625\n",
"Standard deviation 0.0488759917572\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0xab3fa06c>"
]
}
],
"prompt_number": 54
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment