【Python量化交易】分析个股相关性以及显示股票归一化的涨跌幅收益率(包含完整代码)

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.扫码关注微信公众号“价值智生”,持续学习,共同进步

  • 4
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子王量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值