MVShrinkPortfolio {HDShOP} | R Documentation |
Shrinkage mean-variance portfolio
Description
The main function for mean-variance (also known as expected utility) portfolio construction. It is a dispatcher using methods according to argument type, values of gamma and dimensionality of matrix x.
Usage
MVShrinkPortfolio(x, gamma, type = c("shrinkage", "traditional"), ...)
Arguments
x |
a p by n matrix or a data frame of asset returns. Rows represent different assets, columns – observations. |
gamma |
a numeric variable. Coefficient of risk aversion. |
type |
a character. The type of methods to use to construct the portfolio. |
... |
arguments to pass to portfolio constructors |
Details
The sample estimator of the mean-variance portfolio weights, which results in a traditional mean-variance portfolio, is calculated by
\hat w_{MV} = \frac{S^{-1} 1}{1' S^{-1} 1} +
\gamma^{-1} \hat Q \bar x,
where S^{-1}
and \bar x
are the inverse of the sample covariance
matrix and the sample mean vector of asset returns respectively, \gamma
is the coefficient of risk aversion and \hat Q
is given by
\hat Q = S^{-1} - \frac{S^{-1} 1 1' S^{-1}}{1' S^{-1} 1} .
In the case when p>n
, S^{-1}
becomes S^{+}
- Moore-Penrose
inverse. The shrinkage estimator for the mean-variance portfolio weights in
a high-dimensional setting is given by
\hat w_{ShMV} = \hat \alpha \hat w_{MV} + (1- \hat \alpha)b,
where \hat \alpha
is the estimated shrinkage intensity and b
is
a target vector with the sum of the elements equal to one.
In the case \gamma \neq \infty
, \hat{\alpha}
is computed following
Eq. (2.22) of Bodnar et al. (2023) for c<1 and following
Eq. (2.29) of Bodnar et al. (2023) for c>1.
The case of a fully risk averse investor (\gamma=\infty
) leads to the
traditional global minimum variance (GMV) portfolio with the weights given by
\hat w_{GMV} = \frac{S^{-1} 1}{1' S^{-1} 1} .
The shrinkage estimator for the GMV portfolio is then calculated by
\hat w_{ShGMV} = \hat\alpha \hat w_{GMV} + (1-\hat \alpha)b,
with \hat{\alpha}
given in
Eq. (2.31) of Bodnar et al. (2018) for c<1 and in
Eq. (2.33) of Bodnar et al. (2018) for c>1.
These estimation methods are available as separate functions employed by MVShrinkPortfolio accordingly to the following parameter configurations:
Function | Paper | Type | gamma | p/n |
new_MV_portfolio_weights_BDOPS21 | Bodnar et al. (2023) | shrinkage | < Inf | <1 |
new_MV_portfolio_weights_BDOPS21_pgn | Bodnar et al. (2023) | shrinkage | < Inf | >1 |
new_GMV_portfolio_weights_BDPS19 | Bodnar et al. (2018) | shrinkage | Inf | <1 |
new_GMV_portfolio_weights_BDPS19_pgn | Bodnar et al. (2018) | shrinkage | Inf | >1 |
new_MV_portfolio_traditional | traditional | > 0 | <1 | |
new_MV_portfolio_traditional_pgn | traditional | > 0 | >1 | |
Value
A portfolio in the form of an object of class MeanVar_portfolio
potentially with a subclass.
See Class_MeanVar_portfolio
for the details of the class.
References
Bodnar T, Okhrin Y, Parolya N (2023).
“Optimal shrinkage-based portfolio selection in high dimensions.”
Journal of Business & Economic Statistics, 41, 140-156.
Bodnar T, Parolya N, Schmid W (2018).
“Estimation of the global minimum variance portfolio in high dimensions.”
European Journal of Operational Research, 266(1), 371–390.
Examples
n<-3e2 # number of realizations
gamma<-1
# The case p<n
p<-.5*n # number of assets
b<-rep(1/p,p)
x <- matrix(data = rnorm(n*p), nrow = p, ncol = n)
test <- MVShrinkPortfolio(x=x, gamma=gamma,
type='shrinkage', b=b, beta = 0.05)
str(test)
test <- MVShrinkPortfolio(x=x, gamma=Inf,
type='shrinkage', b=b, beta = 0.05)
str(test)
test <- MVShrinkPortfolio(x=x, gamma=gamma, type='traditional')
str(test)
# The case p>n
p<-1.2*n # Re-define the number of assets
b<-rep(1/p,p)
x <- matrix(data = rnorm(n*p), nrow = p, ncol = n)
test <- MVShrinkPortfolio(x=x, gamma=gamma, type='shrinkage',
b=b, beta = 0.05)
str(test)
test <- MVShrinkPortfolio(x=x, gamma=Inf, type='shrinkage',
b=b, beta = 0.05)
str(test)