Skip to content

Instantly share code, notes, and snippets.

@ZeccaLehn
Last active July 10, 2023 10:10
Show Gist options
  • Save ZeccaLehn/c49ccc07af115e3dec878ed8a68b21d0 to your computer and use it in GitHub Desktop.
Save ZeccaLehn/c49ccc07af115e3dec878ed8a68b21d0 to your computer and use it in GitHub Desktop.
Py: Adjust Splits and Dividends from Real Prices using Quandl Finance Data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Fundamental Data From Quandl"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import quandl\n",
"quandl.ApiConfig.api_key = 'xxxxxxxx'"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>m_ticker</th>\n",
" <th>ticker</th>\n",
" <th>comp_name</th>\n",
" <th>comp_name_2</th>\n",
" <th>exchange</th>\n",
" <th>currency_code</th>\n",
" <th>per_end_date</th>\n",
" <th>per_type</th>\n",
" <th>per_code</th>\n",
" <th>per_fisc_year</th>\n",
" <th>...</th>\n",
" <th>stock_based_compsn_qd</th>\n",
" <th>cash_flow_oper_activity_qd</th>\n",
" <th>net_change_prop_plant_equip_qd</th>\n",
" <th>comm_stock_div_paid_qd</th>\n",
" <th>pref_stock_div_paid_qd</th>\n",
" <th>tot_comm_pref_stock_div_qd</th>\n",
" <th>wavg_shares_out</th>\n",
" <th>wavg_shares_out_diluted</th>\n",
" <th>eps_basic_net</th>\n",
" <th>eps_diluted_net</th>\n",
" </tr>\n",
" <tr>\n",
" <th>None</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>AAPL</td>\n",
" <td>AAPL</td>\n",
" <td>APPLE INC</td>\n",
" <td>Apple Inc.</td>\n",
" <td>NSDQ</td>\n",
" <td>USD</td>\n",
" <td>2011-09-30</td>\n",
" <td>A</td>\n",
" <td>None</td>\n",
" <td>2011</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>6469.806</td>\n",
" <td>6556.515</td>\n",
" <td>4.0071</td>\n",
" <td>3.9543</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>AAPL</td>\n",
" <td>AAPL</td>\n",
" <td>APPLE INC</td>\n",
" <td>Apple Inc.</td>\n",
" <td>NSDQ</td>\n",
" <td>USD</td>\n",
" <td>2012-09-30</td>\n",
" <td>A</td>\n",
" <td>None</td>\n",
" <td>2012</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>6543.726</td>\n",
" <td>6617.483</td>\n",
" <td>6.3800</td>\n",
" <td>6.3100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>AAPL</td>\n",
" <td>AAPL</td>\n",
" <td>APPLE INC</td>\n",
" <td>Apple Inc.</td>\n",
" <td>NSDQ</td>\n",
" <td>USD</td>\n",
" <td>2013-09-30</td>\n",
" <td>A</td>\n",
" <td>None</td>\n",
" <td>2013</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>6477.320</td>\n",
" <td>6521.634</td>\n",
" <td>5.7200</td>\n",
" <td>5.6800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>AAPL</td>\n",
" <td>AAPL</td>\n",
" <td>APPLE INC</td>\n",
" <td>Apple Inc.</td>\n",
" <td>NSDQ</td>\n",
" <td>USD</td>\n",
" <td>2014-09-30</td>\n",
" <td>A</td>\n",
" <td>None</td>\n",
" <td>2014</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>6085.572</td>\n",
" <td>6122.663</td>\n",
" <td>6.4900</td>\n",
" <td>6.4500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>AAPL</td>\n",
" <td>AAPL</td>\n",
" <td>APPLE INC</td>\n",
" <td>Apple Inc.</td>\n",
" <td>NSDQ</td>\n",
" <td>USD</td>\n",
" <td>2015-09-30</td>\n",
" <td>A</td>\n",
" <td>None</td>\n",
" <td>2015</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>5753.421</td>\n",
" <td>5793.069</td>\n",
" <td>9.2800</td>\n",
" <td>9.2200</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 249 columns</p>\n",
"</div>"
],
"text/plain": [
" m_ticker ticker comp_name comp_name_2 exchange currency_code \\\n",
"None \n",
"0 AAPL AAPL APPLE INC Apple Inc. NSDQ USD \n",
"1 AAPL AAPL APPLE INC Apple Inc. NSDQ USD \n",
"2 AAPL AAPL APPLE INC Apple Inc. NSDQ USD \n",
"3 AAPL AAPL APPLE INC Apple Inc. NSDQ USD \n",
"4 AAPL AAPL APPLE INC Apple Inc. NSDQ USD \n",
"\n",
" per_end_date per_type per_code per_fisc_year ... \\\n",
"None ... \n",
"0 2011-09-30 A None 2011 ... \n",
"1 2012-09-30 A None 2012 ... \n",
"2 2013-09-30 A None 2013 ... \n",
"3 2014-09-30 A None 2014 ... \n",
"4 2015-09-30 A None 2015 ... \n",
"\n",
" stock_based_compsn_qd cash_flow_oper_activity_qd \\\n",
"None \n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"\n",
" net_change_prop_plant_equip_qd comm_stock_div_paid_qd \\\n",
"None \n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"\n",
" pref_stock_div_paid_qd tot_comm_pref_stock_div_qd wavg_shares_out \\\n",
"None \n",
"0 None NaN 6469.806 \n",
"1 None NaN 6543.726 \n",
"2 None NaN 6477.320 \n",
"3 None NaN 6085.572 \n",
"4 None NaN 5753.421 \n",
"\n",
" wavg_shares_out_diluted eps_basic_net eps_diluted_net \n",
"None \n",
"0 6556.515 4.0071 3.9543 \n",
"1 6617.483 6.3800 6.3100 \n",
"2 6521.634 5.7200 5.6800 \n",
"3 6122.663 6.4900 6.4500 \n",
"4 5793.069 9.2800 9.2200 \n",
"\n",
"[5 rows x 249 columns]"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fundamentalData = quandl.get_table('ZACKS/FC', ticker='AAPL')\n",
"fundamentalData[0:5]"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"['m_ticker',\n",
" 'ticker',\n",
" 'comp_name',\n",
" 'comp_name_2',\n",
" 'exchange',\n",
" 'currency_code',\n",
" 'per_end_date',\n",
" 'per_type',\n",
" 'per_code']"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(fundamentalData.columns)[0:9]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Price Data From Quandl"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"priceData = quandl.get('EOD/AAPL')"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"priceData = priceData.loc['12/12/1980':'08/26/2016'] "
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1980-12-12</th>\n",
" <td>28.75</td>\n",
" <td>28.87</td>\n",
" <td>28.75</td>\n",
" <td>28.75</td>\n",
" <td>2093900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.421187</td>\n",
" <td>0.422945</td>\n",
" <td>0.421187</td>\n",
" <td>0.421187</td>\n",
" <td>117258400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-15</th>\n",
" <td>27.38</td>\n",
" <td>27.38</td>\n",
" <td>27.25</td>\n",
" <td>27.25</td>\n",
" <td>785200.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.401117</td>\n",
" <td>0.401117</td>\n",
" <td>0.399212</td>\n",
" <td>0.399212</td>\n",
" <td>43971200.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-16</th>\n",
" <td>25.37</td>\n",
" <td>25.37</td>\n",
" <td>25.25</td>\n",
" <td>25.25</td>\n",
" <td>472000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.371670</td>\n",
" <td>0.371670</td>\n",
" <td>0.369912</td>\n",
" <td>0.369912</td>\n",
" <td>26432000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-17</th>\n",
" <td>25.87</td>\n",
" <td>26.00</td>\n",
" <td>25.87</td>\n",
" <td>25.87</td>\n",
" <td>385900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.378995</td>\n",
" <td>0.380900</td>\n",
" <td>0.378995</td>\n",
" <td>0.378995</td>\n",
" <td>21610400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-18</th>\n",
" <td>26.63</td>\n",
" <td>26.75</td>\n",
" <td>26.63</td>\n",
" <td>26.63</td>\n",
" <td>327900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.390129</td>\n",
" <td>0.391887</td>\n",
" <td>0.390129</td>\n",
" <td>0.390129</td>\n",
" <td>18362400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-19</th>\n",
" <td>28.25</td>\n",
" <td>28.38</td>\n",
" <td>28.25</td>\n",
" <td>28.25</td>\n",
" <td>217100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.413862</td>\n",
" <td>0.415767</td>\n",
" <td>0.413862</td>\n",
" <td>0.413862</td>\n",
" <td>12157600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-22</th>\n",
" <td>29.63</td>\n",
" <td>29.75</td>\n",
" <td>29.63</td>\n",
" <td>29.63</td>\n",
" <td>166800.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.434079</td>\n",
" <td>0.435837</td>\n",
" <td>0.434079</td>\n",
" <td>0.434079</td>\n",
" <td>9340800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-23</th>\n",
" <td>30.88</td>\n",
" <td>31.00</td>\n",
" <td>30.88</td>\n",
" <td>30.88</td>\n",
" <td>209600.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.452392</td>\n",
" <td>0.454150</td>\n",
" <td>0.452392</td>\n",
" <td>0.452392</td>\n",
" <td>11737600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-24</th>\n",
" <td>32.50</td>\n",
" <td>32.63</td>\n",
" <td>32.50</td>\n",
" <td>32.50</td>\n",
" <td>214300.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.476125</td>\n",
" <td>0.478029</td>\n",
" <td>0.476125</td>\n",
" <td>0.476125</td>\n",
" <td>12000800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-26</th>\n",
" <td>35.50</td>\n",
" <td>35.62</td>\n",
" <td>35.50</td>\n",
" <td>35.50</td>\n",
" <td>248100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.520075</td>\n",
" <td>0.521833</td>\n",
" <td>0.520075</td>\n",
" <td>0.520075</td>\n",
" <td>13893600.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split Adj_Open \\\n",
"Date \n",
"1980-12-12 28.75 28.87 28.75 28.75 2093900.0 0.0 1.0 0.421187 \n",
"1980-12-15 27.38 27.38 27.25 27.25 785200.0 0.0 1.0 0.401117 \n",
"1980-12-16 25.37 25.37 25.25 25.25 472000.0 0.0 1.0 0.371670 \n",
"1980-12-17 25.87 26.00 25.87 25.87 385900.0 0.0 1.0 0.378995 \n",
"1980-12-18 26.63 26.75 26.63 26.63 327900.0 0.0 1.0 0.390129 \n",
"1980-12-19 28.25 28.38 28.25 28.25 217100.0 0.0 1.0 0.413862 \n",
"1980-12-22 29.63 29.75 29.63 29.63 166800.0 0.0 1.0 0.434079 \n",
"1980-12-23 30.88 31.00 30.88 30.88 209600.0 0.0 1.0 0.452392 \n",
"1980-12-24 32.50 32.63 32.50 32.50 214300.0 0.0 1.0 0.476125 \n",
"1980-12-26 35.50 35.62 35.50 35.50 248100.0 0.0 1.0 0.520075 \n",
"\n",
" Adj_High Adj_Low Adj_Close Adj_Volume \n",
"Date \n",
"1980-12-12 0.422945 0.421187 0.421187 117258400.0 \n",
"1980-12-15 0.401117 0.399212 0.399212 43971200.0 \n",
"1980-12-16 0.371670 0.369912 0.369912 26432000.0 \n",
"1980-12-17 0.380900 0.378995 0.378995 21610400.0 \n",
"1980-12-18 0.391887 0.390129 0.390129 18362400.0 \n",
"1980-12-19 0.415767 0.413862 0.413862 12157600.0 \n",
"1980-12-22 0.435837 0.434079 0.434079 9340800.0 \n",
"1980-12-23 0.454150 0.452392 0.452392 11737600.0 \n",
"1980-12-24 0.478029 0.476125 0.476125 12000800.0 \n",
"1980-12-26 0.521833 0.520075 0.520075 13893600.0 "
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"priceData[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2015-01-23</th>\n",
" <td>112.300</td>\n",
" <td>113.7500</td>\n",
" <td>111.530</td>\n",
" <td>112.98</td>\n",
" <td>46464828.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.302198</td>\n",
" <td>107.674755</td>\n",
" <td>105.573322</td>\n",
" <td>106.945880</td>\n",
" <td>46464828.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-26</th>\n",
" <td>113.740</td>\n",
" <td>114.3626</td>\n",
" <td>112.800</td>\n",
" <td>113.10</td>\n",
" <td>55614979.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>107.665289</td>\n",
" <td>108.254637</td>\n",
" <td>106.775493</td>\n",
" <td>107.059471</td>\n",
" <td>55614979.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-27</th>\n",
" <td>112.420</td>\n",
" <td>112.4800</td>\n",
" <td>109.030</td>\n",
" <td>109.14</td>\n",
" <td>95568749.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.415788</td>\n",
" <td>106.472584</td>\n",
" <td>103.206844</td>\n",
" <td>103.310969</td>\n",
" <td>95568749.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-28</th>\n",
" <td>117.625</td>\n",
" <td>118.1200</td>\n",
" <td>115.310</td>\n",
" <td>115.31</td>\n",
" <td>146477063.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>111.342796</td>\n",
" <td>111.811359</td>\n",
" <td>109.151437</td>\n",
" <td>109.151437</td>\n",
" <td>146477063.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-29</th>\n",
" <td>116.320</td>\n",
" <td>119.1900</td>\n",
" <td>115.560</td>\n",
" <td>118.90</td>\n",
" <td>84436432.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>110.107494</td>\n",
" <td>112.824211</td>\n",
" <td>109.388085</td>\n",
" <td>112.549700</td>\n",
" <td>84436432.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-30</th>\n",
" <td>118.400</td>\n",
" <td>120.0000</td>\n",
" <td>116.850</td>\n",
" <td>117.16</td>\n",
" <td>83745461.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.076404</td>\n",
" <td>113.590950</td>\n",
" <td>110.609188</td>\n",
" <td>110.902631</td>\n",
" <td>83745461.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-02</th>\n",
" <td>118.050</td>\n",
" <td>119.1700</td>\n",
" <td>116.080</td>\n",
" <td>118.63</td>\n",
" <td>62739100.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>111.745097</td>\n",
" <td>112.805279</td>\n",
" <td>109.880312</td>\n",
" <td>112.294120</td>\n",
" <td>62739100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-03</th>\n",
" <td>118.500</td>\n",
" <td>119.0900</td>\n",
" <td>117.610</td>\n",
" <td>118.65</td>\n",
" <td>51915749.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.171063</td>\n",
" <td>112.729552</td>\n",
" <td>111.328597</td>\n",
" <td>112.313052</td>\n",
" <td>51915749.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-04</th>\n",
" <td>118.500</td>\n",
" <td>120.5100</td>\n",
" <td>118.309</td>\n",
" <td>119.56</td>\n",
" <td>70149743.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.171063</td>\n",
" <td>114.073712</td>\n",
" <td>111.990264</td>\n",
" <td>113.174450</td>\n",
" <td>70149743.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-05</th>\n",
" <td>120.020</td>\n",
" <td>120.2300</td>\n",
" <td>119.250</td>\n",
" <td>119.94</td>\n",
" <td>42246245.0</td>\n",
" <td>0.47</td>\n",
" <td>1.0</td>\n",
" <td>114.055077</td>\n",
" <td>114.254640</td>\n",
" <td>113.323345</td>\n",
" <td>113.979053</td>\n",
" <td>42246245.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-06</th>\n",
" <td>120.020</td>\n",
" <td>120.2500</td>\n",
" <td>118.450</td>\n",
" <td>118.93</td>\n",
" <td>43706567.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>114.055077</td>\n",
" <td>114.273646</td>\n",
" <td>112.563105</td>\n",
" <td>113.019249</td>\n",
" <td>43706567.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split \\\n",
"Date \n",
"2015-01-23 112.300 113.7500 111.530 112.98 46464828.0 0.00 1.0 \n",
"2015-01-26 113.740 114.3626 112.800 113.10 55614979.0 0.00 1.0 \n",
"2015-01-27 112.420 112.4800 109.030 109.14 95568749.0 0.00 1.0 \n",
"2015-01-28 117.625 118.1200 115.310 115.31 146477063.0 0.00 1.0 \n",
"2015-01-29 116.320 119.1900 115.560 118.90 84436432.0 0.00 1.0 \n",
"2015-01-30 118.400 120.0000 116.850 117.16 83745461.0 0.00 1.0 \n",
"2015-02-02 118.050 119.1700 116.080 118.63 62739100.0 0.00 1.0 \n",
"2015-02-03 118.500 119.0900 117.610 118.65 51915749.0 0.00 1.0 \n",
"2015-02-04 118.500 120.5100 118.309 119.56 70149743.0 0.00 1.0 \n",
"2015-02-05 120.020 120.2300 119.250 119.94 42246245.0 0.47 1.0 \n",
"2015-02-06 120.020 120.2500 118.450 118.93 43706567.0 0.00 1.0 \n",
"\n",
" Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume \n",
"Date \n",
"2015-01-23 106.302198 107.674755 105.573322 106.945880 46464828.0 \n",
"2015-01-26 107.665289 108.254637 106.775493 107.059471 55614979.0 \n",
"2015-01-27 106.415788 106.472584 103.206844 103.310969 95568749.0 \n",
"2015-01-28 111.342796 111.811359 109.151437 109.151437 146477063.0 \n",
"2015-01-29 110.107494 112.824211 109.388085 112.549700 84436432.0 \n",
"2015-01-30 112.076404 113.590950 110.609188 110.902631 83745461.0 \n",
"2015-02-02 111.745097 112.805279 109.880312 112.294120 62739100.0 \n",
"2015-02-03 112.171063 112.729552 111.328597 112.313052 51915749.0 \n",
"2015-02-04 112.171063 114.073712 111.990264 113.174450 70149743.0 \n",
"2015-02-05 114.055077 114.254640 113.323345 113.979053 42246245.0 \n",
"2015-02-06 114.055077 114.273646 112.563105 113.019249 43706567.0 "
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"priceData.loc['01/23/2015':'02/06/2015'] "
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2014-06-09</th>\n",
" <td>92.70</td>\n",
" <td>93.88</td>\n",
" <td>91.75</td>\n",
" <td>93.70</td>\n",
" <td>75414997.0</td>\n",
" <td>0.0</td>\n",
" <td>7.0</td>\n",
" <td>86.938746</td>\n",
" <td>88.045409</td>\n",
" <td>86.047788</td>\n",
" <td>87.876596</td>\n",
" <td>75414997.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000-06-21</th>\n",
" <td>50.50</td>\n",
" <td>56.94</td>\n",
" <td>50.31</td>\n",
" <td>55.63</td>\n",
" <td>4375000.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>3.233319</td>\n",
" <td>3.645647</td>\n",
" <td>3.221154</td>\n",
" <td>3.561773</td>\n",
" <td>61250000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1987-06-16</th>\n",
" <td>41.50</td>\n",
" <td>41.75</td>\n",
" <td>38.00</td>\n",
" <td>41.50</td>\n",
" <td>1530000.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>1.215949</td>\n",
" <td>1.223274</td>\n",
" <td>1.113400</td>\n",
" <td>1.215949</td>\n",
" <td>42840000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2005-02-28</th>\n",
" <td>44.68</td>\n",
" <td>45.14</td>\n",
" <td>43.96</td>\n",
" <td>44.86</td>\n",
" <td>11635900.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>5.721374</td>\n",
" <td>5.780278</td>\n",
" <td>5.629177</td>\n",
" <td>5.744424</td>\n",
" <td>81451300.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-30</th>\n",
" <td>39.00</td>\n",
" <td>39.27</td>\n",
" <td>38.45</td>\n",
" <td>38.75</td>\n",
" <td>7589500.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.497019</td>\n",
" <td>2.514306</td>\n",
" <td>2.461804</td>\n",
" <td>2.481012</td>\n",
" <td>106253000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-23</th>\n",
" <td>37.04</td>\n",
" <td>37.50</td>\n",
" <td>36.93</td>\n",
" <td>37.27</td>\n",
" <td>7096500.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.371528</td>\n",
" <td>2.400980</td>\n",
" <td>2.364485</td>\n",
" <td>2.386254</td>\n",
" <td>99351000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-24</th>\n",
" <td>37.40</td>\n",
" <td>38.00</td>\n",
" <td>37.15</td>\n",
" <td>37.29</td>\n",
" <td>6598000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.394577</td>\n",
" <td>2.432993</td>\n",
" <td>2.378570</td>\n",
" <td>2.387534</td>\n",
" <td>92372000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-27</th>\n",
" <td>36.97</td>\n",
" <td>37.98</td>\n",
" <td>36.83</td>\n",
" <td>37.53</td>\n",
" <td>7098500.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.367046</td>\n",
" <td>2.431712</td>\n",
" <td>2.358082</td>\n",
" <td>2.402900</td>\n",
" <td>99379000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-28</th>\n",
" <td>37.50</td>\n",
" <td>38.29</td>\n",
" <td>37.45</td>\n",
" <td>38.04</td>\n",
" <td>6306900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.400980</td>\n",
" <td>2.451560</td>\n",
" <td>2.397778</td>\n",
" <td>2.435554</td>\n",
" <td>88296600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-09-29</th>\n",
" <td>37.93</td>\n",
" <td>38.86</td>\n",
" <td>37.82</td>\n",
" <td>38.68</td>\n",
" <td>4884100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2.428511</td>\n",
" <td>2.488055</td>\n",
" <td>2.421468</td>\n",
" <td>2.476530</td>\n",
" <td>68377400.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split \\\n",
"Date \n",
"2014-06-09 92.70 93.88 91.75 93.70 75414997.0 0.0 7.0 \n",
"2000-06-21 50.50 56.94 50.31 55.63 4375000.0 0.0 2.0 \n",
"1987-06-16 41.50 41.75 38.00 41.50 1530000.0 0.0 2.0 \n",
"2005-02-28 44.68 45.14 43.96 44.86 11635900.0 0.0 2.0 \n",
"2004-09-30 39.00 39.27 38.45 38.75 7589500.0 0.0 1.0 \n",
"2004-09-23 37.04 37.50 36.93 37.27 7096500.0 0.0 1.0 \n",
"2004-09-24 37.40 38.00 37.15 37.29 6598000.0 0.0 1.0 \n",
"2004-09-27 36.97 37.98 36.83 37.53 7098500.0 0.0 1.0 \n",
"2004-09-28 37.50 38.29 37.45 38.04 6306900.0 0.0 1.0 \n",
"2004-09-29 37.93 38.86 37.82 38.68 4884100.0 0.0 1.0 \n",
"\n",
" Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume \n",
"Date \n",
"2014-06-09 86.938746 88.045409 86.047788 87.876596 75414997.0 \n",
"2000-06-21 3.233319 3.645647 3.221154 3.561773 61250000.0 \n",
"1987-06-16 1.215949 1.223274 1.113400 1.215949 42840000.0 \n",
"2005-02-28 5.721374 5.780278 5.629177 5.744424 81451300.0 \n",
"2004-09-30 2.497019 2.514306 2.461804 2.481012 106253000.0 \n",
"2004-09-23 2.371528 2.400980 2.364485 2.386254 99351000.0 \n",
"2004-09-24 2.394577 2.432993 2.378570 2.387534 92372000.0 \n",
"2004-09-27 2.367046 2.431712 2.358082 2.402900 99379000.0 \n",
"2004-09-28 2.400980 2.451560 2.397778 2.435554 88296600.0 \n",
"2004-09-29 2.428511 2.488055 2.421468 2.476530 68377400.0 "
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"priceData.sort_values(by='Split', ascending = 0)[0:10]"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# https://joshschertz.com/2016/08/27/Vectorizing-Adjusted-Close-with-Python/\n",
"def calculate_adjusted_prices(df, column):\n",
" \"\"\" Vectorized approach for calculating the adjusted prices for the\n",
" specified column in the provided DataFrame. This creates a new column\n",
" called 'adj_<column name>' with the adjusted prices. This function requires\n",
" that the DataFrame have columns with dividend and split_ratio values.\n",
"\n",
" :param df: DataFrame with raw prices along with dividend and split_ratio\n",
" values\n",
" :param column: String of which price column should have adjusted prices\n",
" created for it\n",
" :return: DataFrame with the addition of the adjusted price column\n",
" \"\"\"\n",
" adj_column = 'adj_' + column + '_Check'\n",
"\n",
" # Reverse the DataFrame order, sorting by date in descending order\n",
" df.sort_index(ascending=False, inplace=True)\n",
"\n",
" price_col = df[column].values\n",
" split_col = df['Split'].values\n",
" dividend_col = df['Dividend'].values\n",
" adj_price_col = np.zeros(len(df.index))\n",
" adj_price_col[0] = price_col[0]\n",
" \n",
" for i in range(1, len(price_col)):\n",
" adj_price_col[i] = round((adj_price_col[i - 1] + adj_price_col[i - 1] *\n",
" (((price_col[i] * split_col[i - 1]) -\n",
" price_col[i - 1] -\n",
" dividend_col[i - 1]) / price_col[i - 1])), 4)\n",
"\n",
" df[adj_column] = adj_price_col\n",
"\n",
" # Change the DataFrame order back to dates ascending\n",
" df.sort_index(ascending=True, inplace=True)\n",
"\n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"range(1, 9005)"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"range(1, len(priceData.Close))"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" <th>adj_Close_Check</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2015-01-23</th>\n",
" <td>112.300</td>\n",
" <td>113.7500</td>\n",
" <td>111.530</td>\n",
" <td>112.98</td>\n",
" <td>46464828.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.302198</td>\n",
" <td>107.674755</td>\n",
" <td>105.573322</td>\n",
" <td>106.945880</td>\n",
" <td>46464828.0</td>\n",
" <td>109.2286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-26</th>\n",
" <td>113.740</td>\n",
" <td>114.3626</td>\n",
" <td>112.800</td>\n",
" <td>113.10</td>\n",
" <td>55614979.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>107.665289</td>\n",
" <td>108.254637</td>\n",
" <td>106.775493</td>\n",
" <td>107.059471</td>\n",
" <td>55614979.0</td>\n",
" <td>109.3446</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-27</th>\n",
" <td>112.420</td>\n",
" <td>112.4800</td>\n",
" <td>109.030</td>\n",
" <td>109.14</td>\n",
" <td>95568749.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.415788</td>\n",
" <td>106.472584</td>\n",
" <td>103.206844</td>\n",
" <td>103.310969</td>\n",
" <td>95568749.0</td>\n",
" <td>105.5161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-28</th>\n",
" <td>117.625</td>\n",
" <td>118.1200</td>\n",
" <td>115.310</td>\n",
" <td>115.31</td>\n",
" <td>146477063.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>111.342796</td>\n",
" <td>111.811359</td>\n",
" <td>109.151437</td>\n",
" <td>109.151437</td>\n",
" <td>146477063.0</td>\n",
" <td>111.4812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-29</th>\n",
" <td>116.320</td>\n",
" <td>119.1900</td>\n",
" <td>115.560</td>\n",
" <td>118.90</td>\n",
" <td>84436432.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>110.107494</td>\n",
" <td>112.824211</td>\n",
" <td>109.388085</td>\n",
" <td>112.549700</td>\n",
" <td>84436432.0</td>\n",
" <td>114.9520</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-01-30</th>\n",
" <td>118.400</td>\n",
" <td>120.0000</td>\n",
" <td>116.850</td>\n",
" <td>117.16</td>\n",
" <td>83745461.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.076404</td>\n",
" <td>113.590950</td>\n",
" <td>110.609188</td>\n",
" <td>110.902631</td>\n",
" <td>83745461.0</td>\n",
" <td>113.2698</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-02</th>\n",
" <td>118.050</td>\n",
" <td>119.1700</td>\n",
" <td>116.080</td>\n",
" <td>118.63</td>\n",
" <td>62739100.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>111.745097</td>\n",
" <td>112.805279</td>\n",
" <td>109.880312</td>\n",
" <td>112.294120</td>\n",
" <td>62739100.0</td>\n",
" <td>114.6910</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-03</th>\n",
" <td>118.500</td>\n",
" <td>119.0900</td>\n",
" <td>117.610</td>\n",
" <td>118.65</td>\n",
" <td>51915749.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.171063</td>\n",
" <td>112.729552</td>\n",
" <td>111.328597</td>\n",
" <td>112.313052</td>\n",
" <td>51915749.0</td>\n",
" <td>114.7103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-04</th>\n",
" <td>118.500</td>\n",
" <td>120.5100</td>\n",
" <td>118.309</td>\n",
" <td>119.56</td>\n",
" <td>70149743.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>112.171063</td>\n",
" <td>114.073712</td>\n",
" <td>111.990264</td>\n",
" <td>113.174450</td>\n",
" <td>70149743.0</td>\n",
" <td>115.5901</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-05</th>\n",
" <td>120.020</td>\n",
" <td>120.2300</td>\n",
" <td>119.250</td>\n",
" <td>119.94</td>\n",
" <td>42246245.0</td>\n",
" <td>0.47</td>\n",
" <td>1.0</td>\n",
" <td>114.055077</td>\n",
" <td>114.254640</td>\n",
" <td>113.323345</td>\n",
" <td>113.979053</td>\n",
" <td>42246245.0</td>\n",
" <td>116.4151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-02-06</th>\n",
" <td>120.020</td>\n",
" <td>120.2500</td>\n",
" <td>118.450</td>\n",
" <td>118.93</td>\n",
" <td>43706567.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>114.055077</td>\n",
" <td>114.273646</td>\n",
" <td>112.563105</td>\n",
" <td>113.019249</td>\n",
" <td>43706567.0</td>\n",
" <td>115.4348</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split \\\n",
"Date \n",
"2015-01-23 112.300 113.7500 111.530 112.98 46464828.0 0.00 1.0 \n",
"2015-01-26 113.740 114.3626 112.800 113.10 55614979.0 0.00 1.0 \n",
"2015-01-27 112.420 112.4800 109.030 109.14 95568749.0 0.00 1.0 \n",
"2015-01-28 117.625 118.1200 115.310 115.31 146477063.0 0.00 1.0 \n",
"2015-01-29 116.320 119.1900 115.560 118.90 84436432.0 0.00 1.0 \n",
"2015-01-30 118.400 120.0000 116.850 117.16 83745461.0 0.00 1.0 \n",
"2015-02-02 118.050 119.1700 116.080 118.63 62739100.0 0.00 1.0 \n",
"2015-02-03 118.500 119.0900 117.610 118.65 51915749.0 0.00 1.0 \n",
"2015-02-04 118.500 120.5100 118.309 119.56 70149743.0 0.00 1.0 \n",
"2015-02-05 120.020 120.2300 119.250 119.94 42246245.0 0.47 1.0 \n",
"2015-02-06 120.020 120.2500 118.450 118.93 43706567.0 0.00 1.0 \n",
"\n",
" Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume \\\n",
"Date \n",
"2015-01-23 106.302198 107.674755 105.573322 106.945880 46464828.0 \n",
"2015-01-26 107.665289 108.254637 106.775493 107.059471 55614979.0 \n",
"2015-01-27 106.415788 106.472584 103.206844 103.310969 95568749.0 \n",
"2015-01-28 111.342796 111.811359 109.151437 109.151437 146477063.0 \n",
"2015-01-29 110.107494 112.824211 109.388085 112.549700 84436432.0 \n",
"2015-01-30 112.076404 113.590950 110.609188 110.902631 83745461.0 \n",
"2015-02-02 111.745097 112.805279 109.880312 112.294120 62739100.0 \n",
"2015-02-03 112.171063 112.729552 111.328597 112.313052 51915749.0 \n",
"2015-02-04 112.171063 114.073712 111.990264 113.174450 70149743.0 \n",
"2015-02-05 114.055077 114.254640 113.323345 113.979053 42246245.0 \n",
"2015-02-06 114.055077 114.273646 112.563105 113.019249 43706567.0 \n",
"\n",
" adj_Close_Check \n",
"Date \n",
"2015-01-23 109.2286 \n",
"2015-01-26 109.3446 \n",
"2015-01-27 105.5161 \n",
"2015-01-28 111.4812 \n",
"2015-01-29 114.9520 \n",
"2015-01-30 113.2698 \n",
"2015-02-02 114.6910 \n",
"2015-02-03 114.7103 \n",
"2015-02-04 115.5901 \n",
"2015-02-05 116.4151 \n",
"2015-02-06 115.4348 "
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"adjCloseCheck = calculate_adjusted_prices(priceData, \"Close\")\n",
"adjCloseCheck.loc[\"2015-01-23\":\"2015-02-06\"]"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" <th>adj_Close_Check</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2014-06-02</th>\n",
" <td>633.96</td>\n",
" <td>634.8300</td>\n",
" <td>622.50</td>\n",
" <td>628.65</td>\n",
" <td>13191100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>84.937105</td>\n",
" <td>85.053666</td>\n",
" <td>83.401709</td>\n",
" <td>84.225678</td>\n",
" <td>92337700.0</td>\n",
" <td>4215.0882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-03</th>\n",
" <td>628.46</td>\n",
" <td>638.7400</td>\n",
" <td>628.25</td>\n",
" <td>637.54</td>\n",
" <td>10453900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>84.200222</td>\n",
" <td>85.577523</td>\n",
" <td>84.172087</td>\n",
" <td>85.416748</td>\n",
" <td>73177300.0</td>\n",
" <td>4274.6955</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-04</th>\n",
" <td>637.44</td>\n",
" <td>647.8900</td>\n",
" <td>636.11</td>\n",
" <td>644.82</td>\n",
" <td>11981500.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>85.403350</td>\n",
" <td>86.803427</td>\n",
" <td>85.225159</td>\n",
" <td>86.392113</td>\n",
" <td>83870500.0</td>\n",
" <td>4323.5078</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-05</th>\n",
" <td>646.20</td>\n",
" <td>649.3699</td>\n",
" <td>642.61</td>\n",
" <td>647.35</td>\n",
" <td>10850200.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>86.577003</td>\n",
" <td>87.001702</td>\n",
" <td>86.096020</td>\n",
" <td>86.731079</td>\n",
" <td>75951400.0</td>\n",
" <td>4340.4714</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-06</th>\n",
" <td>649.90</td>\n",
" <td>651.2600</td>\n",
" <td>644.47</td>\n",
" <td>645.57</td>\n",
" <td>12497800.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>87.072724</td>\n",
" <td>87.254935</td>\n",
" <td>86.345220</td>\n",
" <td>86.492597</td>\n",
" <td>87484600.0</td>\n",
" <td>4328.5365</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-09</th>\n",
" <td>92.70</td>\n",
" <td>93.8800</td>\n",
" <td>91.75</td>\n",
" <td>93.70</td>\n",
" <td>75414997.0</td>\n",
" <td>0.0</td>\n",
" <td>7.0</td>\n",
" <td>86.938746</td>\n",
" <td>88.045409</td>\n",
" <td>86.047788</td>\n",
" <td>87.876596</td>\n",
" <td>75414997.0</td>\n",
" <td>89.7510</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-10</th>\n",
" <td>94.73</td>\n",
" <td>95.0500</td>\n",
" <td>93.57</td>\n",
" <td>94.25</td>\n",
" <td>62777000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>88.842582</td>\n",
" <td>89.142694</td>\n",
" <td>87.754676</td>\n",
" <td>88.392414</td>\n",
" <td>62777000.0</td>\n",
" <td>90.2778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-11</th>\n",
" <td>94.13</td>\n",
" <td>94.7600</td>\n",
" <td>93.47</td>\n",
" <td>93.86</td>\n",
" <td>45681000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>88.279872</td>\n",
" <td>88.870718</td>\n",
" <td>87.660891</td>\n",
" <td>88.026652</td>\n",
" <td>45681000.0</td>\n",
" <td>89.9042</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-12</th>\n",
" <td>94.04</td>\n",
" <td>94.1200</td>\n",
" <td>91.90</td>\n",
" <td>92.29</td>\n",
" <td>54749000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>88.195465</td>\n",
" <td>88.270493</td>\n",
" <td>86.188465</td>\n",
" <td>86.554227</td>\n",
" <td>54749000.0</td>\n",
" <td>88.4004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-06-13</th>\n",
" <td>92.20</td>\n",
" <td>92.4400</td>\n",
" <td>90.88</td>\n",
" <td>91.28</td>\n",
" <td>54525000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>86.469820</td>\n",
" <td>86.694904</td>\n",
" <td>85.231858</td>\n",
" <td>85.606998</td>\n",
" <td>54525000.0</td>\n",
" <td>87.4330</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split \\\n",
"Date \n",
"2014-06-02 633.96 634.8300 622.50 628.65 13191100.0 0.0 1.0 \n",
"2014-06-03 628.46 638.7400 628.25 637.54 10453900.0 0.0 1.0 \n",
"2014-06-04 637.44 647.8900 636.11 644.82 11981500.0 0.0 1.0 \n",
"2014-06-05 646.20 649.3699 642.61 647.35 10850200.0 0.0 1.0 \n",
"2014-06-06 649.90 651.2600 644.47 645.57 12497800.0 0.0 1.0 \n",
"2014-06-09 92.70 93.8800 91.75 93.70 75414997.0 0.0 7.0 \n",
"2014-06-10 94.73 95.0500 93.57 94.25 62777000.0 0.0 1.0 \n",
"2014-06-11 94.13 94.7600 93.47 93.86 45681000.0 0.0 1.0 \n",
"2014-06-12 94.04 94.1200 91.90 92.29 54749000.0 0.0 1.0 \n",
"2014-06-13 92.20 92.4400 90.88 91.28 54525000.0 0.0 1.0 \n",
"\n",
" Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume \\\n",
"Date \n",
"2014-06-02 84.937105 85.053666 83.401709 84.225678 92337700.0 \n",
"2014-06-03 84.200222 85.577523 84.172087 85.416748 73177300.0 \n",
"2014-06-04 85.403350 86.803427 85.225159 86.392113 83870500.0 \n",
"2014-06-05 86.577003 87.001702 86.096020 86.731079 75951400.0 \n",
"2014-06-06 87.072724 87.254935 86.345220 86.492597 87484600.0 \n",
"2014-06-09 86.938746 88.045409 86.047788 87.876596 75414997.0 \n",
"2014-06-10 88.842582 89.142694 87.754676 88.392414 62777000.0 \n",
"2014-06-11 88.279872 88.870718 87.660891 88.026652 45681000.0 \n",
"2014-06-12 88.195465 88.270493 86.188465 86.554227 54749000.0 \n",
"2014-06-13 86.469820 86.694904 85.231858 85.606998 54525000.0 \n",
"\n",
" adj_Close_Check \n",
"Date \n",
"2014-06-02 4215.0882 \n",
"2014-06-03 4274.6955 \n",
"2014-06-04 4323.5078 \n",
"2014-06-05 4340.4714 \n",
"2014-06-06 4328.5365 \n",
"2014-06-09 89.7510 \n",
"2014-06-10 90.2778 \n",
"2014-06-11 89.9042 \n",
"2014-06-12 88.4004 \n",
"2014-06-13 87.4330 "
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"adjCloseCheck.loc[\"2014-06-01\":\"2014-06-15\"]"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" <th>adj_Close_Check</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1980-12-12</th>\n",
" <td>28.75</td>\n",
" <td>28.87</td>\n",
" <td>28.75</td>\n",
" <td>28.75</td>\n",
" <td>2093900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.421187</td>\n",
" <td>0.422945</td>\n",
" <td>0.421187</td>\n",
" <td>0.421187</td>\n",
" <td>117258400.0</td>\n",
" <td>1349.3386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-15</th>\n",
" <td>27.38</td>\n",
" <td>27.38</td>\n",
" <td>27.25</td>\n",
" <td>27.25</td>\n",
" <td>785200.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.401117</td>\n",
" <td>0.401117</td>\n",
" <td>0.399212</td>\n",
" <td>0.399212</td>\n",
" <td>43971200.0</td>\n",
" <td>1278.9383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-16</th>\n",
" <td>25.37</td>\n",
" <td>25.37</td>\n",
" <td>25.25</td>\n",
" <td>25.25</td>\n",
" <td>472000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.371670</td>\n",
" <td>0.371670</td>\n",
" <td>0.369912</td>\n",
" <td>0.369912</td>\n",
" <td>26432000.0</td>\n",
" <td>1185.0713</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-17</th>\n",
" <td>25.87</td>\n",
" <td>26.00</td>\n",
" <td>25.87</td>\n",
" <td>25.87</td>\n",
" <td>385900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.378995</td>\n",
" <td>0.380900</td>\n",
" <td>0.378995</td>\n",
" <td>0.378995</td>\n",
" <td>21610400.0</td>\n",
" <td>1214.1701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-18</th>\n",
" <td>26.63</td>\n",
" <td>26.75</td>\n",
" <td>26.63</td>\n",
" <td>26.63</td>\n",
" <td>327900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.390129</td>\n",
" <td>0.391887</td>\n",
" <td>0.390129</td>\n",
" <td>0.390129</td>\n",
" <td>18362400.0</td>\n",
" <td>1249.8396</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-19</th>\n",
" <td>28.25</td>\n",
" <td>28.38</td>\n",
" <td>28.25</td>\n",
" <td>28.25</td>\n",
" <td>217100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.413862</td>\n",
" <td>0.415767</td>\n",
" <td>0.413862</td>\n",
" <td>0.413862</td>\n",
" <td>12157600.0</td>\n",
" <td>1325.8719</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-22</th>\n",
" <td>29.63</td>\n",
" <td>29.75</td>\n",
" <td>29.63</td>\n",
" <td>29.63</td>\n",
" <td>166800.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.434079</td>\n",
" <td>0.435837</td>\n",
" <td>0.434079</td>\n",
" <td>0.434079</td>\n",
" <td>9340800.0</td>\n",
" <td>1390.6402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-23</th>\n",
" <td>30.88</td>\n",
" <td>31.00</td>\n",
" <td>30.88</td>\n",
" <td>30.88</td>\n",
" <td>209600.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.452392</td>\n",
" <td>0.454150</td>\n",
" <td>0.452392</td>\n",
" <td>0.452392</td>\n",
" <td>11737600.0</td>\n",
" <td>1449.3071</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-24</th>\n",
" <td>32.50</td>\n",
" <td>32.63</td>\n",
" <td>32.50</td>\n",
" <td>32.50</td>\n",
" <td>214300.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.476125</td>\n",
" <td>0.478029</td>\n",
" <td>0.476125</td>\n",
" <td>0.476125</td>\n",
" <td>12000800.0</td>\n",
" <td>1525.3394</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-26</th>\n",
" <td>35.50</td>\n",
" <td>35.62</td>\n",
" <td>35.50</td>\n",
" <td>35.50</td>\n",
" <td>248100.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.520075</td>\n",
" <td>0.521833</td>\n",
" <td>0.520075</td>\n",
" <td>0.520075</td>\n",
" <td>13893600.0</td>\n",
" <td>1666.1400</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split Adj_Open \\\n",
"Date \n",
"1980-12-12 28.75 28.87 28.75 28.75 2093900.0 0.0 1.0 0.421187 \n",
"1980-12-15 27.38 27.38 27.25 27.25 785200.0 0.0 1.0 0.401117 \n",
"1980-12-16 25.37 25.37 25.25 25.25 472000.0 0.0 1.0 0.371670 \n",
"1980-12-17 25.87 26.00 25.87 25.87 385900.0 0.0 1.0 0.378995 \n",
"1980-12-18 26.63 26.75 26.63 26.63 327900.0 0.0 1.0 0.390129 \n",
"1980-12-19 28.25 28.38 28.25 28.25 217100.0 0.0 1.0 0.413862 \n",
"1980-12-22 29.63 29.75 29.63 29.63 166800.0 0.0 1.0 0.434079 \n",
"1980-12-23 30.88 31.00 30.88 30.88 209600.0 0.0 1.0 0.452392 \n",
"1980-12-24 32.50 32.63 32.50 32.50 214300.0 0.0 1.0 0.476125 \n",
"1980-12-26 35.50 35.62 35.50 35.50 248100.0 0.0 1.0 0.520075 \n",
"\n",
" Adj_High Adj_Low Adj_Close Adj_Volume adj_Close_Check \n",
"Date \n",
"1980-12-12 0.422945 0.421187 0.421187 117258400.0 1349.3386 \n",
"1980-12-15 0.401117 0.399212 0.399212 43971200.0 1278.9383 \n",
"1980-12-16 0.371670 0.369912 0.369912 26432000.0 1185.0713 \n",
"1980-12-17 0.380900 0.378995 0.378995 21610400.0 1214.1701 \n",
"1980-12-18 0.391887 0.390129 0.390129 18362400.0 1249.8396 \n",
"1980-12-19 0.415767 0.413862 0.413862 12157600.0 1325.8719 \n",
"1980-12-22 0.435837 0.434079 0.434079 9340800.0 1390.6402 \n",
"1980-12-23 0.454150 0.452392 0.452392 11737600.0 1449.3071 \n",
"1980-12-24 0.478029 0.476125 0.476125 12000800.0 1525.3394 \n",
"1980-12-26 0.521833 0.520075 0.520075 13893600.0 1666.1400 "
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"adjCloseCheck.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Dividend</th>\n",
" <th>Split</th>\n",
" <th>Adj_Open</th>\n",
" <th>Adj_High</th>\n",
" <th>Adj_Low</th>\n",
" <th>Adj_Close</th>\n",
" <th>Adj_Volume</th>\n",
" <th>adj_Close_Check</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2016-08-01</th>\n",
" <td>104.410</td>\n",
" <td>106.15</td>\n",
" <td>104.41</td>\n",
" <td>106.05</td>\n",
" <td>38167871.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>101.672019</td>\n",
" <td>103.366390</td>\n",
" <td>101.672019</td>\n",
" <td>103.269013</td>\n",
" <td>38167871.0</td>\n",
" <td>105.4786</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-02</th>\n",
" <td>106.050</td>\n",
" <td>106.07</td>\n",
" <td>104.00</td>\n",
" <td>104.48</td>\n",
" <td>33816556.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>103.269013</td>\n",
" <td>103.288488</td>\n",
" <td>101.272771</td>\n",
" <td>101.740183</td>\n",
" <td>33816556.0</td>\n",
" <td>103.9171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-03</th>\n",
" <td>104.810</td>\n",
" <td>105.84</td>\n",
" <td>104.77</td>\n",
" <td>105.79</td>\n",
" <td>30202641.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>102.061530</td>\n",
" <td>103.064520</td>\n",
" <td>102.022579</td>\n",
" <td>103.015831</td>\n",
" <td>30202641.0</td>\n",
" <td>105.2200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-04</th>\n",
" <td>105.580</td>\n",
" <td>106.00</td>\n",
" <td>105.28</td>\n",
" <td>105.87</td>\n",
" <td>27408650.0</td>\n",
" <td>0.57</td>\n",
" <td>1.0</td>\n",
" <td>103.364870</td>\n",
" <td>103.776058</td>\n",
" <td>103.071164</td>\n",
" <td>103.648786</td>\n",
" <td>27408650.0</td>\n",
" <td>105.8700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-05</th>\n",
" <td>106.270</td>\n",
" <td>107.65</td>\n",
" <td>106.18</td>\n",
" <td>107.48</td>\n",
" <td>40553402.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>104.040393</td>\n",
" <td>105.391440</td>\n",
" <td>103.952282</td>\n",
" <td>105.225007</td>\n",
" <td>40553402.0</td>\n",
" <td>107.4800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-08</th>\n",
" <td>107.520</td>\n",
" <td>108.37</td>\n",
" <td>107.16</td>\n",
" <td>108.37</td>\n",
" <td>28037220.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.264168</td>\n",
" <td>106.096334</td>\n",
" <td>104.911721</td>\n",
" <td>106.096334</td>\n",
" <td>28037220.0</td>\n",
" <td>108.3700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-09</th>\n",
" <td>108.230</td>\n",
" <td>108.94</td>\n",
" <td>108.01</td>\n",
" <td>108.81</td>\n",
" <td>26315204.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.959271</td>\n",
" <td>106.654375</td>\n",
" <td>105.743887</td>\n",
" <td>106.527103</td>\n",
" <td>26315204.0</td>\n",
" <td>108.8100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-10</th>\n",
" <td>108.710</td>\n",
" <td>108.90</td>\n",
" <td>107.76</td>\n",
" <td>108.00</td>\n",
" <td>24008505.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.429201</td>\n",
" <td>106.615214</td>\n",
" <td>105.499132</td>\n",
" <td>105.734097</td>\n",
" <td>24008505.0</td>\n",
" <td>108.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-11</th>\n",
" <td>108.520</td>\n",
" <td>108.93</td>\n",
" <td>107.85</td>\n",
" <td>107.93</td>\n",
" <td>27484506.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.243187</td>\n",
" <td>106.644585</td>\n",
" <td>105.587244</td>\n",
" <td>105.665566</td>\n",
" <td>27484506.0</td>\n",
" <td>107.9300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-12</th>\n",
" <td>107.780</td>\n",
" <td>108.44</td>\n",
" <td>107.78</td>\n",
" <td>108.18</td>\n",
" <td>18660434.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.518713</td>\n",
" <td>106.164865</td>\n",
" <td>105.518713</td>\n",
" <td>105.910320</td>\n",
" <td>18660434.0</td>\n",
" <td>108.1800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-15</th>\n",
" <td>108.140</td>\n",
" <td>109.54</td>\n",
" <td>108.08</td>\n",
" <td>109.48</td>\n",
" <td>25868209.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.871160</td>\n",
" <td>107.241787</td>\n",
" <td>105.812419</td>\n",
" <td>107.183046</td>\n",
" <td>25868209.0</td>\n",
" <td>109.4800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-16</th>\n",
" <td>109.630</td>\n",
" <td>110.23</td>\n",
" <td>109.21</td>\n",
" <td>109.38</td>\n",
" <td>33794448.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>107.329899</td>\n",
" <td>107.917310</td>\n",
" <td>106.918710</td>\n",
" <td>107.085144</td>\n",
" <td>33794448.0</td>\n",
" <td>109.3800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-17</th>\n",
" <td>109.100</td>\n",
" <td>109.37</td>\n",
" <td>108.34</td>\n",
" <td>109.22</td>\n",
" <td>25355976.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.811018</td>\n",
" <td>107.075354</td>\n",
" <td>106.066964</td>\n",
" <td>106.928501</td>\n",
" <td>25355976.0</td>\n",
" <td>109.2200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-18</th>\n",
" <td>109.230</td>\n",
" <td>109.60</td>\n",
" <td>109.02</td>\n",
" <td>109.08</td>\n",
" <td>21984703.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.938291</td>\n",
" <td>107.300528</td>\n",
" <td>106.732697</td>\n",
" <td>106.791438</td>\n",
" <td>21984703.0</td>\n",
" <td>109.0800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-19</th>\n",
" <td>108.770</td>\n",
" <td>109.69</td>\n",
" <td>108.36</td>\n",
" <td>109.36</td>\n",
" <td>25368072.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.487942</td>\n",
" <td>107.388640</td>\n",
" <td>106.086544</td>\n",
" <td>107.065563</td>\n",
" <td>25368072.0</td>\n",
" <td>109.3600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-22</th>\n",
" <td>108.860</td>\n",
" <td>109.10</td>\n",
" <td>107.85</td>\n",
" <td>108.51</td>\n",
" <td>25820230.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.576054</td>\n",
" <td>106.811018</td>\n",
" <td>105.587244</td>\n",
" <td>106.233397</td>\n",
" <td>25820230.0</td>\n",
" <td>108.5100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-23</th>\n",
" <td>108.590</td>\n",
" <td>109.32</td>\n",
" <td>108.53</td>\n",
" <td>108.85</td>\n",
" <td>21257669.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.311718</td>\n",
" <td>107.026403</td>\n",
" <td>106.252977</td>\n",
" <td>106.566263</td>\n",
" <td>21257669.0</td>\n",
" <td>108.8500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-24</th>\n",
" <td>108.565</td>\n",
" <td>108.75</td>\n",
" <td>107.68</td>\n",
" <td>108.03</td>\n",
" <td>23675081.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>106.287243</td>\n",
" <td>106.468362</td>\n",
" <td>105.420811</td>\n",
" <td>105.763468</td>\n",
" <td>23675081.0</td>\n",
" <td>108.0300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-25</th>\n",
" <td>107.390</td>\n",
" <td>107.88</td>\n",
" <td>106.68</td>\n",
" <td>107.57</td>\n",
" <td>25086248.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.136895</td>\n",
" <td>105.616615</td>\n",
" <td>104.441791</td>\n",
" <td>105.313119</td>\n",
" <td>25086248.0</td>\n",
" <td>107.5700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-08-26</th>\n",
" <td>107.410</td>\n",
" <td>107.95</td>\n",
" <td>106.31</td>\n",
" <td>106.94</td>\n",
" <td>27766291.0</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>105.156475</td>\n",
" <td>105.685146</td>\n",
" <td>104.079554</td>\n",
" <td>104.696336</td>\n",
" <td>27766291.0</td>\n",
" <td>106.9400</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Dividend Split \\\n",
"Date \n",
"2016-08-01 104.410 106.15 104.41 106.05 38167871.0 0.00 1.0 \n",
"2016-08-02 106.050 106.07 104.00 104.48 33816556.0 0.00 1.0 \n",
"2016-08-03 104.810 105.84 104.77 105.79 30202641.0 0.00 1.0 \n",
"2016-08-04 105.580 106.00 105.28 105.87 27408650.0 0.57 1.0 \n",
"2016-08-05 106.270 107.65 106.18 107.48 40553402.0 0.00 1.0 \n",
"2016-08-08 107.520 108.37 107.16 108.37 28037220.0 0.00 1.0 \n",
"2016-08-09 108.230 108.94 108.01 108.81 26315204.0 0.00 1.0 \n",
"2016-08-10 108.710 108.90 107.76 108.00 24008505.0 0.00 1.0 \n",
"2016-08-11 108.520 108.93 107.85 107.93 27484506.0 0.00 1.0 \n",
"2016-08-12 107.780 108.44 107.78 108.18 18660434.0 0.00 1.0 \n",
"2016-08-15 108.140 109.54 108.08 109.48 25868209.0 0.00 1.0 \n",
"2016-08-16 109.630 110.23 109.21 109.38 33794448.0 0.00 1.0 \n",
"2016-08-17 109.100 109.37 108.34 109.22 25355976.0 0.00 1.0 \n",
"2016-08-18 109.230 109.60 109.02 109.08 21984703.0 0.00 1.0 \n",
"2016-08-19 108.770 109.69 108.36 109.36 25368072.0 0.00 1.0 \n",
"2016-08-22 108.860 109.10 107.85 108.51 25820230.0 0.00 1.0 \n",
"2016-08-23 108.590 109.32 108.53 108.85 21257669.0 0.00 1.0 \n",
"2016-08-24 108.565 108.75 107.68 108.03 23675081.0 0.00 1.0 \n",
"2016-08-25 107.390 107.88 106.68 107.57 25086248.0 0.00 1.0 \n",
"2016-08-26 107.410 107.95 106.31 106.94 27766291.0 0.00 1.0 \n",
"\n",
" Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume \\\n",
"Date \n",
"2016-08-01 101.672019 103.366390 101.672019 103.269013 38167871.0 \n",
"2016-08-02 103.269013 103.288488 101.272771 101.740183 33816556.0 \n",
"2016-08-03 102.061530 103.064520 102.022579 103.015831 30202641.0 \n",
"2016-08-04 103.364870 103.776058 103.071164 103.648786 27408650.0 \n",
"2016-08-05 104.040393 105.391440 103.952282 105.225007 40553402.0 \n",
"2016-08-08 105.264168 106.096334 104.911721 106.096334 28037220.0 \n",
"2016-08-09 105.959271 106.654375 105.743887 106.527103 26315204.0 \n",
"2016-08-10 106.429201 106.615214 105.499132 105.734097 24008505.0 \n",
"2016-08-11 106.243187 106.644585 105.587244 105.665566 27484506.0 \n",
"2016-08-12 105.518713 106.164865 105.518713 105.910320 18660434.0 \n",
"2016-08-15 105.871160 107.241787 105.812419 107.183046 25868209.0 \n",
"2016-08-16 107.329899 107.917310 106.918710 107.085144 33794448.0 \n",
"2016-08-17 106.811018 107.075354 106.066964 106.928501 25355976.0 \n",
"2016-08-18 106.938291 107.300528 106.732697 106.791438 21984703.0 \n",
"2016-08-19 106.487942 107.388640 106.086544 107.065563 25368072.0 \n",
"2016-08-22 106.576054 106.811018 105.587244 106.233397 25820230.0 \n",
"2016-08-23 106.311718 107.026403 106.252977 106.566263 21257669.0 \n",
"2016-08-24 106.287243 106.468362 105.420811 105.763468 23675081.0 \n",
"2016-08-25 105.136895 105.616615 104.441791 105.313119 25086248.0 \n",
"2016-08-26 105.156475 105.685146 104.079554 104.696336 27766291.0 \n",
"\n",
" adj_Close_Check \n",
"Date \n",
"2016-08-01 105.4786 \n",
"2016-08-02 103.9171 \n",
"2016-08-03 105.2200 \n",
"2016-08-04 105.8700 \n",
"2016-08-05 107.4800 \n",
"2016-08-08 108.3700 \n",
"2016-08-09 108.8100 \n",
"2016-08-10 108.0000 \n",
"2016-08-11 107.9300 \n",
"2016-08-12 108.1800 \n",
"2016-08-15 109.4800 \n",
"2016-08-16 109.3800 \n",
"2016-08-17 109.2200 \n",
"2016-08-18 109.0800 \n",
"2016-08-19 109.3600 \n",
"2016-08-22 108.5100 \n",
"2016-08-23 108.8500 \n",
"2016-08-24 108.0300 \n",
"2016-08-25 107.5700 \n",
"2016-08-26 106.9400 "
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"adjCloseCheck.tail(20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: adj_Close_Check is much larger than Quandl's Close price on the start date. This is because Reverse Stock Splits are not included in their data."
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x29287c51518>"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEFCAYAAAAYKqc0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHNlJREFUeJzt3XmYHWWZ9/HvLwubkpgIBA2QQMK+iYORV6KegJhEwuKI\nYRMEZXEJqDODzrwINOqwSDsiBByCGcFXAdd5kUVEHRqNAqKAwhgk6BAgRLZElLCY5Z4/nurOodOd\n7nSdU6e6+ve5rrpOLU+durvO6bvqPM9TVYoIzMysWoa1OgAzM2s8J3czswpycjczqyAndzOzCnJy\nNzOrICd3M7MKypXcJc2X9KSk3/ay/BhJv8mGBZL2zLM9MzPrn7xn7l8Fpq9n+R+Bt0XE3sDngCtz\nbs/MzPphRJ6VI2KBpAnrWX5n3eSdwPg82zMzs/4pss79JOAHBW7PzGzIynXm3l+SpgEnAlOL2J6Z\n2VDX9OQuaS9gHjAjIpavp5xvcmNmNgARoe7zGlEto2xYd4G0HfBd4LiI+ENfbxQRpRvOOeeclscw\nGGIqa1xljKmscZUxprLGVaaYepPrzF3SNUANeK2kR4FzgI1Sno55wFnAWOBySQJWRsSUPNs0M7O+\n5e0tc0wfy08GTs6zDTMz23C+QrUPtVqt1SGso4wxQTnjKmNMUM64yhgTlDOuMsbUndZXZ1MkSVGW\nWMzMBgtJRA8NqoV0hcxj4sSJLF68uNVhlN6ECRN45JFHWh2GmZVE6c/cs6NSCyIaXLyfzIam3s7c\nXeduZlZBTu5mZhXk5G5mVkFO7mZmFeTknsPEiRMZN24cL774Yte8+fPnM23atBZGZWbm5J6LJNas\nWcPFF1+8znwzs1Zycs/pjDPO4Atf+AJ/+ctf1ln2i1/8gilTpjBmzBje/OY3c8cdd3QtmzZtGmef\nfTZTp05l1KhRzJgxg2XLlnUtv/POO9l///0ZM2YM++yzD7fffnshf4+ZVYOTe0777rsvtVqNiy66\n6BXzly9fzqxZs/j4xz/Os88+yyc+8QkOPvhgli9fe9fja6+9lquvvpqnn36al19+mfb2dgCWLFnC\nrFmzOPvss1m+fDnt7e285z3v4dlnny30bzOzwWvQJ3epMUMe5557LnPnzn1F8r3pppvYaaedOOaY\nYxg2bBhHHXUUu+yyCzfccENXmRNPPJFJkyax8cYbM3v2bO677z4AvvGNb3DwwQczfXp6PO2BBx7I\nvvvuy80335wvUDMbMgZ9co9ozJDH7rvvzqxZszj//POzmIInnniCCRNe+XjZCRMmsGTJkq7prbfe\numt8s8024/nnnwdg8eLFfOtb32Ls2LGMHTuWMWPG8POf/5ylS5fmC9TMhoxBn9zLoq2tjSuvvJIl\nS5YgifHjx69zr5dHH32U8eP7fkb4tttuy/HHH8+yZctYtmwZy5cv569//Suf/OQnmxS9mVWNk3uD\nTJo0iSOPPJJLLrkEgJkzZ7Jo0SKuu+46Vq9ezTe/+U0WLlzIIYcc0ud7ve997+OGG27g1ltvZc2a\nNbz00kvcfvvtPPHEE83+M8ysIpzcc+je5fHss8/mhRdeQBJjx47lxhtvpL29nS222IL29nZuuukm\nxowZ0+O69bbZZhuuv/56zjvvPLbccksmTJhAe3s7a9asaerfY2bV4btCVoT3k9nQ5LtCmpkNIU7u\nZmYV5ORuZlZBpX/MnplZFdx2G3R0wB57wHvf2/ztuUG1IryfzMpt9my4/35YuhQOPRQ22gi+9CV4\n1avyve+gfUC2mVkVDB8OZ50FI0fCiy9CeztMnpyS/GmnwQEHwLhx0I/rHPul9Ml9woQJvoVuP3S/\n1YGZlY+0tkrm3e+GZcvgjjvg85+Hq66C556DD384JfzTT0+vA5UruUuaD8wCnoyIvXopcwkwE1gB\nnBAR923INrpfwm9mVgWbb56GCRPgqKNg1Sq44AJ4/nn4xjfgxhvT8tNPh4MO2vD3z3vm/lXgUuBr\nPS2UNBOYFBE7Snoz8O/Afjm3aWY26PTVJDZiBHz602n8uOPg4YdhwQKYMSNV5ey/P1x/fare2XTT\nvreXqytkRCwAlq+nyGFkiT8i7gJGSxqXZ5tmZoNVf2uYd90VDjkELrwQVqyAxx6DBx6ArbeGUaNg\n0SJYuXL9B4xm17mPBx6rm16SzXuyyds1M6uETTZJw5NZ1pw9G3bbDVavhjPO6H29UjWotrW1dY3X\najVqtVrLYjEzK6OPfKSD3Xbr4KGHoNvjm1+h2cl9CbBt3fQ22bwe1Sd3MzNbV/cTX+ncHss14vYD\nyoaefB84PgWg/YA/R4SrZMxsyCn6GsO8XSGvAWrAayU9CpwDbARERMyLiJslvUvSw6SukCfmDdjM\nbLAq8pKdXMk9Io7pR5k5ebZhZmYbzneFNDOrICd3M7MCFF3n7uRuZlaQIuvcndzNzCrIyd3MrIKc\n3M3MKsjJ3cysAG5QNTOrKDeomplZLk7uZmYV5ORuZlYA17mbmVWU69zNzCwXJ3czswpycjczqyAn\ndzOzArhB1cysotygamZmuTi5m5lVkJO7mVkBXOduZlZRrnM3M7NcnNzNzCrIyd3MrIJyJXdJMyQ9\nKOkhSZ/qYfkoSd+XdJ+k+yWdkGd7ZmaD1aBpUJU0DJgLTAd2B46WtEu3Yh8F/jsi3gBMA74gacRA\nt2lmNpgNlgbVKcCiiFgcESuB64DDupUJYPNsfHPg2YhYlWObZmbWD3mS+3jgsbrpx7N59eYCu0l6\nAvgN8LEc2zMzs35qdoPqdODeiHg9sA9wmaRXN3mbZmalU3Sde5767yXAdnXT22Tz6p0InA8QEX+Q\n9D/ALsCvenrDtra2rvFarUatVssRnplZ9XR0dNDR0dFnOcUADyeShgO/Bw4ElgK/BI6OiIV1ZS4D\nnoqIcyWNIyX1vSNiWQ/vFwONxcys7A4/HE44Ib02kiQiYp2m2gGfuUfEaklzgFtJ1TvzI2KhpFPT\n4pgHfA64StJvs9U+2VNiNzOzxsrVLTEibgF27jbvirrxpaR6dzMzK5CvUDUzK8CguYjJzMw2zGC5\niMnMzErKyd3MrIKc3M3MKsjJ3cysAG5QNTOrKDeomplZLk7uZmYV5ORuZlYA17mbmVWU69zNzCwX\nJ3czswpycjczqyAndzOzArhB1cysotygamZmuTi5m5lVkJO7mVkBXOduZlZRrnM3M7NcnNzNzCrI\nyd3MrIKc3M3MCuAGVTOziho0DaqSZkh6UNJDkj7VS5mapHslPSDptjzbMzOz/hkx0BUlDQPmAgcC\nTwB3S7o+Ih6sKzMauAx4Z0QskbRF3oDNzKxvec7cpwCLImJxRKwErgMO61bmGOC7EbEEICKeybE9\nM7NBazDVuY8HHqubfjybV28nYKyk2yTdLem4HNszMxvUiqxzH3C1zAa8/xuBA4BXAXdIuiMiHm7y\nds3MhrQ8yX0JsF3d9DbZvHqPA89ExEvAS5J+CuwN9Jjc29rausZrtRq1Wi1HeGZm1dPR0UFHR0ef\n5RQDrAiSNBz4PalBdSnwS+DoiFhYV2YX4FJgBrAxcBdwZET8rof3i4HGYmZWdjNnwumnp9dGkkRE\nrFPhM+Az94hYLWkOcCup7n5+RCyUdGpaHPMi4kFJPwR+C6wG5vWU2M3Mqq7oc9dcde4RcQuwc7d5\nV3Sbbgfa82zHzKwKBs1FTGZmVk5O7mZmFeTkbmZWgMF0EZOZmZWUk7uZWUHcoGpmZrk4uZuZVZCT\nu5lZAdygamZWUa5zNzOzXJzczcwqyMndzKyCnNzNzArgBlUzs4pyg6qZmeXi5G5mVkFO7mZmBXCd\nu5lZRbnO3czMcnFyNzOrICd3M7MKcnI3MyuAG1TNzCrKDapmZpaLk7uZWQXlSu6SZkh6UNJDkj61\nnnJvkrRS0t/n2Z6Z2WA1aOrcJQ0D5gLTgd2BoyXt0ku5C4AfDnRbZmZVMFjq3KcAiyJicUSsBK4D\nDuuh3GnAd4CncmzLzMw2QJ7kPh54rG768WxeF0mvBw6PiC8DBR6zzMyGthFNfv+Lgfq6+PUm+La2\ntq7xWq1GrVZrSlBmZoNVR0cHHR0dfZZTDLCWX9J+QFtEzMim/xmIiLiwrswfO0eBLYAVwCkR8f0e\n3i8GGouZWdlNmwZnnQUHHNDY95VERKxz4pznzP1uYLKkCcBS4Cjg6PoCEbFDXQBfBW7oKbGbmQ0F\nRTaoDji5R8RqSXOAW0l19/MjYqGkU9PimNd9lRxxmpnZBshV5x4RtwA7d5t3RS9lP5BnW2Zm1n++\nQtXMrACD5iImMzPbMIPlIiYzMyspJ3czswpycjczqyAndzOzArhB1cysotygamZmuTi5m5lVkJO7\nmVkBXOduZma5ObmbmRXEDapmZpaLk7uZWQU5uZuZFcANqmZmFeU6dzMzy8XJ3cysgpzczcwqyMnd\nzKwAblA1M6soN6iamVkuTu5mZhXk5G5mVoBBVecuaYakByU9JOlTPSw/RtJvsmGBpD3zbM/MbDAb\nFHXukoYBc4HpwO7A0ZJ26Vbsj8DbImJv4HPAlQPdnpmZ9V+eM/cpwKKIWBwRK4HrgMPqC0TEnRHx\nXDZ5JzA+x/bMzKyf8iT38cBjddOPs/7kfRLwgxzbMzOzfhpRxEYkTQNOBKYWsT0zs7IpukE1T3Jf\nAmxXN71NNu8VJO0FzANmRMTy9b1hW1tb13itVqNWq+UIz8ysXBrRoNrR0UFHR0ff24oBHk4kDQd+\nDxwILAV+CRwdEQvrymwH/AQ4LiLu7OP9YqCxmJmV3VveAu3t6bWRJBER6xw2BnzmHhGrJc0BbiXV\n3c+PiIWSTk2LYx5wFjAWuFySgJURMWWg2zQzs/7JVeceEbcAO3ebd0Xd+MnAyXm2YWZWBYPqIiYz\nM+u/QXERk5mZlVchXSHNbHBYvBh+9au1051nmvVnnFWd15/yErzudTByJIweDZtuSmk5uZtZl/Z2\n+NnPYNKkV9YRd44XOa+M21+xAp58MiX5p5+GUaNg2DDYeef0OmECvPrVKfGPGwcjRsD226dlDz9M\noZzczazLypXwoQ+lwdbvhRfS/nrqqZToV6yARx6BVavSL6CnnkrDbbfBSy+lpL/11sXF5+RuZl1W\nrUpnm9a3zTZLr6NHw447tjaWnrhB1cy6rFoFw4e3OgprBCd3M+uyerXP3KvCyd3MuvjMvTqc3M2s\ni8/cq8PJ3cy6uEG1OpzczazL6tWulqkKJ3cz6+Iz9+pwcjezLm5QrQ4ndzPr4gbV6vDHaNZEzzxT\n/D1F8li2zGfuVeHkbtZEZ54JP/oRbLVVqyPpn003TTe/ssHPyd2siV5+GT79afjAB1odiQ01rnM3\nayJ3LbRWcXI3ayI3UFqrOLmbNZHP3K1VfE7RIo8/DgsXpie6DBv2ytfexvtaPmJEGoYN63noLNt9\nGDEiJaDu72v5Oblbqzi5t8iZZ6ZnVW69NaxZkx7jFbF2vKd5vY13vq5alZLJmjXrHzrX6RxWrnzl\ndKfuB5X+vI4c2fvBpadhk036PgD1NG/kyMFxALrjDjj22FZHYUORov5BgS0kKcoSSxHe+940zJ7d\n6kjW1Xnw6OkAsr7XzgNF94NHb8Pq1enxY93L97Z+5/zVq9N2BgMJZs5Mj1gzawZJRMQ6pzo+c2+R\nl16CjTdudRQ9q6+WcZWC2eCUK7lLmgFcTGqYnR8RF/ZQ5hJgJrACOCEi7uvt/Q47LE80zfHMMx1s\nsUWt4e97111w2mkDW7ejo4NardbQeBqhjHGVMSYoZ1xljAnKGVcZY+puwMld0jBgLnAg8ARwt6Tr\nI+LBujIzgUkRsaOkNwP/DuzX23uW8UKPa6/t4Oijaw1/35NOgre9bWDrlvWLVca4yhgTlDOuMsYE\n5YyrjDF1l+fMfQqwKCIWA0i6DjgMeLCuzGHA1wAi4i5JoyWNi4gne3rDMp6533tvOeMyM1ufPP3c\nxwOP1U0/ns1bX5klPZQxM7MGG3BvGUnvAaZHxCnZ9PuAKRFxel2ZG4DzI+IX2fSPgU9GxD09vN/Q\n6SpjZtZAje4tswTYrm56m2xe9zLb9lGm1+DMzGxg8lTL3A1MljRB0kbAUcD3u5X5PnA8gKT9gD/3\nVt9uZmaNM+Az94hYLWkOcCtru0IulHRqWhzzIuJmSe+S9DCpK+SJjQnbzMzWpzRXqJrZ0KUSXqJe\nxpg2hO8KWWJSOe+eUra4JG2evZYtrtJd3ytpYqtj6EUZr5Yf2eoA8igkuUt6XfZaqi+7pCmSzssu\nyCoFSbtJeiukuq1Wx9NJ0h6SpksaUZa4JL1R0neAD0I59pek/yPpM1k8q1sdT6dsX/0Y+EyZ/g8l\n7Sfp68C5knYsQ2yS9pX0beAiSVPLENNANDWpSXq1pP8HLJG0Z1ZP3/IdJWmUpMtIV9g+HhFrWn3W\nJ2mkpCuAa4HTJJ0h6e+yZS07+EgaI+ly4OvAKcD5kia1Kp4sptdKuhS4HNiL7Kyv1d8tSe8HrgY+\nLWl2Nq+lZ6RKziR9r66LiOM7Dzol+M7vAVwK3AQ8Rfp+dXbAKDy2bF9dQLqS/kbgSWAOr+wVOGg0\nO2kcQrqI6WLgy1Cas5kzSbdBeGdEXA6lOOvbHRgdEXsDHwZWAp+QtFlErFn/qk31T8DLEfEG4KQs\nzlZXf1xE+sj2I8V0HJTiu7UEOACYAXwBICJWtTKJZt/rTYAFEfEVAEn7lOQX2P7AgxFxLXAl8AJw\nrKSJERFF77dsf3QAB0XE1cBXgQCeLjKORml4cs9+/u2cTd4MXBwR/wBsJ+morEzhZzNZXLtkk/9B\n+sC2knSEpHZJR0kq9AidxbRTNrkJsI+k4RHxLPASsBspeRV6JiNpe0mbZZP/GhGfyMbfCYwFdu+s\n5y44pk2zyTl1F8s9Dfyu7jtXZExHSzpXUucNKv4L+FNE3AoslvTZbH6h3/e6uA7PZl0IjJf0b5Lu\nBj4LXC3piBbFdWg26y5gW0mTI2IFsAZ4DjgZijnhkvR2pftekW3zlohYnlWN3glMBP5V0kHNjqXh\nIqIhA7A96efVHaQP7cBs/vDs9Qjg0UZtL0dcB2XzzwX+SDpSnwx8l/QTcZsWxHQgsBHpPjxXADuQ\nft6fBVwFbFHQvpoI/AD4SbY/dq5bViNd2/Bh0hnNRQXtq15jypbvDNwObJtNq4CYBHwIuJfUvff3\n2evmdWV2JyWqcUV8duuJ6+Rs2RHAbcDbs+lTga8AO7UgroeA9wPjSAeanwH/H7iBdL3MhcAmTY5p\nc+B7wDLSyd6YbP6wus9vWjZ+QlZml6I+y4b8jXk/tLrxy0hneQD/AlzTvRzwC+DcbLxpH14fcX0z\nG98UeH9dud2ypPXWgmP6v8DXs/FtSQeYG4DTgb1JCX94QftqLtCWjc8BvgXs0cM6u5IOOtNaFNPu\n3cr/F+ls/hXrNnMgHXyPzMbfQWqTeFe32L8CfDUbn9miuK4BZmTTr6krNwm4Hnh9C/fX9Gx6d+Dd\n2fi+wA8KiGfj7Pv0LuBzwCnrKbsD8J8UcDLTyCFvtcwm0FVlsIJUTwwwGljY+VM5sj0EHA6cLqkN\n+JKkcTm3P5C4HpC0a0S8GBFXd1Z3RMTvgK2BRwuOaRTwe0m7RcRjEXEacEREXAIsAl5LOhA1S2dc\nnVUHvwOIiLmkO38e0/k51e2rhcBWwCMtiulYSVvVlf82qYpteN13raEkHZ/9hB+bzVpIquoYERE/\nBu4HppJusUEW70nA+yUtB/ZuRsN4P+L6DfB2SdtGxJ/rVj2IVJ/8fKNj6mdc9wPTJG0TEf8dEf+Z\nlTsAuLMZ1ZB1Mb0mIl4mHXx/TPolsW9nFWkP2z6IVIX910bH1EwD+rJJOkjSj0hdhWZn/1ALgB0l\n3UtqUBoOfF3SO+t21lakZFYD5kaDb0WwAXF9rTOuiAhJh0n6Cem+9Msa+cXagJiurttXf8vqJX8K\n/IrU0NRQPcS1ivQTdR9Je0vaG3iA1FNgTLbaCEmHZvtqKfBMk/fV+mIaW7fqeFK1TEMbVJW8TtJt\npGqEY4FLJY0idRTYCpicFf8m6RfNa7N1d5D0PVKVw1sj4oJoUMP4AOLapS6uaZLuIT1A558j4i+N\niGmAce0MbJGtOyVbbzrpl2xDDtK9xHSZpC0i4qWI+BupevQpYDakk1FJG0t6h6Rfk87uPxURzzUi\npsIM4OfMZFI98WHAPqSfff+ULdsZ+F5d2bOAL2bj25C6GB3ZjJ8gOeJ6C/Br4PASxHRx3bLvAn9f\n0L66FvgIqR7yLFI3sAWkn8jXAB/N1nsH8MuC9lVfMc2pW3d7Glztwdq2op1YW202nNT98mrSBS7z\nST11RmfLrwI+k42PJt0ltdH7KW9ck4FDSxjXFmTtAQXEdGn9/142/91ZrJNJVTYjgT2BWY3eV0UN\n/d1Jw1jb0HAscHndsg8AfyY1jmwJfAnYNVs2FfhO57pN+EKVLq4yxtSPuD6YxbVlNr1D3bI5wAez\n8YbWZ+eI6aNNjGk4cB6pUe/tpO68V3db/hSpPeRAUpvAv2TL/gM4uEmfn+NqXEzDgD/R7WBCav96\nOFu2azP2V5FDn9Uykk4kPYijs1vX/cBRkrbPpkeSep18llQnNZZUr/4xUs+PHwMN77NaxrjKGFM/\n4xoB/AH4Yjb9P9l6p5AOSPdCY7um5Yzpg02K6e2kX3FjSP/knyW1jUyTNCXb3mpST6sLI+InwDxg\nqqS7svU6GhWP42paTGuAtmzoXO+9pOtfbgP2itSuNLj1cQR8NamL0seAe8i6ApEuSroW+Dmp1XtP\nUne1V5HqHU8j/RTbr0lnC6WLq4wxDSCum8i67gEfJ3V9fNNQiCl7/7cCx9VNX07q+nkC8Ots3jBS\nw/u3gYnZvNcA45sRk+NqakzfAravW68pPeVaNfRnZ22XvV7A2m6Ew0lnnVOz6W2zBLVRYYGXMK4y\nxrSBcV0FbJxNbzYEY9qMVN/aWVd7LOlJYgD3Aadl4/sC1xb4+Tmu5sR0TRExtWros1omIjq7Bl4M\nbC9peqSfWs9FxIJs2YdI3fsKu/y7jHGVMaYNjOsFYFW2TsN76AyCmF6IiJdjba+bg1h76fmJwK6S\nbiT9uljnUZGOq/VxbWBM9xYRU8ts4FHxVOD2uukppAshbga2btURqoxxlTGmssZVtphIvyCGkarP\nJmfzJpOqE6bSxKoOx1XdmIoe+v2wDknDIt098TukPs4vkxoAF0XEH/r1Jk1QxrjKGFNZ4yppTCLd\nDuIrpCsTPwA8S/pJ37B+4Y5raMVUuA08Gm5GurDmGeD0Vh+ZyhxXGWMqa1wljWk/0o2sFpB1uyzD\n4LgGd0xFDht6t7qPkOrODop0+W5ZlDGuMsYE5YyrjDE9Tuoa928ligkc14YoY0yF2aBnqHb+hG5i\nPANSxrjKGBOUM64yxmQ22PkB2WZmFVSaZ4eamVnjOLmbmVWQk7uZWQU5uZuZVZCTu5lZBTm525Ak\nabWkeyQ9IOleSf/Q162WJU2QdHRRMZrl4eRuQ9WKiHhjROxBurnUTOCcPtbZHjim6ZGZNYCTuw15\nEfEMcArpqVOdZ+g/lfSrbNgvK3o+6UET90j6mKRhkj4v6S5J90k6uVV/g1l3vojJhiRJf4mIUd3m\nLSM9v/avwJqI+JukyaR7kb8pe8rPP0bEoVn5k0mPATxP0kakh4wcERGLi/1rzNa1ofeWMauyzjr3\njYC5kt5Auu/+jr2UfyewZ/aINoBRWVknd2s5J3czQNIOwKqIeFrSOcCfImIvScOBF3tbjXQL2R8V\nFqhZP7nO3Yaqrp4xkrYEvgxcms0aTbq3PMDxpAc/QKqu2bzuPX4IfETSiOx9dpS0aTODNusvn7nb\nULWJpHtIVTArga9FxBezZZcD35V0PHAL6bGIAL8F1ki6F7gqIr4kaSJwT9aN8ing8AL/BrNeuUHV\nzKyCXC1jZlZBTu5mZhXk5G5mVkFO7mZmFeTkbmZWQU7uZmYV5ORuZlZBTu5mZhX0v+8HDL4m+mpy\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x292858c3198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"ratioPlot = adjCloseCheck[\"Close\"]/adjCloseCheck[\"adj_Close_Check\"]\n",
"plt.figure(); ratioPlot.plot(); plt.legend(loc='best')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@ZeccaLehn
Copy link
Author

ZeccaLehn commented Dec 30, 2017

Reproduced in R

library(data.table)

calculateAdjustedPrices <- function(df){  
  
  # Adapted from:
  # https://joshschertz.com/2016/08/27/Vectorizing-Adjusted-Close-with-Python/
  
  df <- df[rev(order(index)),]
  
  adjColumn = 'Adj_Close_Check'
  
  priceCol = df$Close
  splitCol = df$Split
  dividendCol = df$Dividend
  adjPriceCol = NULL 
  adjPriceCol[1] = priceCol[1]
  
  for(i in 2:length(priceCol)){
    adjPriceCol[i] = 
      round((adjPriceCol[i - 1] + adjPriceCol[i - 1] *
               (((priceCol[i] * splitCol[i - 1]) -
                   priceCol[i - 1] -
                   dividendCol[i - 1]) / priceCol[i - 1])), 4)}
  
  df$adj_Test = adjPriceCol
  
  df <- df[order(index),]
  
  return(df)
  
}

ticker <- "AAPL"
securityX <- Quandl(paste0("EOD/",ticker), api_key="xxxxxxx", type = "xts")
securityX <- as.data.table(securityX)
securityX <- securityX[index >= "1980-12-12" & index <= "2016-08-26",]

(securityX <- calculateAdjustedPrices(securityX))
# getSplits("AAPL") # Doesn't include Reverse Splits!
plot(securityX$index, securityX$Close/securityX$adj_Test, type = "l")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment