def calculateKeypoint(dog1, dog2, dog3, octaveNo): stopJLoop = len(dog2[0]) stopILoop = len(dog2) # Calculate terminating conditions if len(dog2) % 3 == 0: stopILoop = len(dog2) else: stopILoop = stopILoop - (len(dog2) % 3) if len(dog2[0]) % 3 == 0: stopJLoop = len(dog2[0]) else: stopJLoop = stopJLoop - (len(dog2[0]) % 3) # start calculating keypoints detectedPoints = [] for imrow in range(3, len(dog1) - 3, 1): # if imrow == stopILoop: # return detectedPoints for imcol in range(3, (len(dog1[0])) - 3, 1): # if imcol == stopJLoop: # imrow += 1 # imcol = 0 # continue mid = dog2[imrow + 1][imcol + 1] maxDOG2 = findMax(dog2, imrow, imcol) minDOG2 = findMin(dog2, imrow, imcol) if mid >= maxDOG2: maxDOG1 = findMax(dog1, imrow, imcol) maxDOG3 = findMax(dog3, imrow, imcol) if mid > maxDOG1 and mid > maxDOG3: detectedPoints.append([(2**octaveNo) * imrow + 1, (2**octaveNo) * imcol + 1]) elif mid <= minDOG2: minDOG1 = findMin(dog1, imrow, imcol) minDOG3 = findMin(dog3, imrow, imcol) if mid < minDOG1 and mid < minDOG3: detectedPoints.append([(2**octaveNo) * imrow + 1, (2**octaveNo) * imcol + 1]) return detectedPoints
DataFolder = 'E:\Dropbox\CQA 2014\Data' CAPITAL = 1e7 # BUILD_DATE = datetime.datetime(2013, 11, 1) START_TRAIN = datetime.datetime(2010, 11, 1) END_TRAIN = datetime.datetime(2013, 10, 31) START = datetime.datetime(2013, 11, 1) END = datetime.datetime(2014, 11, 5) BETA_BOUND = 0.45 WEIGHT_BOUND = 0.05 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder) StockReturns = ReadData.ReadReturn(DataFolder) tickers = ReadData.ReadTickers(DataFolder) (StockMax, highMax, lowMax) = functions.findMax(StockReturns, START, tickers) decay = 0.003 Coef = pd.read_csv(r'%s/Coef_%s_%s_%.4f.csv' % (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay)) betas = Coef[['ticker', 'Mkt-RF']].merge(tickers).rename(columns={ 'Mkt-RF': 'beta' }).sort('beta') maxes = StockMax[['ticker', 'MAX']].merge(tickers).sort('MAX') N = betas.shape[0] / 10 def groupPerformance(StockPrices, StockReturns, SP500Prices, StockBeta, betas, START): factor = betas.columns.values[1] betas = betas.sort(factor)
from scipy.optimize import minimize DataFolder = 'E:\Dropbox\CQA 2014\Data' CAPITAL = 1e7 # BUILD_DATE = datetime.datetime(2013, 11, 1) START_TRAIN = datetime.datetime(2010, 11, 1) END_TRAIN = datetime.datetime(2013, 10, 31) START = datetime.datetime(2013, 11, 1) END = datetime.datetime(2014, 11, 5) BETA_BOUND = 0.45 WEIGHT_BOUND = 0.05 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder) StockReturns = ReadData.ReadReturn(DataFolder) tickers = ReadData.ReadTickers(DataFolder) (StockMax, highMax, lowMax) = functions.findMax(StockReturns, START, tickers) decay = 0.003 Coef = pd.read_csv(r'%s/Coef_%s_%s_%.4f.csv' % (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay)) betas = Coef[['ticker', 'Mkt-RF']].merge(tickers).rename(columns={'Mkt-RF': 'beta'}).sort('beta') maxes = StockMax[['ticker', 'MAX']].merge(tickers).sort('MAX') N = betas.shape[0]/10 def groupPerformance(StockPrices, StockReturns, SP500Prices, StockBeta, betas, START): factor = betas.columns.values[1] betas = betas.sort(factor) pfValuesAll = pd.DataFrame() for n in range(10): wTickers = betas.head(N * (n+1)).tail(N)[['ticker']].reset_index(drop=True) wTickers['weight'] = 1/np.float64(N) (pfValues, pfRecord) = functions.testPortfolio(StockPrices, StockReturns, SP500Prices, StockBeta, wTickers, START)
print(stock) list_price = price[:, i + 1] # Change all the values to float list_price = np.asfarray(list_price, float) # Set the directory directory = "Optimization/" # Import Optimization Result with open(directory + stock + ' optimization.csv') as f: reader = csv.reader(f) results = [rows for rows in reader] results = results[1:optimization_count] # Remove headers results = np.array(results) results = np.asfarray(results, float) # Change all the values to float annual_return = results[:, -1] # Last Column = Annual Return (%) maximum_return = functions.findMax(annual_return) # Find the index of maximum return index = functions.findMaxIndex(annual_return) # Technical Variables RSI_period = int(results[:, 0][index]) RSI_Low = int(results[:, 1][index]) RSI_High = int(results[:, 2][index]) MACD_Fast = int(results[:, 3][index]) MACD_Slow = int(results[:, 4][index]) MACD_Sig = int(results[:, 5][index]) EMA_Slow = int(results[:, 6][index]) EMA_Fast = int(results[:, 7][index]) #market_timing(stock, list_price, RSI_period, MACD_Fast, MACD_Slow, EMA_Slow, RSI_Low, RSI_High, MACD_Sig, EMA_Fast) #combined_signal(stock, 'weight 1', i) #combined_signal(stock, 'weight 2', i) #combined_signal(stock, 'weight optimized', i)
DataFolder = 'E:\Dropbox\CQA 2014\Data' BUILD_DATE = datetime.datetime(2013, 11, 1) START_TRAIN = datetime.datetime(2010, 11, 1) END_TRAIN = datetime.datetime(2013, 10, 31) BETA_BOUND = 0.5 MAX_POSITION = 0.05 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder) StockBeta = ReadData.ReadBeta(DataFolder) StockReturns = ReadData.ReadReturn(DataFolder) # tickers = ReadData.ReadTickers(DataFolder) tickers = ReadData.GetTickers(StockPrices, StockBeta, DataFolder) # Coef = ReadData.ReadCoef(START_TRAIN, END_TRAIN, DataFolder) # mCoef = Coef[['Mkt-RF', 'SMB', 'HML', 'UMD']].astype(np.float64).as_matrix() # alphas = Coef[['alphaFF', 'alphaCAPM', 'alphaSP500']].astype(np.float64).as_matrix() (longTickers, shortTickers, wTickers) = functions.findMax(StockReturns, BUILD_DATE, tickers) mCqaBeta = pd.merge(StockBeta, tickers).cqaBeta.astype(np.float64).as_matrix() CAPITAL = 1e7 def intPart(x): return math.modf(x)[1] iniPrices = pd.merge(StockPrices[StockPrices.date == BUILD_DATE][['ticker', 'date', 'adj_close']], tickers, on = 'ticker') ##tickers = iniPrices[['ticker']] portfolio = pd.concat((tickers, iniPrices[['date']], wTickers[['weight']], iniPrices[['adj_close']]), axis = 1) portfolio['nShare'] = ((portfolio['weight'] * CAPITAL / portfolio['adj_close']).map(intPart)) portfolio['value'] = portfolio['nShare'] * portfolio['adj_close'] ## Recording the initial portfolio iniPortfolio = portfolio resCapital = CAPITAL - sum(portfolio['value']) pfRecord = iniPortfolio
pfValues = pd.DataFrame() for group in range(10): pfValues = pfValues.append(pd.DataFrame([ {'date': startDate.date(), 'value': CAPITAL, 'MAX_group': group, 'MAX_mean': 0} ])) lastValues = np.ones(10) * CAPITAL # lastValues.fill(CAPITAL) while True: # print endDate.date() StockPricesSample = StockPrices[(StockPrices['date'] >= backDate) & (StockPrices['date'] <= endDate)] (StockMax, highMax, lowMax) = functions.findMax(StockReturns, startDate, tickers) # print 'backDate = %s' % backDate # print 'startDate = %s' % startDate print 'endDate = %s' % endDate for group in range(10): # print 'endDate: %s, group: %d' % (endDate, group) tmpGroup = StockMax[StockMax['MAX_group'] == group] MAX_mean = tmpGroup['MAX'].mean(axis=1) tmpTickers = tmpGroup[['ticker']] StockPricesSample2 = StockPricesSample.merge(tmpTickers) tmpGroup = tmpGroup.merge( StockPricesSample2[StockPricesSample2['date'] == startDate][['ticker', 'adj_close']] ).rename( columns={'adj_close': 'iniPrice'}) N = tmpGroup.shape[0] # print 'N = %d' % N # tmpGroup['nShare'] = CAPITAL / N / tmpGroup['iniPrice']
START_TRAIN = datetime.datetime(2010, 11, 1) END_TRAIN = datetime.datetime(2013, 10, 31) BETA_BOUND = 0.5 MAX_POSITION = 0.05 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder) StockBeta = ReadData.ReadBeta(DataFolder) StockReturns = ReadData.ReadReturn(DataFolder) # tickers = ReadData.ReadTickers(DataFolder) tickers = ReadData.GetTickers(StockPrices, StockBeta, DataFolder) # Coef = ReadData.ReadCoef(START_TRAIN, END_TRAIN, DataFolder) # mCoef = Coef[['Mkt-RF', 'SMB', 'HML', 'UMD']].astype(np.float64).as_matrix() # alphas = Coef[['alphaFF', 'alphaCAPM', 'alphaSP500']].astype(np.float64).as_matrix() (longTickers, shortTickers, wTickers) = functions.findMax(StockReturns, BUILD_DATE, tickers) mCqaBeta = pd.merge(StockBeta, tickers).cqaBeta.astype(np.float64).as_matrix() CAPITAL = 1e7 def intPart(x): return math.modf(x)[1] iniPrices = pd.merge(StockPrices[StockPrices.date == BUILD_DATE][[ 'ticker', 'date', 'adj_close' ]], tickers, on='ticker') ##tickers = iniPrices[['ticker']]