历史的十一月板块涨幅

来源:https://uqer.io/community/share/563c8065f9f06c713ddfeb6d

大盘又开始疯长了,还记嘚去年十一月吗 ?

  1. #获得行业信息
  2. def GetEquIndustry(universe,field):
  3. num = 100
  4. cnt_num = len(universe)/num
  5. if cnt_num > 0:
  6. df = pd.DataFrame({})
  7. for i in range(cnt_num) :
  8. sub_df = DataAPI.EquIndustryGet(secID=universe[i*num:(i+1)*num],field=field)
  9. df = pd.concat([df,sub_df])
  10. if (i+1)*num != len(universe):
  11. sub_df = DataAPI.EquIndustryGet(secID=universe[(i+1)*num:],field=field)
  12. df = pd.concat([df,sub_df])
  13. else:
  14. df = DataAPI.EquIndustryGet(secID=universe,field=field)
  15. return df
  1. from CAL.PyCAL import *
  2. import pandas as pd
  3. cal = Calendar('China.SSE')
  4. universe = DataAPI.EquGet(equTypeCD='A')['secID'].tolist() #获得全A股的secID
  5. id2nm = lambda x:x[0:6]
  6. tk_list_A = map(id2nm,universe) #获得全A股的ticker
  7. Ind_info = GetEquIndustry(universe = universe ,field=['ticker','secShortName','industryName2']) #获得个股的申万行业分类
  8. Ind_info_gp = Ind_info.groupby('industryName2')#按照行业分组
  9. Ind_tks_dic = {} #获得每个行业包含的股票
  10. for ind_nm,sub_info in Ind_info_gp:
  11. Ind_tks_dic[ind_nm] = sub_info.drop_duplicates('ticker')['ticker'].tolist()
  1. from pandas import DataFrame,Series
  2. from CAL.PyCAL import *
  3. cal = Calendar('China.SSE')
  4. field = ['ticker','secShortName','tradeDate','preClosePrice','closePrice','turnoverValue']
  5. #时间轴(开始时间)
  6. time = ['20141031', '20131031', '20121031', '20111031', '20101031']
  7. #保存各个时间段的数据
  8. Data_time = {}
  9. #保存各个时间段的股票名字
  10. tk_nm_dic ={}
  11. # 时间稍慢
  12. for s in time :
  13. Data_time[s] = DataFrame()
  14. for x in universe :
  15. try :
  16. data_temp = DataAPI.MktEqudAdjGet( secID = x , field =field , beginDate = s , endDate = cal.advanceDate(s,'1M', BizDayConvention.Following).strftime('%Y%m%d'))
  17. data_temp['marketValue'] = DataAPI.MktEqudGet(secID = x ,field ='marketValue' , beginDate = s , endDate = cal.advanceDate(s,'1M', BizDayConvention.Following).strftime('%Y%m%d'))
  18. Data_time[s] = pd.concat([Data_time[s],data_temp])
  19. except :
  20. continue
  21. tk_nm_dic[s] = dict(zip(Data_time[s]['ticker'],Data_time[s]['secShortName'])) # 获得个股ticker与名称的对应字典
  22. for s in Data_time.values() :
  23. s['tradeDate'] = pd.to_datetime(s['tradeDate']) # 将tradeDate这一列的格式由string改为datetime
  24. s['increase'] = s['closePrice']/s['preClosePrice'] # 获得个股每天的收益
  1. # 股票数据统计
  2. Stock_Data = {}
  3. for s in Data_time.keys() :
  4. Stock_dict = {'ticker':[],'income':[],'turnoverValue':[] ,'marketValue' :[]}
  5. # 获得每个时间段的Data计算个股的收益和平均市值
  6. for tk,sub_info in Data_time[s].groupby('ticker') :
  7. income = sub_info['increase'].prod()-1 # 获得在这段时间内该股的涨幅
  8. mkt_value = sub_info['marketValue'].sum()/len(sub_info)
  9. turnoverValue_avg = sub_info['turnoverValue'].sum()/len(sub_info)
  10. Stock_dict['ticker'].append(tk)
  11. Stock_dict['income'].append(income)
  12. Stock_dict['marketValue'].append(mkt_value)
  13. Stock_dict['turnoverValue'].append(turnoverValue_avg)
  14. # 返回时间为Key的个股数据
  15. Stock_Data[s] = pd.DataFrame(Stock_dict)
  1. # 行业数据统计
  2. Output_dicy = {}
  3. Output_dicy['industry'] = []
  4. Output_dicy['Num'] = []
  5. Output_dicy['Nov14'] = []
  6. for ind,tks in Ind_tks_dic.items() :
  7. for table in Stock_Data.keys() :
  8. if not table in Output_dicy.keys() :
  9. Output_dicy[table] = []
  10. sub_Industry = Stock_Data[table][Stock_Data[table]['ticker'].isin(tks)]
  11. # 成交量前三
  12. bigstk = sub_Industry.sort(columns='turnoverValue',ascending=False)['ticker'][0:3].tolist()
  13. # 行业指数收益
  14. if not sub_Industry['marketValue'].sum() == 0 :
  15. rtn_Industry = (sub_Industry['income']*sub_Industry['marketValue']).sum()/sub_Industry['marketValue'].sum()
  16. Output_dicy[table].append(rtn_Industry)
  17. if table == '20141031' :
  18. Output_dicy['Nov14'].append(map(lambda x:tk_nm_dic['20141031'][x],bigstk))
  19. if not sub_Industry['marketValue'].sum() == 0 :
  20. #最新行业成分数量
  21. Output_dicy['Num'].append(len(sub_Industry))
  22. Output_dicy['industry'].append(ind)
  23. Output_table = pd.DataFrame(Output_dicy)

去年十一月疯长的大盘

  1. # 统计并显示
  2. Out_put = Output_table.loc[:,['industry','Num','20101031','20111031','20121031','20131031','20141031','Nov14']]
  3. Out_put.columns = [u'行业名称',u'该行业成分股数目(15年)',u'2010年十一月',u'2011年十一月',u'2012年十一月',u'2013年十一月',u'2014年十一月',u'2014年板块成交量前三']
  4. Out_put[u'平均涨幅'] = (Out_put[u'2010年十一月']+Out_put[u'2011年十一月']+Out_put[u'2012年十一月']+Out_put[u'2013年十一月']+Out_put[u'2014年十一月']) / 5
  5. print u'一共有%d个申万二级行业'%len(Out_put),u' : '
  6. Out_put.sort(u'2014年十一月' , ascending = False).head(20)
  1. 一共有208个申万二级行业
行业名称该行业成分股数目(15年)2010年十一月2011年十一月2012年十一月2013年十一月2014年十一月2014年板块成交量前三平均涨幅
97资本市场服务18-0.141082-0.152839-0.1333070.0987540.511463[中信证券, 海通证券, 兴业证券]0.036598
22证券20-0.142078-0.150951-0.1299550.0949500.493749[中信证券, 海通证券, 兴业证券]0.033143
107综合金融21-0.139421-0.148480-0.1328000.0958970.477825[中信证券, 海通证券, 兴业证券]0.030604
2航空运输6-0.179507-0.123943-0.0948190.0154060.406586[海南航空, 东方航空, 中信海直]0.004744
149航空运输业10-0.173271-0.107966-0.0829200.0154860.343224[海南航空, 东方航空, 中信海直]-0.001089
38保险业3-0.095615-0.017941-0.0356950.1542880.323310[中国平安, 中国太保, 中国人寿]0.065669
153保险4-0.095476-0.018500-0.0358060.1540060.323234[中国平安, 中国太保, 中国人寿]0.065492
92房屋建筑业10.0000000.000000-0.1271930.2020550.316129[高新发展]0.078198
112高速公路23-0.108908-0.088902-0.0731540.0523440.272050[广发证券, 厦门港务, 五洲交通]0.010686
193石油加工、炼焦和核燃料加工业180.007286-0.034520-0.1277210.0053770.258827[陕西黑猫, 上海石化, *ST华锦]0.021850
122建筑安装业1-0.113664-0.006221-0.1390370.0208330.213740[中关村]-0.004870
139基础建设22-0.037736-0.0886440.0092900.0118600.212001[中国中铁, 中国铁建, 中国交建]0.021354
202农、林、牧、渔服务业1-0.0138930.032037-0.1065010.0550810.210865[丰乐种业]0.035518
113房屋建设4-0.046656-0.0871180.0068780.0096020.202862[中国建筑, 上海建工, 宁波建工]0.017114
176园区开发18-0.042658-0.077632-0.073093-0.0332780.200555[陆家嘴, 外高桥, 金融街]-0.005221
39租赁业1-0.1498170.011525-0.1065170.0431520.200312[渤海租赁]-0.000269
82土木工程建筑业45-0.028200-0.077634-0.0039290.0044280.181418[中国建筑, 中国中铁, 中国铁建]0.015217
194货币金融服务16-0.060532-0.0464900.0175930.0128840.181281[浦发银行, 兴业银行, 民生银行]0.020947
101银行16-0.060532-0.0464900.0175930.0128840.181281[浦发银行, 兴业银行, 民生银行]0.020947
67燃气生产和供应业9-0.0970770.016135-0.0388050.0054400.178853[大众公用, 重庆燃气, 申能股份]0.012909

五年间十一月平均涨幅

  1. Out_put.sort(u'平均涨幅' , ascending = False).head(20)
行业名称该行业成分股数目(15年)2010年十一月2011年十一月2012年十一月2013年十一月2014年十一月2014年板块成交量前三平均涨幅
92房屋建筑业10.0000000.000000-0.1271930.2020550.316129[高新发展]0.078198
38保险业3-0.095615-0.017941-0.0356950.1542880.323310[中国平安, 中国太保, 中国人寿]0.065669
153保险4-0.095476-0.018500-0.0358060.1540060.323234[中国平安, 中国太保, 中国人寿]0.065492
35林业50.0102440.1171800.0286190.0128050.085120[平潭发展, 永安林业, 吉林森工]0.050794
200运输设备70.116078-0.0560200.0957490.0718690.008633[晋西车轴, 北方创业, 康尼机电]0.047262
97资本市场服务18-0.141082-0.152839-0.1333070.0987540.511463[中信证券, 海通证券, 兴业证券]0.036598
202农、林、牧、渔服务业1-0.0138930.032037-0.1065010.0550810.210865[丰乐种业]0.035518
22证券20-0.142078-0.150951-0.1299550.0949500.493749[中信证券, 海通证券, 兴业证券]0.033143
107综合金融21-0.139421-0.148480-0.1328000.0958970.477825[中信证券, 海通证券, 兴业证券]0.030604
123铁路运输业3-0.074811-0.0327040.0332690.0584320.158774[大秦铁路, 广深铁路, 铁龙物流]0.028592
111餐饮业40.1160880.030976-0.1157200.0944880.002694[ST云网, 西安饮食, 全聚德]0.025705
188互联网和相关服务120.0634920.059126-0.1234810.0011130.127137[东方财富, 鹏博士, 海虹控股]0.025477
182电气自动化设备300.1810470.021313-0.1216610.0004770.045836[国电南瑞, 许继电气, 川仪股份]0.025402
20专业技术服务业90.173828-0.040446-0.1197830.0463130.057355[中材节能, 设计股份, 三联虹普]0.023453
193石油加工、炼焦和核燃料加工业180.007286-0.034520-0.1277210.0053770.258827[陕西黑猫, 上海石化, ST华锦]0.021850
4铁路运输3-0.074811-0.0327040.0281850.0574720.130967[大秦铁路, 广深铁路, 铁龙物流]0.021822
139基础建设22-0.037736-0.0886440.0092900.0118600.212001[中国中铁, 中国铁建, 中国交建]0.021354
194货币金融服务16-0.060532-0.0464900.0175930.0128840.181281[浦发银行, 兴业银行, 民生银行]0.020947
101银行16-0.060532-0.0464900.0175930.0128840.181281[浦发银行, 兴业银行, 民生银行]0.020947
44食品制造业220.1500090.017352-0.080203-0.0456080.059697[伊利股份, 光明乳业, 花园生物]0.020249