python|计算指定股票在指定日期区间内的正常收益率

  1. 读取数据:首先,你需要使用pandas库来读取包含个股回报率和市场回报率的Excel文件。

  2. 筛选数据:根据指定的日期区间(2018-08-20 至 2019-04-24),筛选出对应的数据行。

  3. 构建回归模型:使用statsmodels库构建一个线性回归模型,其中个股收益率作为因变量,市场收益率作为解释变量。

  4. 拟合模型:使用fit方法拟合模型,并获取回归方程的参数。

  5. 回归方程:根据回归结果,写出回归方程

import pandas as pd
import statsmodels.api as sm

# 读取Excel文件
df = pd.read_excel('事件一个股、市场.xlsx')

# 筛选指定日期区间内的数据
start_date = '2018-08-20'
end_date = '2019-04-24'
df_filtered = df[(df['Trddt'] >= start_date) & (df['Trddt'] <= end_date)]

# 准备回归数据
X = df_filtered['Dretwdtl']  # 市场回报率
y = df_filtered['Dretwd']   # 个股回报率

# 添加常数项以便进行回归
X = sm.add_constant(X)

# 构建并拟合模型
model = sm.OLS(y, X).fit()

# 输出回归结果摘要
print(model.summary())

# 从模型结果中提取回归方程的参数
alpha = model.params['const']
beta = model.params['Dretwdtl']

# 写出回归方程
regression_equation = f"个股收益率 = {alpha:.4f} + {beta:.4f} * 市场收益率"

print(regression_equation)

报错1

可能由以下几个原因引起:

  1. 包含非数值类型的列:如果你的DataFrame中包含非数值类型的列(如字符串或日期时间对象),直接转换为NumPy数组时可能会失败。

  2. 数据类型不一致:尝试将包含不同数据类型的列转换为单一数据类型的NumPy数组可能会导致这个错误。

  3. 缺失值:如果DataFrame中存在缺失值(NaN),在转换为NumPy数组之前没有进行适当的处理,也可能导致这个错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值