Download Stock Prices
Goal: Download stock price data
Data source: Yahoo Finance
The program recipe below is written in python.
Import necessary libraries. If requests modules is not already present, install that package using: "pip install requests"
import requests, csv
from datetime import datetime
Determine the download url.
def get_link(symbol, start, end = datetime.today()):
download_url = "http://chart.finance.yahoo.com/table.csv?s={0}&a={1}&b={2}&c={3}&d={4}&e={5}&f={6}&g=d&ignore=.csv"
if type(start) is str:
start = datetime.strptime(start, "%Y-%m-%d")
if type(end) is str:
end = datetime.strptime(end, "%Y-%m-%d")
return download_url.format(symbol, start.day, start.month, start.year, end.day, end.month, end.year)
Load stock symbols. I already save the stock symbols in a csv file. The file is attached below. Update the location of the file in the code below.
with open("/data/S&P500/S&P500.csv") as f:
csv_reader = csv.reader(f)
stocks = [r for r in csv_reader][1:]
symbols = [stock[0] for stock in stocks]
Download stock prices for each of S&P500 stocks since the Jan 01, 2016. Update the directory where you want to store the csv files.
errors = []
for i, symbol in enumerate(symbols):
link = get_link(symbol, "2016-01-01")
res = requests.get(link)
print(i, symbol, link, res.status_code)
if res.status_code == 200:
output_file_name = "/data/S&P500/prices/{0}.csv".format(symbol)
with open(output_file_name, "w") as f:
f.write(res.text)
else:
errors.append(symbol)
print("Errors", errors)