In [1]:
import urllib

base_url = "http://ichart.finance.yahoo.com/table.csv?s="
def make_url(ticker_symbol):
    return base_url + ticker_symbol

output_path = "/Users/vakilp/Documents/StockInvestingExperiments"
def make_filename(ticker_symbol, directory="S&P"):
    return output_path + "/" + directory + "/" + ticker_symbol + ".csv"

def pull_historical_data(ticker_symbol, directory="S&P"):
    try:
        urllib.urlretrieve(make_url(ticker_symbol), make_filename(ticker_symbol, directory))
    except urllib.ContentTooShortError as e:
        outfile = open(make_filename(ticker_symbol, directory), "w")
        outfile.write(e.content)
        outfile.close()
        
from pandas.io.data import DataReader
from datetime import datetime

import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

goog = DataReader("GOOG","yahoo")

#Perform Darvas Box Creation on Google Data

class box(object):
    high = []
    low = []
    date_high = []
    date_low = []

box1 = box()
idx = 0;
d = []
index = 0;
for i in range(1,len(goog)):
    if(goog.High[i]<=goog.High[i-1]):
        idx = idx + 1;
    else:
        idx = 0;
    if idx==3:
        d.append(i)
        high_vals = goog.High[i-3:i]
        low_vals = goog.Low[i-3:i]
        box1.high.append(high_vals.max())
        box1.low.append(low_vals.min())
        box1.date_high.append(goog.index[i-3])
        box1.date_low.append(goog.index[i-3+np.argmin(low_vals)])
        
high = np.array(box1.high)
low = np.array(box1.low)
date_high = np.array(box1.date_high)
date_low = np.array(box1.date_low)

# Plot Box for posterity's sake
plt.plot(date_high,high,'o',goog.index,goog.High,date_low,low,'ro',goog.index,goog.Low);
plt.grid()



In [ ]: