我有一个关于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'来访问。但是,您应该验证这是您寻找的意思。 –