Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

portfolio.optim

Portfolio Optimization


Description

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

Usage

## Default S3 method:
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.

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.

Value

A list containing the following components:

pw

the portfolio weights.

px

the returns of the overall portfolio.

pm

the expected portfolio return.

ps

the standard deviation of the portfolio returns.

Author(s)

A. Trapletti

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

Examples

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

tseries

Time Series Analysis and Computational Finance

v0.10-48
GPL-2
Authors
Adrian Trapletti [aut], Kurt Hornik [aut, cre], Blake LeBaron [ctb] (BDS test code)
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.