【发布时间】:2019-10-12 12:45:41
【问题描述】:
我有特定股票和标准普尔 500 指数回报的 33 年每周数据。 我想根据 52 周的股票收益观察来计算 33 年的股票贝塔系数。
我知道可以使用协方差和方差来计算 beta。我发现 pandas 有一个函数 pd.rolling.cov,但它不起作用。 模块“熊猫”没有属性“滚动”
import pandas as pd
import numpy as np
stock=pd.read_excel(r"C:\01.xlsx", '2') #read second sheet of excel file
stock['stockreturn']=np.log(stock.AdjCloseStock / stock.AdjCloseStock.shift(1)) #stock ln return
stock['SP500return']=np.log(stock.AdjCloseSP500 / [enter image description here][1]stock.AdjCloseSP500.shift(1)) #SP500 ln return
stock = stock.iloc[1:] #delete first row in dataframe
stock['beta'] = pd.rolling.cov(stock['stockreturn'], stock['SP500return'],
window=52) / pd.rolling.var(stock['SP500return'], window=52)
坦率地说,我不知道如何从 33 个 52 周的观察中获得 33 个年度 beta。任何帮助表示赞赏。
【问题讨论】:
标签: python-3.x pandas numpy