gpt4 book ai didi

r - 在没有 xts 对象的情况下在 PortfolioAnalytics 中创建有效边界

转载 作者:行者123 更新时间:2023-12-04 15:17:37 25 4
gpt4 key购买 nike

有没有办法在不指定 Assets 返回的 xts 对象的情况下在 PortfolioAnalytics 包中创建有效边界?相反,我想提供预期返回向量和协方差矩阵。

最佳答案

有两种方法。首先,您可以提供一个包含具有如下所示结构的矩阵的列表,然后调用包含此列表作为参数的 optimize.portfolio。

# num_assets is the number of assets in the portfolio
momentargs <- list()
momentargs$mu <- matrix(0, nrow=num_assets, ncol=1 )
momentargs$sigma <- matrix(0, nrow=num_assets, ncol=num_assets)
momentargs$m3 <- matrix(0, nrow=num_assets, ncol=num_assets^2)
momentargs$m4 <- matrix(0, nrow=num_assets, ncol=num_assets^3)

optimize.portfolio(R, portfolio, momentargs=momentargs, ...)

或者,您可以提供自己的函数来计算矩。下面显示了一个简单的示例,它重现了一些 PortfolioAnalytics 选项。
 set.portfolio.moments.user=function(R, portfolio, user_moments=NULL, user_method=c(returns, input, two_moment)) {
#
# Sets portfolio moments to user specified values
#
# R asset returns as in PortfoloAnalytics
# portfolio a portfolio object as in PortfolioAnalytics
# user_moments a list of four matices containing user-specified
# values for the first four return moments
# user_method user-specified method for computing moment matrices
# defaults to calculation used by PortfolioAnalytics "sample" method
# which uses PerformanceAnalytics functions to computer the higher-order moments

if( !hasArg(user_method) | is.null(user_method)) user_method <- "returns"
tmpR <- R
switch( user_method, returns = {
momentargs <- list()
momentargs$mu <- matrix(as.vector(apply(tmpR,2, "mean")), ncol = 1)
momentargs$sigma <- cov(tmpR)
momentargs$m3 <- PerformanceAnalytics:::M3.MM(tmpR)
momentargs$m4 <- PerformanceAnalytics:::M4.MM(tmpR)
}, input = {
momentargs <- user_moments
}, two_moment = {
momentargs <- list()
momentargs$mu <- matrix(as.vector(apply(tmpR,2, "mean")), ncol = 1)
momentargs$sigma <- cov(tmpR)
momentargs$m3 <- matrix(0, nrow=ncol(R), ncol=ncol(R)^2)
momentargs$m4 <- matrix(0, nrow=ncol(R), ncol=ncol(R)^3)
} )

return(momentargs)
}

然后,您将调用 PortfolioAnalytics
 optimize.portfolio(R, portfolio, momentFUN = "set.portfolio.moments.user", ...)

举个例子。

关于r - 在没有 xts 对象的情况下在 PortfolioAnalytics 中创建有效边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com