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 |
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)