MVShrinkPortfolio | R Documentation |
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.
MVShrinkPortfolio(x, gamma, type = c("shrinkage", "traditional"), ...)
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 |
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} + γ^{-1} \hat Q \bar x \quad ,
where S^{-1} and \bar x are the inverse of the sample covariance matrix and the sample mean vector of asset returns respectively, γ 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 α \hat w_{MV} + (1- \hat α)b \quad,
where \hat α is the estimated shrinkage intensity and b is a target vector with the sum of the elements equal to one.
In the case γ \neq ∞, \hat{α} is computed following Eq. (2.22) of \insertCiteBOP16;textualHDShOP for c<1 and following Eq. (2.29) of \insertCiteBOP16;textualHDShOP for c>1
The case of a fully risk averse investor (γ=∞) 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α \hat w_{GMV} + (1-\hat α)b \quad,
with \hat{α} given in Eq. (2.31) of \insertCiteBPS2018;textualHDShOP for c<1 and in Eq. (2.33) of \insertCiteBPS2018;textualHDShOP 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 | \insertCiteBOP16;textualHDShOP | shrinkage | < Inf | <1 |
new_MV_portfolio_weights_BDOPS21_pgn | \insertCiteBOP16;textualHDShOP | shrinkage | < Inf | >1 |
new_GMV_portfolio_weights_BDPS19 | \insertCiteBPS2018;textualHDShOP | shrinkage | Inf | <1 |
new_GMV_portfolio_weights_BDPS19_pgn | \insertCiteBPS2018;textualHDShOP | shrinkage | Inf | >1 |
new_MV_portfolio_traditional | traditional | > 0 | <1 | |
new_MV_portfolio_traditional_pgn | traditional | > 0 | >1 | |
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.
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.