夏买电,东买煤?

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

冬吃萝卜夏吃姜?冬炒煤来夏炒电 ?

行业分类 :申万二级行业

行业涨幅 :行业成分股市值加权

验证时间 :冬天(12,1,2)、夏天(7,8,9)..O、O …. 不懂什么夏至,春分,冬至啊/……..

主观预测 :然并卵好吗。!!!….唱唱 炒股歌 都能攥钱还要我们混吗?

参考 :Uqer社区牛人李杰关于行业涨幅统计的贴子

  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

选取行业,将行业所属股票加入universe

  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. universe = []
  10. Ind_tks_dic = {} #获得每个行业包含的股票
  11. for ind_nm,sub_info in Ind_info_gp:
  12. if ind_nm in ['电力' , '煤炭开采'] :
  13. Ind_tks_dic[ind_nm] = sub_info.drop_duplicates('ticker')['ticker'].tolist()
  14. universe += Ind_tks_dic[ind_nm]
  15. # print len(universe)

获取所需各段时间段的数据,放入Data_time

  1. from pandas import DataFrame,Series
  2. from CAL.PyCAL import *
  3. cal = Calendar('China.SSE')
  4. data = DataFrame()
  5. field = ['ticker','secShortName','tradeDate','preClosePrice','closePrice','turnoverValue']
  6. #时间轴(开始时间)
  7. time = ['20150630','20140630','20130630','20120630','20110630', '20141130', '20131130', '20121130', '20111130', '20101130']
  8. #保存各个时间段的数据
  9. Data_time = {}
  10. #保存各个时间段的股票名字
  11. tk_nm_dic ={}
  12. for s in time :
  13. Data_time[s] = DataFrame()
  14. data_temp = DataAPI.MktEqudAdjGet( ticker = universe , field =field , beginDate = s , endDate = cal.advanceDate(s,'3M', BizDayConvention.Following).strftime('%Y%m%d'))
  15. data_temp['marketValue'] = DataAPI.MktEqudGet(ticker = universe ,field ='marketValue' , beginDate = s , endDate = cal.advanceDate(s,'3M', BizDayConvention.Following).strftime('%Y%m%d'))
  16. Data_time[s] = pd.concat([Data_time[s],data_temp])
  17. tk_nm_dic[s] = dict(zip(Data_time[s]['ticker'],Data_time[s]['secShortName'])) # 获得个股ticker与名称的对应字典
  18. for s in Data_time.values() :
  19. s['tradeDate'] = pd.to_datetime(s['tradeDate']) # 将tradeDate这一列的格式由string改为datetime
  20. 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['bigstk_Summer15'] = []
  6. Output_dicy['bigstk_Winter14'] = []
  7. for ind,tks in Ind_tks_dic.items() :
  8. for table in Stock_Data.keys() :
  9. if not table in Output_dicy.keys() :
  10. Output_dicy[table] = []
  11. sub_Industry = Stock_Data[table][Stock_Data[table]['ticker'].isin(tks)]
  12. # 行业指数收益
  13. rtn_Industry = (sub_Industry['income']*sub_Industry['marketValue']).sum()/sub_Industry['marketValue'].sum()
  14. # 成交量
  15. bigstk = sub_Industry.sort(columns='turnoverValue',ascending=False)['ticker'][0:3].tolist()
  16. Output_dicy[table].append(rtn_Industry)
  17. # 计算成交量
  18. if table == '20150630' :
  19. Output_dicy['bigstk_Summer15'].append(map(lambda x:tk_nm_dic['20150630'][x],bigstk))
  20. if table == '20141130' :
  21. Output_dicy['bigstk_Winter14'].append(map(lambda x:tk_nm_dic['20141130'][x],bigstk))
  22. #最新行业成分数量
  23. Output_dicy['Num'].append(len(sub_Industry))
  24. Output_dicy['industry'].append(ind)
  25. # 计算上证指数同期涨幅
  26. for s in time :
  27. temp = DataAPI.MktIdxdGet(ticker= '000001' , beginDate = s , endDate = cal.advanceDate(s,'3M', BizDayConvention.Following).strftime('%Y%m%d'),field=u"secShortName,closeIndex",pandas="1")
  28. SH_rtn = temp['closeIndex'].values[-1] / temp['closeIndex'].values[0] - 1
  29. Output_dicy[s].append(SH_rtn)
  30. Output_dicy['Num'].append(1)
  31. Output_dicy['industry'].append('上证指数')
  32. Output_dicy['bigstk_Winter14'].append(None)
  33. Output_dicy['bigstk_Summer15'].append(None)
  34. Output_table = pd.DataFrame(Output_dicy)
  1. # 夏天统计
  2. Out_put = Output_table.loc[:,['industry','Num','20110630','20120630','20130630','20140630','20150630','bigstk_Summer15']]
  3. Out_put.columns = [u'行业名称',u'该行业成分股数目(15年)',u'2011年夏天收益',u'2012年夏天收益',u'2013年夏天收益',u'2014年夏天收益',u'2015年夏天收益',u'2015年夏天成交量前三']
  4. # print u'一共有%d个申万二级行业'%len(Out_put),u',1年内行业涨幅'
  5. Out_put.sort(u'2015年夏天收益' , ascending = False)
行业名称该行业成分股数目(15年)2011年夏天收益2012年夏天收益2013年夏天收益2014年夏天收益2015年夏天收益2015年夏天成交量前三
0电力65-0.164885-0.0809130.0473990.311616-0.277611[中国核电, 国电电力, 梅雁吉祥]
2上证指数1-0.145853-0.0681420.0899250.154049-0.286270None
1煤炭开采44-0.095143-0.0299450.0707140.244293-0.341531[国投新集, 中国神华, 中煤能源]

14年夏天电力还不错。。。

  1. # 冬天统计
  2. Out_put = Output_table.loc[:,['industry','Num','20101130','20111130','20121130','20131130','20141130','bigstk_Winter14']]
  3. Out_put.columns = [u'行业名称',u'该行业成分股数目(15年)',u'2010年冬天收益',u'2011年冬天收益',u'2012年冬天收益',u'2013年冬天收益',u'2014年冬天收益',u'2014年冬天成交量前三']
  4. # print u'一共有%d个申万二级行业'%len(Out_put),u',1年内行业涨幅'
  5. Out_put.sort(u'2014年冬天收益' , ascending = False)
行业名称该行业成分股数目(15年)2010年冬天收益2011年冬天收益2012年冬天收益2013年冬天收益2014年冬天收益2014年冬天成交量前三
2上证指数10.0300950.0407440.194673-0.0684380.244808None
0电力65-0.018729-0.0035420.161399-0.0432820.210642[国电电力, 国投电力, 长江电力]
1煤炭开采440.0597240.0177020.157182-0.2096950.140903[中国神华, 国投新集, 西山煤电]

冬买煤、冬买煤、冬买煤,呵呵!赶紧买…保证亏不死! O…..~