Description Usage Arguments Details Author(s) References Examples
View source: R/mvskPortfolio.R
function for determining risk-based portfolios that are mean-variance-skewness-kurtosis efficient.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
m1 |
mean vector; not used if NULL |
M2 |
covariance matrix |
M3 |
coskewness matrix; not used if NULL |
M4 |
cokurtosis matrix; not used if NULL |
w0 |
weight of the benchmark portfolio / initial portfolio name, see details |
g |
vector with preferences for the moments, see details |
lb |
lower bound for the weights, default rep(0, p) |
ub |
upper bound for the weights, default rep(1, p) |
lin_eq |
equality constraints: eq w = eqC (should be matrix!), see details |
lin_eqC |
equality constraints: eq w = eqC, see details |
nlin_eq |
function with non-linear equality constraint (returns objective value and jacobian) |
lin_ieq |
inequality constraints: ieq w leq ieqC (should be matrix!) |
lin_ieqC |
inequality constraints: ieq w leq ieqC |
nlin_ieq |
function with non-linear inequality constraints (returns objective value and jacobian) |
href |
reference function to keep into account while tilting the portfolios (name or function) |
kappa |
vector of values indicating maximum deviation of the reference objective |
relative |
boolean indicating if kappa is absolute or relative |
param |
list with extra arguments for the href function |
options |
optimization options |
mompref |
direction of preference for the moments, defaults to higher mean and skewnes, lower variance and kurtosis |
All moments with NULL are ignored as tilting constraints. The default uses the most diversified portfolio of houeifaty & Coignard (2008) as initial portfolio. For unconstrained portfolio tilting, set kappa to 1, which allows 100 is g = (0, sigma_^2_w0, abs(phi_w0), psi_w0). Additional linearity and non-linearity constraints can be included in the optimization procedure with the arguments lin_eq, lin_eqC, nlin_eq, lin_ieq, lin_ieqC and nlin_ieq. The default includes a full investment constraint (sum of weights equal to 1), overriding lin_eq and lin_eqC removes the default constraint.
Dries Cornilly
Boudt, K., Cornilly, D., Van Holle, F., & Willems, J. (2020). Algorithmic portfolio tilting to harvest higher moment gains. Heliyon, 6(3).
Briec, W., Kerstens, K., & Jokung, O. (2007). Mean-variance-skewness portfolio performance gauging: a general shortage function and dual approach. Management science, 53(1), 135-149.
Choueifaty, Y., & Coignard, Y. (2008). Toward maximum diversification. Journal of Portfolio Management, 35(1), 40.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # load data
library(PerformanceAnalytics)
data(edhec)
x <- edhec[, 1:5]
# estimate moments
m1 <- colMeans(x)
M2 <- cov(x)
M3 <- PerformanceAnalytics:::M3.MM(x, as.mat = FALSE)
M4 <- PerformanceAnalytics:::M4.MM(x, as.mat = FALSE)
# MVSK tilting - starting from "DR", tilting with margin on "DR"
resMVSK <- mvskPortfolio(m1 = m1, M2 = M2, M3 = M3, M4 = M4, w0 = "DR",
g = "mvsk", ub = rep(0.3, 5), href = "DR",
kappa = c(0, 0.01, 0.025, 0.05))
# show weights
barplot(resMVSK$w, beside = TRUE)
# VSK tiltin - starting from "DR", tilting with maximum tracking error
# volatility
resVSK <- mvskPortfolio(M2 = M2, M3 = M3, M4 = M4, w0 = "DR",
g = "mvsk", ub = rep(0.3, 5), href = "TEvol",
kappa = c(0, 0.001, 0.025))
# show weights
barplot(resVSK$w, beside = TRUE)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.