# portfolio.optim

##### Portfolio Optimization

Computes an efficient portfolio from the given return series `x`

in the mean-variance sense.

- Keywords
- ts

##### Usage

```
# S3 method for default
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 \le w
\le 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:

the portfolio weights.

the returns of the overall portfolio.

the expected portfolio return.

the standard deviation of the portfolio returns.

##### 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

```
# NOT RUN {
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
# }
```

*Documentation reproduced from package tseries, version 0.10-46, License: GPL-2*