import ReadData import math import matplotlib.pyplot as plt 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) START = datetime.datetime(2013, 11, 1) END = datetime.datetime(2014, 11, 5) BETA_BOUND = 0.45 WEIGHT_BOUND = 0.05 CAPITAL = 1e7 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder) StockReturns = ReadData.ReadReturn(DataFolder) tickers = ReadData.ReadTickers(DataFolder) decay = 0.003 Coef = pd.read_csv(r'%s/Coef_%s_%s_%.4f.csv' % (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay)) Res = pd.read_csv(r'%s/Res_%s_%s_%.4f.csv' % (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay)) betas = Coef.merge(tickers).rename(columns={'Mkt-RF': 'beta'})[['ticker', 'beta']].reset_index(drop=True) sortCoef = betas.sort('beta').reset_index(drop=True) N = sortCoef.shape[0] / 10 longTickers = sortCoef.head(4*N).tail(3*N)[['ticker']].sort('ticker').reset_index(drop=True) shortTickers = sortCoef.tail(3*N)[['ticker']].sort('ticker').reset_index(drop=True) pfTickers = pd.concat((shortTickers[['ticker']], longTickers[['ticker']]), axis=0).sort('ticker').reset_index(drop=True) # def getCovMatrix(tickers): CarhartSample = CarhartDaily[(CarhartDaily['date'] >= START_TRAIN) &
plt.xticks(index + bar_width, sector_list, rotation=20) plt.legend() plt.tight_layout() plt.grid() plt.show() sector_bar_chart() print sector_summary[['sector', 'long_weight', 'short_weight', 'net_weight']] # Now let's look at sector returns since 11/10 (StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(data_folder) StockReturns = ReadData.ReadReturn(data_folder) build_date = datetime.datetime(2014, 11, 10) end_date = StockPrices['date'].max() end_tickers = pd.DataFrame({ 'ticker': StockPrices[StockPrices['date'] == end_date]['ticker'].unique() }) sector_values = pd.DataFrame() for sector in sector_list: # sector = sector_list[0] wTickers = ticker_sector[ticker_sector['sector'] == sector].merge( end_tickers) wTickers['weight'] = 1 / float(wTickers.shape[0]) (pfValues, pfRecord) = functions.testPortfolio(StockPrices, StockReturns, SP500Prices, StockBeta, wTickers, build_date)