我有一个关于 R 里的组合优化问题。我对 R 很陌生,虽然我已经尝试学习和寻找答案,但是我不确定是否正确。希望有人能在这里为我提供帮助。
我使用计量模型(这里我使用 DCC GARCH 模型来对我的资产收益率进行建模)获得了资产建模的协方差矩阵。在进行预测后,我将得到协方差矩阵。那么,如何使用 fPortfolio 软件包中的协方差矩阵进行投资组合优化呢?我发现大多数示例都只使用资产收益率来进行组合优化。如果我们使用预测的资产收益率的平均值和方差-协方差来创建最佳资产配置模型,该怎么办呢?
以下是我可复制的代码。
我使用计量模型(这里我使用 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(ewPortfolio@portfolio)["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)
那么,我们实际上在哪里输入协方差矩阵?我所做的是否正确?如果有人能在这里协助我,将不胜感激。
谢谢!
fPortfolio
包PDF的第19页。它讨论了targetMean
作为返回的S4对象的@portfolio
插槽中的变量。因此,您可以尝试将其作为ewPortfolio@portfolio$targetMean
进行访问。但是,您应该验证这是否是您要查找的平均值。 - Mekki MacAulayfPortfolio
包的开发者以及许多其他相关包的开发者都有许多免费的电子书,其中详细解释了如何通过许多示例来处理此类问题。您可以在此处找到它们:https://www.rmetrics.org/ebooks-free - Mekki MacAulay