我的Python心路历程 第十期 (10.11 股票实战可视化风险评估操练)
股票风向评估之前,需要先做两个准备工作:
一方面是抓取整理其中的几只数据,如下图所示:
另一方面是需要将数据进行一次转换,即求得每个公司的每日股票变化情况(daily-return)。如下所示:
#每日差距分析
top_tech_dr = top_tech_df.pct_change()
print top_tech_dr.head()
DataFrame结构的top_tech_dr变量就是我们准备的进行风险分析数据。
1、我们首先来看一下这两家公司的股票价格走势:
top_tech_df.plot()
plt.title(u"总体视图")
plt.gcf().autofmt_xdate() # 自动旋转日期标记
plt.show()
其中,top_tech_df数据取自准备工作1的结果。效果图如下:
从上图可以看出,goog的走势明显优于aapl,多只一起看可以进行梯队划分。
下面两只看着有点同梯队的感觉吧!
2、我们可以通过散点图使用daily-return数据再次验证我们看出的这种现象:
从上面的图可以看出,散点图相对于上图来说比较宽,如果我们从中画一条线的话,很明显是不经过原点的;可以多比较几家看看差异。比如相似度高的两家是啥情况呢,如下所示:
3、使用seaborn库的pairplot()方法,从整体上看这2家公司的股票价格关系如下:
sns.pairplot(top_tech_dr.dropna())
plt.show()
另外两家:
4、最后我们通过分位数的概念,来分析一下风险的情况。
# 分位数,有95%的把握在这个区间里面,应用于风险评估
print "quantile=" + str(top_tech_dr[comName[0]].quantile(0.05))
上图给quantile传入0.05,即我们有95%的信心对这只个股,我们买的话每天的亏损最大不超过2.5%。但是,这个值依赖于对周期的设定,比如1年、5年和10年的可能有所差异,仅供参考。
002238.SZ的分为数显示意思是说买的话每天的亏损最大不超过4.5%:
以上仅供参考和练习之用途,请勿对号入座。