tseries (version 0.10-37)

portfolio.optim: Portfolio Optimization

Description

Computes an efficient portfolio from the given return series x in the mean-variance sense.

Usage

"portfolio.optim"(x, pm = mean(x), riskless = FALSE, shorts = FALSE, rf = 0.0, reslow = NULL, reshigh = NULL, covmat = cov(x), ...)

Arguments

x
a numeric matrix or multivariate time series consisting of a series of returns.
pm
the desired mean portfolio return.
riskless
a logical indicating whether there is a riskless lending and borrowing rate.
shorts
a logical indicating whether shortsales on the risky securities are allowed.
rf
the riskfree interest rate.
reslow
a vector specifying the (optional) lower bound on allowed portfolio weights.
reshigh
a vector specifying the (optional) upper bound on allowed portfolio weights.
covmat
the covariance matrix of asset returns.
...
further arguments to be passed from or to methods.

Value

A list containing the following components:

Details

The computed portfolio has the desired expected return pm and no other portfolio exists, which has the same mean return, but a smaller variance. Inequality restrictions of the form $w_l <= w="" <="w_h$" can="" be="" imposed="" using="" the="" reslow and reshigh vectors. An alternative covariance matrix estimate can be supplied via the covmat argument. To solve the quadratic program, solve.QP is used.

portfolio.optim is a generic function with methods for multivariate "ts" and default for matrix.

Missing values are not allowed.

References

E. J. Elton and M. J. Gruber (1991): Modern Portfolio Theory and Investment Analysis, 4th Edition, Wiley, NY, pp. 65-93.

C. Huang and R. H. Litzenberger (1988): Foundations for Financial Economics, Elsevier, NY, pp. 59-82.

See Also

solve.QP

Examples

Run this code
x <- rnorm(1000)
dim(x) <- c(500,2)
res <- portfolio.optim(x)
res$pw

require("zoo")			# For diff() method.
X <- diff(log(as.zoo(EuStockMarkets)))
res <- portfolio.optim(X)                 ## Long only
res$pw
res <- portfolio.optim(X, shorts=TRUE)    ## Long/Short
res$pw

Run the code above in your browser using DataCamp Workspace