我有一個關於R中投資組合優化的問題。我對R非常陌生,試圖研究並查看答案,但我不確定它是否正確。我希望有人能幫助我。在R中使用協方差矩陣進行投資組合優化
我已經從使用計量經濟模型的資產建模中獲得了協方差矩陣(在這裏,我使用DCC GARCH來模擬我的資產收益)。在做了預測之後,我會得到協方差矩陣。那麼,現在,我如何使用這個協方差矩陣來使用fPortfolio包進行投資組合優化呢?我發現的大多數例子都只使用資產回報來做投資組合優化。但是如果我們使用資產收益率的預測均值和方差 - 協方差來創建最優資產配置模型,那麼情況如何呢?
我有以下可重現的代碼。
library(zoo)
library(rugarch)
library(rmgarch)
data("EuStockMarkets")
EuStockLevel <- as.zoo(EuStockMarkets)[,c("DAX","CAC","FTSE")]
EuStockRet <- diff(log(EuStockLevel))
## GARCH-DCC
uspec = ugarchspec(mean.model = list(armaOrder = c(0,0)), variance.model = list(garchOrder = c(1,1), model = "sGARCH"), distribution.model = "norm")
spec1 = dccspec(uspec = multispec(replicate(3, uspec)), dccOrder = c(1,1), distribution = "mvnorm")
fit1 = dccfit(spec1, data = EuStockRet, fit.control = list(eval.se=T))
#Forecasting
dcc.focast=dccforecast(fit1, n.ahead = 1, n.roll = 0)
print(dcc.focast)
covmat.focast = rcov(dcc.focast)
covmat = covmat.focast$`1975-02-03`[,,1] ##The Covariance matrix
DAX CAC FTSE
DAX 0.0002332114 0.0001624446 0.0001321865
CAC 0.0001624446 0.0001799988 0.0001139339
FTSE 0.0001321865 0.0001139339 0.0001372812
所以現在我想應用我爲組合優化獲得的協方差。
##Optimization (Use the forecasted variance covariance matrix!!!)
##You must convert your dataset into "timeSeries" object for R to be able to read it in fportfolio.
library(fPortfolio)
##To compute efficient portfolio
All.Data <- as.timeSeries(100* EuStockRet)
##Equal weight portfolio
ewPortfolio <- feasiblePortfolio(data = All.Data,spec = ewSpec,constraints = "LongOnly")
print(ewPortfolio)
##Minimum risk efficient portfolio
minriskSpec <- portfolioSpec()
targetReturn <- getTargetReturn([email protected])["mean"]
setTargetReturn(minriskSpec) <- targetReturn
#Now, we optimize the portfolio for the specified target return :-
minriskPortfolio <- efficientPortfolio(data = All.Data,spec = minriskSpec,constraints = "LongOnly")
print(minriskPortfolio)
那麼,我們實際上在哪裏輸入協方差矩陣呢?我所做的是正確的?感謝有人能幫助我。
謝謝!
謝謝!我已經設法通過創建函數將協方差矩陣輸入到優化代碼中。即 covtEstimator < - function(x,spec = NULL,...){x.mat = as.matrix(x) list(mu = er,Sigma = covmat)}。順便說一下,我們如何預測擬合模型的平均值? – NSAA
我使用了函數擬合(dcc.focast)。這樣對嗎? – NSAA
我不確定,但看看'fPortfolio'軟件包PDF的第19頁。它將'targetMean'作爲S4對象的'@ portfolio'插槽中的變量進行討論。因此,您可以將其作爲'ewPortfolio @ portfolio $ targetMean'來訪問。但是,您應該驗證這是您尋找的意思。 –