MVShrinkPortfolio: Shrinkage mean-variance portfolio

View source: R/dispatchers.R

MVShrinkPortfolioR 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} + γ^{-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

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

\insertAllCited

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)


HDShOP documentation built on Nov. 10, 2022, 5:12 p.m.