Learn R Programming

PortfolioAnalytics (version 2.0.0)

create.EfficientFrontier: create an efficient frontier

Description

create an efficient frontier

Usage

create.EfficientFrontier(
  R,
  portfolio,
  type,
  optimize_method = "CVXR",
  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.

optimize_method

the optimize method to get the efficient frontier, default is CVXR

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, Xinran Zhao

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.

"mean-EQS":

This is a special case for an efficient frontier that can be created by CVXR solvers. The portfolio object should have two objectives: 1) mean and 2) EQS. If the portfolio object does not contain these objectives, they will be added using default parameters. The efficient frontier is created via meanrisk.efficient.frontier.

"mean-risk":

This is a special case for multiple efficient frontiers. The efficient frontier is created via meanrisk.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