""" from datetime import datetime, timedelta import pandas as pd import sys from utilities import analyze def readPriceData(fname): """ Read orders data from csv of format y | m | d | value @return a time series """ df = pd.read_csv(fname, header=None, names=['y', 'm', 'd', 'value']) # parse dates dates = df.apply(lambda row: datetime(int(row['y']), int(row['m']), int(row['d'])), axis=1) return pd.Series(df['value'], index=dates) if __name__ == '__main__': pricesFname, marketSymbol = sys.argv # test data: # prices = pd.TimeSeries(data=[100., 150., 120., 300., 100., 150., 120., 300.], # index=[datetime(2008, 12, 2), datetime(2008, 12, 3), datetime(2008, 12, 4), datetime(2008, 12, 5), # datetime(2008, 12, 20), datetime(2008, 12, 30), datetime(2008, 12, 25), datetime(2008, 12, 15)]) prices = readPriceData(pricesFname) analyze(prices, marketSymbol, verbosity=1)
marketBenchMark = 1 holdingPeriod = 5 numStocksTraded = 100 initialInvestment = 100000 # ----- compute prices and create events ----- prices = getPrices(startDate, endDate, symbols, 'close', isSymbolsList=True, additionalSymbol=marketSymbol) # prices = getPrices(startDate, endDate, symbols, 'close', additionalSymbol=marketSymbol) bollingerVals, _, _, _, _ = calculateBollingerValues(prices, lookBackPeriod, numOfStds) eventFilter, actionDates = createBollingerEventFilter(bollingerVals, {'type': 'CROSS_WRT_MARKET_FALL', 'bolBenchMark': bolBenchMark, 'marketBenchMark': marketBenchMark, 'marketSymbol': marketSymbol, 'lookBackPeriod': lookBackPeriod, 'numOfStds': numOfStds}) try: eventprofiler(eventFilter, {'close': prices}, i_lookback=lookBackPeriod, i_lookforward=holdingPeriod, b_market_neutral=True, b_errorbars=True, s_market_sym=marketSymbol, s_filename='eventPlot.pdf') except: print "There aren't enough events for the event profiler." # ----- trade and evaluate ----- orders = makeOrdersAccordingToEvents(eventFilter, holdingPeriod, numStocksTraded, saveIntermediateResults=True) portValues = marketsim(orders, initialInvestment) # calculateMetrics(portValues, saveIntermediateResults=True) analyze(portValues, '$SPX', plotFname='performancePlot.pdf', verbosity=0) plt.show()