Skip to content

Instantly share code, notes, and snippets.

@ZeccaLehn
Last active June 29, 2016 20:18
Show Gist options
  • Save ZeccaLehn/dc5b4b48af6c44f596e888901577e8a8 to your computer and use it in GitHub Desktop.
Save ZeccaLehn/dc5b4b48af6c44f596e888901577e8a8 to your computer and use it in GitHub Desktop.
[Python 3] In-Memory XLS Yahoo Finance Stock Downloader Function
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 208,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"http://real-chart.finance.yahoo.com/table.csv?s=FB&a=07&b=4&c=2015&d=06&e=28&f=2016&g=d&ignore=.csv\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>AdjClose</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2016-06-24</td>\n",
" <td>111.010002</td>\n",
" <td>113.680000</td>\n",
" <td>111.000000</td>\n",
" <td>112.080002</td>\n",
" <td>39992100</td>\n",
" <td>112.080002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2016-06-23</td>\n",
" <td>114.370003</td>\n",
" <td>115.089996</td>\n",
" <td>113.540001</td>\n",
" <td>115.080002</td>\n",
" <td>16016000</td>\n",
" <td>115.080002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2016-06-22</td>\n",
" <td>114.650002</td>\n",
" <td>114.739998</td>\n",
" <td>113.610001</td>\n",
" <td>113.910004</td>\n",
" <td>14751100</td>\n",
" <td>113.910004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2016-06-21</td>\n",
" <td>114.120003</td>\n",
" <td>115.209999</td>\n",
" <td>113.970001</td>\n",
" <td>114.379997</td>\n",
" <td>18990000</td>\n",
" <td>114.379997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2016-06-20</td>\n",
" <td>113.769997</td>\n",
" <td>114.720001</td>\n",
" <td>112.750000</td>\n",
" <td>113.370003</td>\n",
" <td>20674700</td>\n",
" <td>113.370003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2016-06-17</td>\n",
" <td>114.419998</td>\n",
" <td>114.430000</td>\n",
" <td>112.559998</td>\n",
" <td>113.019997</td>\n",
" <td>24383100</td>\n",
" <td>113.019997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2016-06-16</td>\n",
" <td>113.870003</td>\n",
" <td>114.500000</td>\n",
" <td>112.940002</td>\n",
" <td>114.389999</td>\n",
" <td>19196100</td>\n",
" <td>114.389999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2016-06-15</td>\n",
" <td>115.300003</td>\n",
" <td>115.440002</td>\n",
" <td>114.070000</td>\n",
" <td>114.599998</td>\n",
" <td>19609000</td>\n",
" <td>114.599998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2016-06-14</td>\n",
" <td>114.070000</td>\n",
" <td>114.949997</td>\n",
" <td>113.580002</td>\n",
" <td>114.940002</td>\n",
" <td>17562800</td>\n",
" <td>114.940002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2016-06-13</td>\n",
" <td>115.000000</td>\n",
" <td>115.480003</td>\n",
" <td>113.309998</td>\n",
" <td>113.949997</td>\n",
" <td>31651300</td>\n",
" <td>113.949997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2016-06-10</td>\n",
" <td>117.540001</td>\n",
" <td>118.110001</td>\n",
" <td>116.260002</td>\n",
" <td>116.620003</td>\n",
" <td>18412700</td>\n",
" <td>116.620003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>2016-06-09</td>\n",
" <td>118.129997</td>\n",
" <td>118.680000</td>\n",
" <td>117.709999</td>\n",
" <td>118.559998</td>\n",
" <td>13823400</td>\n",
" <td>118.559998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2016-06-08</td>\n",
" <td>117.760002</td>\n",
" <td>118.599998</td>\n",
" <td>117.269997</td>\n",
" <td>118.389999</td>\n",
" <td>14368700</td>\n",
" <td>118.389999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>2016-06-07</td>\n",
" <td>119.239998</td>\n",
" <td>119.300003</td>\n",
" <td>117.669998</td>\n",
" <td>117.760002</td>\n",
" <td>17053700</td>\n",
" <td>117.760002</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Open High Low Close Volume \\\n",
"1 2016-06-24 111.010002 113.680000 111.000000 112.080002 39992100 \n",
"2 2016-06-23 114.370003 115.089996 113.540001 115.080002 16016000 \n",
"3 2016-06-22 114.650002 114.739998 113.610001 113.910004 14751100 \n",
"4 2016-06-21 114.120003 115.209999 113.970001 114.379997 18990000 \n",
"5 2016-06-20 113.769997 114.720001 112.750000 113.370003 20674700 \n",
"6 2016-06-17 114.419998 114.430000 112.559998 113.019997 24383100 \n",
"7 2016-06-16 113.870003 114.500000 112.940002 114.389999 19196100 \n",
"8 2016-06-15 115.300003 115.440002 114.070000 114.599998 19609000 \n",
"9 2016-06-14 114.070000 114.949997 113.580002 114.940002 17562800 \n",
"10 2016-06-13 115.000000 115.480003 113.309998 113.949997 31651300 \n",
"11 2016-06-10 117.540001 118.110001 116.260002 116.620003 18412700 \n",
"12 2016-06-09 118.129997 118.680000 117.709999 118.559998 13823400 \n",
"13 2016-06-08 117.760002 118.599998 117.269997 118.389999 14368700 \n",
"14 2016-06-07 119.239998 119.300003 117.669998 117.760002 17053700 \n",
"\n",
" AdjClose \n",
"1 112.080002 \n",
"2 115.080002 \n",
"3 113.910004 \n",
"4 114.379997 \n",
"5 113.370003 \n",
"6 113.019997 \n",
"7 114.389999 \n",
"8 114.599998 \n",
"9 114.940002 \n",
"10 113.949997 \n",
"11 116.620003 \n",
"12 118.559998 \n",
"13 118.389999 \n",
"14 117.760002 "
]
},
"execution_count": 208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Stock Downloader Yahoo In-Memory / Python 3\n",
"def YahooStocks(ticker = \"MSFT\", freq = \"d\", fromDate = None, toDate = None):\n",
" \n",
" \"\"\"\n",
" NOTES:\n",
" ticker = Defaults to \"MSFT\"\n",
" freq = Defaults to \"d\" (Note: Can be \"d\"[daily],\"m\"[monthly],\"q\"[quarterly], or \"v\"[dividends])\n",
" fromDate: Defaults to 1yr lag. Must include MM/DD/YYYY or MM-DD-YYYY.\n",
" toDate: Defaults to 1yr lag. Must include MM/DD/YYYY or MM-DD-YYYY. \n",
" \n",
" \"\"\"\n",
" import pandas as pd\n",
" import datetime\n",
" # For downloader\n",
" import urllib.request\n",
" import io\n",
" \n",
" url = []\n",
" xld = []\n",
" xlds = []\n",
" data = []\n",
" \n",
" if fromDate is None:\n",
" \n",
" toDate = datetime.datetime.now()\n",
" fromDate = toDate - datetime.timedelta(days=360)\n",
" \n",
" \n",
" else:\n",
" fromDate = str(fromDate)\n",
" fromDate = fromDate.replace('/', '')\n",
" fromDate = fromDate.replace('-', '')\n",
" fromDate = datetime.datetime.strptime(fromDate, \"%m%d%Y\").date()\n",
" \n",
" toDate = str(toDate)\n",
" print(toDate)\n",
" toDate = toDate.replace('/', '')\n",
" toDate = toDate.replace('-', '')\n",
" toDate = datetime.datetime.strptime(toDate, \"%m%d%Y\").date()\n",
" \n",
" # Downloader\n",
" url = \"http://real-chart.finance.yahoo.com/table.csv?s=\" + ticker + \"&a=0\" + str(fromDate.month) + \"&b=\" + str(fromDate.day) + \"&c=\" + str(fromDate.year) + \"&d=0\" + str(toDate.month) + \"&e=\" + str(toDate.day) + \"&f=\" + str(toDate.year) + \"&g=\" + freq + \"&ignore=.csv\"\n",
" print(url)\n",
" xld = urllib.request.urlopen(url).read()\n",
" xld = xld.decode('utf-8')\n",
" xlds = io.StringIO(xld)\n",
" data = pd.read_csv(xlds, delimiter=',', header=None, skiprows=1)\n",
" data.columns = [\"Date\", \"Open\", \"High\", \"Low\", \"Close\", \"Volume\", \"AdjClose\"]\n",
" \n",
" data['Date'] = pd.to_datetime(data['Date'], format = \"%Y-%m-%d\")\n",
" data[[\"Open\", \"High\", \"Low\", \"Close\", \"Volume\", \"AdjClose\"]] = data[[\"Open\", \"High\", \"Low\", \"Close\", \"Volume\", \"AdjClose\"]].astype(float)\n",
" \n",
" return data\n",
"\n",
"\n",
"stockList = YahooStocks(\"FB\", \"d\")\n",
"stockList[1:15] # Head of DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nM2tZ/w94q6ovuSBulAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1782d018518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot adjusted close price (for calculating total returns... )\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline \n",
"\n",
"plt.figure(figsize=(12,6))\n",
"plt.plot(stockList.Date, stockList.AdjClose)\n",
"plt.show()"
]
}
],
"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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment