探索沪深300指数(HS300)——基于Python(下)
【承接上文】
写在前面:本文只做分析,提供观点,不构成投资建议
如需转载请微信联系:eosO_oke
佛系更新,关注不迷路
沪深300指数是A股市场中比较具有代表性的指数之一,于2005年4月8日正式推出。2005年之前沪深两个市场各自均有独立的综合指数和成分指数,但市场缺乏反映沪深市场整体走势的跨市场指数,沪深300指数应运而生。
沪深300指数是反映沪深两个市场整体走势的“晴雨表”,指数样本覆盖了两市大部分流通股。沪深300成分股均为市场中代表性好、流动性高、交易活跃的主流投资股票,多为蓝筹股或白马股,能够反映市场主流投资的收益情况。
思路:
· 沪深300近15年走势图(2005-20年)
· 沪深300历次重大事件中的表现情况
· 收益是否遵从正态分布
· 每年收益率展示
· 月历效应
· 日历效应
上节我们分析了沪深300的月历效应,本节将继续分析日历效应,查看A股在每个工作日上涨的概率。
01 首先根据工作日进行分组
- return_by_week = pd.DataFrame(round(hs300['return'].groupby(hs300.week).sum()*100,2))
- return_by_week.index = ['周一', '周二', '周三', '周四', '周五']
- average_week_return = np.mean(return_by_week['return'])
- return_by_week['pos_neg'] = return_by_week['return'] > 0
02 开始绘图
- plt.figure(figsize=(20,15))
- return_by_week['return'].plot(kind='bar',
- color=return_by_week['pos_neg'].map({True:'red',False:'green'}))
- plt.axhline(average_week_return,color='blue')
- plt.title('每周表现最好的工作日',size=20)
- plt.ylabel('工作日累计收益率(%)',size=20)
- return_by_week['n'] = range(len(return_by_week))
- plt.xticks(return_by_week['n'],return_by_week.index,rotation=45,size=15)
- plt.yticks(np.arange(-125,125,step=10),size=15)
- plt.grid(alpha=0.3)
输出结果为:
03 查看各工作日收益为正的比例(在分组时运用到层次化索引的命令,这一点非常重要)
- hs300['pos_neg'] = hs300['return'] > 0
- best_day = hs300['return'].groupby([hs300.week,hs300.pos_neg]).count()
- best_day.tail(30)
- best_day = best_day.unstack()
- best_day.index = ['周一', '周二', '周三', '周四', '周五']
- best_day.rename(columns={True:'Pos',False:'Neg'},inplace=True)
- best_day['positive_percentage'] = best_day['Pos'] / (best_day['Pos'] + best_day['Neg'])
- #best_day.eval('positive_percentage = Pos / (Pos+Neg)', inplace=True)
- average_positive_percentage = np.mean(best_day.positive_percentage)
- best_day['fifty_per'] = best_day['positive_percentage'] > average_positive_percentage
注:中间使用#表示改行命令和上一行命令效果相同,详情请查看.eval()命令
04 开始绘图
- plt.figure(figsize=(20,15))
- plt.bar(best_day.index,best_day.positive_percentage,width=0.3,lw=1,color=best_day['fifty_per'].map({True:'red',False:'g'}))
- plt.axhline(average_positive_percentage, c="darkgreen", ls="--", lw=2)
- plt.title('沪深300交易日平均上涨概率',size=20)
- plt.ylabel('收益为正的比例',size=20)
- plt.yticks(np.arange(0,1,step=0.05),size=15)
- plt.xticks(rotation=45,size=15)
- plt.grid(alpha=0.4)
- plt.text(0,0.6,'58%',fontdict={'size': 20, 'color': 'red'},fontstyle='italic')
- plt.text(1,0.58,'56%',fontdict={'size': 20, 'color': 'red'},fontstyle='italic')
- plt.text(2,0.54,'51%',fontdict={'size': 20, 'color': 'green'},fontstyle='italic')
- plt.text(3,0.47,'45%',fontdict={'size': 20, 'color': 'green'},fontstyle='italic')
- plt.text(4,0.58,'56%',fontdict={'size': 20, 'color': 'red'},fontstyle='italic')
- plt.text(2.5,0.75,'历史上每个交易日平均上涨概率为53.3%,\n综合来看周一上涨概率最高,达到58%,\n周四下跌概率最高,故称“黑色星期四”',
- fontdict={'size':13, 'color': 'red'},fontstyle='italic')
05 输出结果
写在最后:本期话题【沪深300指数探索】共三期,到此告一段落了,由于我的目的只是想分享数据分析的一些知识,因此对A股的探讨非常的浅薄,如有疏漏,还望读者可以指出。
佛 系 更 新
***关注一下 ,不做尘世中迷途的小书童


雷达卡





京公网安备 11010802022788号







