*! version 1.0.0 03may2013

Title

gmvport -- Calculates the Global Minimum Variance financial portfolio given a set of financial returns (instruments). It also performs the risk decomposition of the portfolio according to its assets.

Syntax

gmvport varlist [if] [in]
[,options]

noshort Indicates that no short sales are allowed (no negative weights for the instruments). The default is to allow for short sales.

casewise Specifies casewise deletion of observations. Expected returns and var-cov matrix are
to be computed for the sample that is not missing for any of the variables in varlist.
The default is to use all the nonmissing values for each variable.

minweight(#) Specifies the minimum weight to be allowed for all instruments. In case of specifying the noshort option, the default value for minweight is zero.

rminweights In case of specific restrictions of minimum weights for each instrument or return, a list of minimum weights have to be indicated here.
This is a list of decimal numbers usually from 0 to 1. If the list has less numbers than the number of instruments, zero is assumed for the rest. Order of instruments is important here

maxweight Specifies the maximum weight to be allowed for all instruments.

rmaxweights In case of specific restrictions of maximum weights for each instrument or return, a list of maximum weights have to be indicated here.
This is a list of decimal numbers usually from 0 to 1. If the list has less numbers than the number of instruments, 1 is assumed for the rest. Order of instruments is important here

covmatrix(cov_matrix) If cov_matrix exists and has the right dimension according to the number of variables, instead of calculating the variance-covariance
matrix, then the cov_matrix will be used as the variance-covariance matrix to estimate the global minimum variance portfolio.

mrets(ret_matrix) If ret_matrix exists and has the right dimension according to the number of variables, instead of calculating the expected returns of the
assets, then the ret_matrix will be used as the vector of expected returns to estimate the global minimum variance portfolio.

Description

gmvport calculates the global variance minimum financial portfolio given specific financial instrument returns specified in
varlist. The varlist must be a list of continuously compounded returns of financial assets to be considered for the portfolio. This commands
allows for different restrictions in terms of minimum and/or maximum values of asset weights. gmvport also performs the risk decomposition of the portfolio.
It estimates the contribution to portfolio risk of each asset (see Stored results).

Remarks

This command needs the installation of the meanrets command. Check the "Also See" Menu for related commands.
The return variables must be continuously compounded returns, not simple returns.
If a specific list of minimum weights for each financial return or instrument is specified, then the option minweight will not be used for computing the global minimum variance portfolio.
If a specific list of maximum weights for each financial return or instrument is specified, then the option maxweight will not be used for computing the global minimum variance portfolio.

Examples

Collect online monthly stock data (adjusted prices) from Yahoo Finance with the user command returnsyh. This command also calculates simple and continuous compounded returns:

. returnsyh AAPL MSFT GE GM WMT XOM, fm(1) fd(1) fy(2012) lm(12) ld(31) ly(2015) frequency(m) price(adjclose)

Calculates the global variance minimum portfolio using 6 continuously compounded returns, and allowing for short sales :

. gmvport r_AAPL r_MSFT r_GE r_GM r_WMT r_XOM

Calculates the global variance minimum portfolio using 6 continuously compounded returns, without allowing for short sales :

. gmvport r_AAPL r_MSFT r_GE r_GM r_WMT r_XOM, noshort

Calculates the global variance minimum portfolio without allowing for short sales, restricting periods starting from Jan 2013:

. gmvport r_* if period>=tm(2013m1), noshort

Calculates the global variance minimum portfolio restricting the weights to be at least 10% for all instruments:

. gmvport r_* , noshort minweight(0.10)

Calculates the global variance minimum portfolio restricting the weights to be less or equal to 30% :

. gmvport r_* , noshort maxweight(0.30)

Calculates the global variance minimum portfolio restricting the weights to be less or equal to 30% and greater or equal to 10%:

. gmvport r_* , noshort maxw(0.30) minw(0.10)

Calculates the global variance minimum portfolio with different minimum weights for each instrument:

. gmvport r_* , rminweights(0 0.1 0.1 0 0.15 0)

Negative minimum weights for each instrument can also be specified.

Calculates the global variance minimum portfolio with different maximum weights for each instrument:

. gmvport r_* , rmaxweights(0.5 0.2 0.4 0.4 0.25 0.15)

Calculates the expected returns of the instruments using the Exponential Weighted Moving Average (EWMA) method with a constant lamda=0.94:

. meanrets r_* , lew(0.94)

Saving the matrix of expected returns in a vector:

. matrix mrets=r(meanrets)

Calculates the variance-covariance matrix of the instruments using the EWMA method with a constant lamda=0.94:

. varrets r_* , lew(0.94)

Saving the variance-covariance matrix in a local matrix:

. matrix cov=r(cov)

Calculates the global variance minimum portfolio using the calculated expected returns and variance-covariance matrix using the EWMA method:

. gmvport r_* , covm(cov) mrets(mrets)

Any variance-covariance matrix can be used for the calculation of the global minimum variance portfolio.

Stored results

gmvport saves results in r() in the following scalars, matrices/vectors:

Scalars

r(N): number of observations used for computations

r(varport): global minimum variance of the portfolio

r(sdport): standard deviation of the global minimum variance portfolio

r(retport): return of the global minimum variance portfolio

Matrices

r(exprets): (n x 1) vector of expected simple returns for each return series

r(cov): (n x n) variance-covariance matrix used for the optimization

r(weights): (n x 1) weight vector of the global minimum variance portfolio

r(mcr): (n x 1) Decomposition of risk: vector of asset marginal contributions to portfolio risk.
Risk decomposition is performed using the Euler's theorem, so the marginal contributions to risk is a set of partial derivatives of portfolio risk with respect to each asset weight.

r(cr): (n x 1) Decomposition of risk: vector of asset contributions to portfolio risk. This is equal to the marginal contributions multiplied by its respective weights.
The sum of the elements of this vector is equal to the portfolio risk (portfolio standard deviation).

r(pcr): (n x 1) Decomposition of risk: vector of asset percent contributions to portfolio risk. This is equal to the contributions divided by portfolio risk.
The sum of the elements of this vector is equal to one.

r(betas): (n x 1) vector of asset betas with respect to the portfolio. An asset beta is defined as the covariance between the asset returns and the portfolio returns divided by the portfolio variance.

Author

Carlos Alberto Dorantes, Tecnológico de Monterrey, Querétaro Campus, Querétaro, México.
Email: cdorante@itesm.mx