def SimpleMA(seriesName, sig_index, short_win, long_win): #Read in data and setup object dbpath = "/home/phcostello/Documents/Data/FinanceData.sqlite" the_data_reader = dr.DBReader(dbpath) series_data = the_data_reader.readSeries(seriesName) d1 = datetime.datetime(2009,6,1).date() d2 = datetime.datetime(2012,1,1).date() #d2 = datetime.datetime.now().date() series_data = series_data[d1:d2] #Filter on index we want to look at, e.g 'Open', 'Adj_Close' series_data = pd.DataFrame(series_data[sig_index]) #Construct data object for pairs trading strat #sma_md = md.simple_ma_md(series_data) sma_md = md.exponential_ma_md(series_data) # sma_md.generateTradeSig( seriesName = seriesName, # sig_index=sig_index, # short_win=short_win, # long_win=long_win) sma_md.generateTradeSig( seriesName = seriesName, sig_index=sig_index, short_win=short_win, long_win=long_win) #Setup portfolio simpleEmptyTrade = td.TradeEquity(seriesName, notional=0, price_series_label=sig_index) port = pf.Portfolio("portfolio", cashAmt=100) port.add_trade(simpleEmptyTrade) #No more trade types port.fixed_toggle() #Setup Strategy strat = tsc.MA_Trade_Strategy() #return pairsStrat tic = time.clock() strat.run_strategy(sma_md,port) toc = time.clock() print "strategy took {} seconds to run".format(toc - tic) outfile = open("pickled_sma2.pkl", 'wb') pickle.dump(strat,outfile) outfile.close()
def setup_strategy(pars): short_win = pars[0] long_win = pars[1] sma_md = md.exponential_ma_md(series_data) sma_md.generateTradeSig( seriesName = seriesName, sig_index=sig_index, short_win=short_win, long_win=long_win) #Setup portfolio simpleEmptyTrade = td.TradeEquity(seriesName, notional=0, price_series_label=sig_index) port = pf.Portfolio("portfolio", cashAmt=1) port.add_trade(simpleEmptyTrade) #No more trade types port.fixed_toggle() #Setup Strategy strat = tsc.MA_Trade_Strategy() return sma_md, port, strat
#Change Date Range d1 = datetime(2012,1,1).date() d2 = datetime(2012,6,1).date() data = dataFull.loc[d1:d2] print data.head() #Generate trade sigs for simple moving average sma = md.simple_ma_md(data) sma.generateTradeSig('AAPL', 'Adj_Close', short_win = 10, long_win = 20) sma.plot() #Generate trade sigs for exponentially weighted moving ave ema = md.exponential_ma_md(data) ema.generateTradeSig('AAPL', 'Adj_Close', short_span = 10, long_span = 20) ema.plot() #Do something with pairs trades. Should add something about data downloading panels plt.show()