design_MVSKtilting_portfolio_via_sample_moments {highOrderPortfolios}R Documentation

Design high-order portfolio by tilting a given portfolio to the MVSK efficient frontier

Description

Design high-order portfolio by tilting a given portfolio to the MVSK efficient frontier (i.e., mean, variance, skewness, and kurtosis):

  minimize     - delta
               m1(w) >= m1(w0) + delta*d1
               m2(w) <= m2(w0) - delta*d2
               m3(w) >= m3(w0) + delta*d3
               m4(w) <= m4(w0) - delta*d4
               (w-w0)'Sigma(w-w0) <= kappa^2
  subject to   ||w||_1 <= leverage, sum(w) == 1.

Usage

design_MVSKtilting_portfolio_via_sample_moments(
  d = rep(1, 4),
  X_moments,
  w_init = rep(1/length(X_moments$mu), length(X_moments$mu)),
  w0 = w_init,
  w0_moments = NULL,
  leverage = 1,
  kappa = 0,
  method = c("Q-MVSKT", "L-MVSKT"),
  tau_w = 1e-05,
  tau_delta = 1e-05,
  gamma = 1,
  zeta = 1e-08,
  maxiter = 100,
  ftol = 1e-05,
  wtol = 1e-05,
  theta = 0.5,
  stopval = -Inf
)

Arguments

d

Numerical vector of length 4 indicating the weights of first four moments.

X_moments

List of moment parameters, see estimate_sample_moments().

w_init

Numerical vector indicating the initial value of portfolio weights.

w0

Numerical vector indicating the reference portfolio vector.

w0_moments

Numerical vector indicating the reference moments.

leverage

Number (>= 1) indicating the leverage of portfolio.

kappa

Number indicating the maximum tracking error volatility.

method

String indicating the algorithm method, must be one of: "Q-MVSK", "MM", "DC".

tau_w

Number (>= 0) guaranteeing the strong convexity of approximating function.

tau_delta

Number (>= 0) guaranteeing the strong convexity of approximating function.

gamma

Number (0 < gamma <= 1) indicating the initial value of gamma.

zeta

Number (0 < zeta < 1) indicating the diminishing paramater of gamma.

maxiter

Positive integer setting the maximum iteration.

ftol

Positive number setting the convergence criterion of function objective.

wtol

Positive number setting the convergence criterion of portfolio weights.

theta

Number (0 < theta < 1) setting the combination coefficient when enlarge feasible set.

stopval

Number setting the stop value of objective.

Value

A list containing the following elements:

w

Optimal portfolio vector.

delta

Maximum tilting distance of the optimal portfolio.

cpu_time_vs_iterations

Time usage over iterations.

objfun_vs_iterations

Objective function over iterations.

iterations

Iterations index.

moments

Moments of portfolio return at optimal portfolio weights.

improvement

The relative improvement of moments of designed portfolio w.r.t. the reference portfolio.

Author(s)

Rui Zhou and Daniel P. Palomar

References

R. Zhou and D. P. Palomar, "Solving High-Order Portfolios via Successive Convex Approximation Algorithms," in IEEE Transactions on Signal Processing, vol. 69, pp. 892-904, 2021. <doi:10.1109/TSP.2021.3051369>.

Examples


library(highOrderPortfolios)
data(X50)

# estimate moments
X_moments <- estimate_sample_moments(X50[, 1:10])

# decide problem setting
w0 <- rep(1/10, 10)
w0_moments <- eval_portfolio_moments(w0, X_moments)
d <- abs(w0_moments) 
kappa <- 0.3 * sqrt(w0 %*% X_moments$Sgm %*% w0)

# portfolio optimization
sol <- design_MVSKtilting_portfolio_via_sample_moments(d, X_moments, w_init = w0, w0 = w0, 
                                                       w0_moments = w0_moments, kappa = kappa)



[Package highOrderPortfolios version 0.1.1 Index]