4
자산 반환 값의 xts 객체를 지정하지 않고 PortfolioAnalytics 패키지에서 효율적인 프론티어를 만드는 방법이 있습니까? 대신 기대 수익률 벡터와 공분산 행렬을 제공하고 싶습니다.xts 객체없이 PortfolioAnalytics에서 효율적인 프론티어 만들기
자산 반환 값의 xts 객체를 지정하지 않고 PortfolioAnalytics 패키지에서 효율적인 프론티어를 만드는 방법이 있습니까? 대신 기대 수익률 벡터와 공분산 행렬을 제공하고 싶습니다.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)
}
그런 예로
optimize.portfolio(R, portfolio, momentFUN = "set.portfolio.moments.user", ...)
와 PortfolioAnalytics을 부를 것이다.