時間序列
包 ‘PerformanceAnalytics’ - 無風險利率:使用 CAPM.beta() 函式時遇到問題
這是我第一次使用包“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])