create.EfficientFrontier: create an efficient frontier

View source: R/extract.efficient.frontier.R

create.EfficientFrontierR Documentation

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,
  ...
)

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.

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.

Value

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

Author(s)

Ross Bennett, Xinran Zhao

See Also

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


braverock/PortfolioAnalytics documentation built on April 18, 2024, 4:09 a.m.