時間序列

包 ‘PerformanceAnalytics’ - 無風險利率:使用 CAPM.beta() 函式時遇到問題

  • December 27, 2016

這是我第一次使用包“PerformanceAnalytics”。在使用 CAPM.beta 時,我在使用“Rf”(無風險利率)時遇到了問題。我使用 EONIA 作為無風險利率的代表。這是我的程式碼:

library(zoo)
library(Quandl)
library(PerformanceAnalytics)
cac <- Quandl('YAHOO/INDEX_FCHI', start_date = '2014-01-01', end_date = '2016-01-01', type = 'zoo')
saf <- Quandl('YAHOO/PA_SAF', start_date = '2014-01-01', end_date = '2016-01-01', type = 'zoo')
eonia <-Quandl("BOF/QS_D_IEUEONIA", start_date = '2014-01-01', end_date = '2016-01-01', type = 'zoo')
safreturn <- Return.calculate(saf$Close, method = ("log"))
cacreturn <- Return.calculate(cac$Close, method = ("log"))

然後當我嘗試使用 CAPM.beta() 函式時,我得到:

CAPM.beta(safreturn, cacreturn, eonia)
Error in NextMethod(.Generic) : 
 dims [product 523] do not match the length of object [266730]

我想我明白問題出在Rf = eonia. 我注意到即使safreturn和的長度cacreturn不一樣,如果我放一個隨機數Rf我可以得到一個解決方案,但我需要使用 EONIA 的每日速率。

有人能幫我嗎 ?提前致謝 :)

問題是時間序列的長度是不同的,儘管您設置了相似的開始日期。然後 CAPM.Beta 嘗試強制數據不成功,可以在 中看到,length of object [266730]等於 510 * 523,分別是 eonia 序列和 cacreturn 序列的長度。

我不是一個動物學家,所以我更喜歡將xts圖書館用於金融系列。以下應該可以解決問題:

library(xts)
library(Quandl)
library(PerformanceAnalytics)
cac <- Quandl('YAHOO/INDEX_FCHI', start_date = '2014-01-01', end_date = '2016-01-01', type = 'xts')
saf <- Quandl('YAHOO/PA_SAF', start_date = '2014-01-01', end_date = '2016-01-01', type = 'xts')
eonia <-Quandl("BOF/QS_D_IEUEONIA", start_date = '2014-01-01', end_date = '2016-01-01', type = 'xts')
safreturn <- Return.calculate(saf$Close, method = ("log"))
cacreturn <- Return.calculate(cac$Close, method = ("log"))

retmerge <- na.exclude(merge.xts(cacreturn, safreturn, eonia)) #na.exclude removes all rows with NA values

CAPM.beta(retmerge[,1], retmerge[,2], retmerge[,3])

引用自:https://quant.stackexchange.com/questions/31681