股票的平均日回报率是多少?
现在我们已经完成了一些基本分析,现在进一步深入研究。现在我们来分析一下股票的风险。这里需要仔细观察股票的每日变化趋势。使用pct_change
来查找每天的百分比变化。
for company in company_list:
company['Daily Return'] = company['close'].pct_change()
# 画出日收益率
fig, axes = plt.subplots(nrows=2, ncols=2)
fig.set_figheight(8)
fig.set_figwidth(15)
maotai['Daily Return'].plot(ax=axes[0,0], legend=True,
linestyle='--', marker='o')
axes[0,0].set_title('贵州茅台')
wuliangye['Daily Return'].plot(ax=axes[0,1], legend=True,
linestyle='--', marker='o')
axes[0,1].set_title('五粮液')
yanghe['Daily Return'].plot(ax=axes[1,0], legend=True,
linestyle='--', marker='o')
axes[1,0].set_title('洋河股份')
fenjiu['Daily Return'].plot(ax=axes[1,1], legend=True,
linestyle='--', marker='o')
axes[1,1].set_title('山西汾酒')
fig.tight_layout()
现在用直方图来全面看看平均日收益。我们将使用seaborn
在同一图上创建直方图和kde
图。
# 注意这里使用了dropna(),否则seaborn无法读取NaN值
plt.figure(figsize=(12, 7))
company_name_c = ['贵州茅台','五粮液','洋河股份','山西汾酒']
for i, company in enumerate(company_list, 1):
plt.subplot(2, 2, i)
sns.distplot(company['Daily Return'].dropna(), bins=100, color='purple')
plt.ylabel('Daily Return')
plt.title(f'{company_name_c[i - 1]}')
# 也可以这样绘制
# maotai['Daily Return'].hist()
plt.tight_layout();
股票收盘价之间的相关性
如果想分析中所有股票的回报呢?
可以将每个股票数据框构建一个包含所有['Close']
列的DataFrame。将所有的收盘价为白酒股列表到一个DataFrame
index = maotai.index
closing_df = pd.DataFrame()
for company, company_n in zip(company_list,company_name_c):
temp_df = pd.DataFrame(index=company.index,