1.个股相关性分析
在构建投资组合时,组合里个股之间的相关性会直接影响到投资组合的波动率。
个股之间的相关性越低,投资组合越稳健。
因此分析个股的相关性是很有必要的。
首先拿到这些数据,可以分析今年以来这几个股票的相关性:
df = pd.read_excel(r'C:\Users\aaa\Desktop\投资\stocks_analysis.xlsx')
print(df)
只需要pandas包里的一行代码,即可计算出相关性矩阵
df_corr = df.corr()
print(df_corr) # 输出相关性矩阵
相关性矩阵结果如下:
也可以用seaborn库输出好看的热力图:
plt.figure(1)
sns.heatmap(df_corr, annot=True, vmax=1, square=True) # 绘制df_corr的矩阵热力图
plt.show() # 显示图片
从相关性矩阵中可以看得出,同为医美赛道的爱美客和华熙生物正相关性就很高,同时这俩票个和中国平安负相关性也很高,具体什么原因可以深入研究一下,不知道主力是不是拿买保险的钱去炒医美股票了。
2.个股收益率分析
同时也可以分析今年以来个股的收益率,放在同一个图表中显示,查看每个股票的收益率和走势如何,这里需要做归一化处理:
首先编写一个show()函数:
def show(df, axs=None):
n = []
drawer = plt if axs is None else axs
for i in df.columns: # 遍历列名
if i != '日期':
n.append(i)
drawer.plot(100*(df[i]/df[i].iloc[0]-1)) # 归一化处理
drawer.grid(True) # 显示网格
drawer.legend(n, loc='best') # 图例标注
接着调用函数,输出图片:
show(df)
plt.title('股票涨跌幅')
plt.xlabel('时间') # x轴时间
plt.ylabel('收益率') # y轴收收益率
plt.show() # 显示图片
3.完整代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @author: fuzhisheng
# @file: correlation_analysis.py
# @time: 2021/6/18 8:50
# @desc: 相关性分析和收益率
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei'] # 显示中文
plt.rcParams['axes.unicode_minus'] = False # 显示负号
# 列对齐
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel(r'C:\Users\jrzb\Desktop\投资\stocks_analysis.xlsx')
print(df)
df_corr = df.corr()
print(df_corr) # 输出相关性矩阵
plt.figure(1)
sns.heatmap(df_corr, annot=True, vmax=1, square=True) # 绘制df_corr的矩阵热力图
plt.show() # 显示图片
def show(df, axs=None):
n = []
drawer = plt if axs is None else axs
for i in df.columns: # 遍历列名
if i != '日期':
n.append(i)
drawer.plot(100*(df[i]/df[i].iloc[0]-1)) # 归一化处理
drawer.grid(True) # 显示网格
drawer.legend(n, loc='best') # 图例标注
show(df)
plt.title('股票涨跌幅')
plt.xlabel('时间') # x轴时间
plt.ylabel('收益率%') # y轴收收益率
plt.show() # 显示图片
4.扫码关注微信公众号“价值智生”,持续学习,共同进步