Learn R Programming

PortfolioAnalytics (version 1.0.3636)

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

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.

Value

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

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