Learn R Programming

PortfolioAnalytics (version 1.1.0)

create.EfficientFrontier: create an efficient frontier

Description

create an efficient frontier

Usage

create.EfficientFrontier(R, portfolio, type, n.portfolios = 25,
  risk_aversion = NULL, match.col = "ES", search_size = 2000, ...)

Value

an object of class 'efficient.frontier' with the objective measures and weights of portfolios along the efficient frontier.

Arguments

R

xts object of asset returns

portfolio

object of class 'portfolio' specifying the constraints and objectives, see portfolio.spec.

type

type of efficient frontier, see Details.

n.portfolios

number of portfolios to calculate along the efficient frontier

risk_aversion

vector of risk_aversion values to construct the efficient frontier. n.portfolios is ignored if risk_aversion is specified and the number of points along the efficient frontier will be equal to the length of risk_aversion.

match.col

column to match when extracting the efficient frontier from an objected created by optimize.portfolio.

search_size

passed to optimize.portfolio for type="DEoptim" or type="random".

...

passthrough parameters to optimize.portfolio.

Author

Ross Bennett

Details

Currently there are 4 'types' supported to create an efficient frontier:

  • "mean-var", "mean-sd", or "mean-StdDev": This is a special case for an efficient frontier that can be created by a QP solver. The portfolio object should have two objectives: 1) mean and 2) var. If the portfolio object does not contain these objectives, they will be added using default parameters. The efficient frontier will be created via meanvar.efficient.frontier.

  • "mean-ETL", "mean-ES", "mean-CVaR", "mean-etl": This is a special case for an efficient frontier that can be created by an LP solver. The portfolio object should have two objectives: 1) mean and 2) ETL/ES/CVaR. If the portfolio object does not contain these objectives, they will be added using default parameters. The efficient frontier is created via meanetl.efficient.frontier.

  • "DEoptim": This can handle more complex constraints and objectives than the simple mean-var and mean-ETL cases. For this type, we actually call optimize.portfolio with optimize_method="DEoptim" and then extract the efficient frontier with extract.efficient.frontier.

  • "random": This can handle more complex constraints and objectives than the simple mean-var and mean-ETL cases. For this type, we actually call optimize.portfolio with optimize_method="random" and then extract the efficient frontier with extract.efficient.frontier.

See Also

optimize.portfolio, portfolio.spec, meanvar.efficient.frontier, meanetl.efficient.frontier