我使用带有以下代码的investpy计算了我国家资产的贝塔系数:
import investpy as inv
from scipy.stats import linregress as line
import pandas as pd
def beta(index,arr):
return line(index,arr)[0]
arr = inv.get_stock_historical_data(stock='Mglu3',country="Brazil",from_date="30/05/2015",to_date="30/05/2020",interval="Monthly").Open
arr = arr[arr!=0].pct_change()
arr2 = inv.get_index_historical_data(index="Bovespa",country="Brazil",from_date="30/05/2015",to_date="30/05/2020",interval="Monthly").Open
arr2 = arr2[arr2!=0].pct_change()
arrF = pd.DataFrame({'Mglu3':arr,'Ibov':arr2}).dropna()
print(beta(arrF.Ibov,arrF.Mglu3))
结果为1.341037868654568,考虑到investing.com(1.31)和yahooFinances(1.37)等网站的计算,这是正确的结果。
但是,当我将inv.get_stock_historical_data中的参数“ to_date”更改为“ Daily”(使用每日价格进行计算)时,它将返回0.3472243767744718。这是由于我的代码中某些内容会为Beta计算错误的值吗?对于我来说,很奇怪,我们在给定的时间段内输入了更多的数据,并且偏离了财务网站计算出的大部分beta,在那个时期应该是什么趋势。