plotFrontier

Class: PortfolioCVaR

Plot single efficient frontier for PortfolioCVaR object

Syntax

[prsk,pret] = plotFrontier(obj)
[prsk,pret] = plotFrontier(obj,varargin)

Description

[prsk,pret] = plotFrontier(obj) plots a single efficient frontier for a PortfolioCVaR object.

[prsk,pret] = plotFrontier(obj,varargin) to plot a single efficient frontier with multiple types of input methods. There are four ways to use plotFrontier:

  • Method 1 — Given a CVaR portfolio object obj, estimate the efficient frontier with default number of 10 portfolios on the frontier.

    [prsk, pret] = plotFrontier(obj)
  • Method 2 — Given a CVaR portfolio object obj, estimate the efficient frontier with a specified number of portfolios NumPorts on the frontier.

    [prsk, pret] = plotFrontier(obj, NumPorts)
  • Method 3 — Given a CVaR portfolio object obj with estimated efficient portfolios in PortWeights, plot the efficient frontier with those portfolios. This method assumes that you provide valid efficient portfolios as input.

    [prsk, pret] = plotFrontier(obj, PortWeights)
  • Method 4 — Given a CVaR portfolio object obj with estimated portfolio risks (PortRisk) and returns (PortReturn), plot the efficient frontier. This method assumes that you provide valid efficient portfolio risks and returns as inputs.

    [prsk, pret] = plotFrontier(obj, PortRisk, PortReturn);

    Note:   plotFrontier handles multiple input formats as described above. Given an asset universe with NumAssets assets and an efficient frontier with NumPorts portfolios, remember that portfolio weights are NumAsset-by-NumPorts matrices and that portfolio risks and returns are NumPorts column vectors.

Tips

You can also use dot notation to plot a single efficient frontier for a PortfolioCVaR object.

[prsk, pret] = obj.plotFrontier;

Input Arguments

obj

CVaR portfolio object [PortfolioCVaR].

varargin

(Optional) varargin can be NumPorts, PortRisk, PortReturn, or PortWeights depending on which of the four input methods you use:

  • Method 1 — Given a CVaR portfolio object obj, estimate the efficient frontier using the default number of 10 portfolios on the frontier:

    [prsk, pret] = plotFrontier(obj)

  • Method 2 — Given a CVaR portfolio object obj, estimate the efficient frontier with a specified number of portfolios NumPorts on the frontier:

    [prsk, pret] = plotFrontier(obj, NumPorts)
  • Method 3 — Given a CVaR portfolio object obj with estimated efficient portfolios in PortWeights, plot the efficient frontier with those portfolios:

    [prsk, pret] = plotFrontier(obj, PortWeights)

    This method assumes that you provide valid efficient portfolios as input.

  • Method 4 — Given a CVaR portfolio object obj with estimated portfolio risks (PortRisk) and returns (PortReturn), plot the efficient frontier:

    [prsk, pret] = plotFrontier(obj, PortRisk, PortReturn)

    This method assumes that you provide valid efficient portfolio risks and returns as inputs.

Output Arguments

prsk

Estimated efficient portfolio risks (conditional value-at-risk) [vector].

pret

Estimated efficient portfolio returns [vector].

    Note:  

    • If the CVaR portfolio object has a name in the Name property, the name is displayed as the title of the plot. Otherwise, the plot is just labeled "Efficient Frontier."

    • If the CVaR portfolio object has an initial portfolio in the InitPort property, the initial portfolio is plotted and labeled.

    • If portfolio risks and returns are inputs, ensure that risks come first in the calling sequence. In addition, if portfolio risks and returns are not sorted in ascending order, this method performs the sort. On output, the sorted moments are returned.

Attributes

Accesspublic
Staticfalse
Hiddenfalse

To learn about attributes of methods, see Method Attributes in the MATLAB® Object-Oriented Programming documentation.

Examples

expand all

Plot the Efficient Frontier for the PortfolioCVaR Object

Given a PortfolioCVaR p, plot the efficient frontier.

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
    0.00408 0.0289 0.0204 0.0119;
    0.00192 0.0204 0.0576 0.0336;
    0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);

plotFrontier(p);

Was this topic helpful?