Documentation Center

  • 評価版
  • 製品アップデート

estimateFrontierByRisk

Class: PortfolioCVaR

Estimate optimal portfolios with targeted portfolio risks for PortfolioCVaR object

Syntax

[pwgt,pbuy,psell] = estimateFrontierByRisk(obj,TargetRisk)

Description

[pwgt,pbuy,psell] = estimateFrontierByRisk(obj,TargetRisk) estimates optimal portfolios with targeted portfolio risks.

Tips

Use dot notation to estimate optimal portfolios with targeted portfolio risks.

[pwgt, pbuy, psell] = obj.estimateFrontierByRisk(TargetRisk);

Input Arguments

obj

CVaR portfolio object [PortfolioCVaR].

TargetRisk

Target values for CVaR portfolio object risk [NumPorts vector].

    Note:   If any TargetRisk values are outside the range of risks for efficient portfolios, the target risk is replaced with the minimum or maximum efficient portfolio risk, depending on whether the target risk is below or above the range of efficient portfolio risks.

Output Arguments

pwgt

Optimal portfolios on the efficient frontier with specified target risks from TargetRisk [NumAssets-by-NumPorts matrix].

pbuy

Purchases relative to an initial portfolio for optimal portfolios on the efficient frontier [NumAssets-by-NumPorts matrix].

psell

Sales relative to an initial portfolio for optimal portfolios on the efficient frontier [NumAssets-by-NumPorts matrix].

    Note:   If no initial portfolio is specified in obj.InitPort, it is assumed to be 0 such that so pbuy = max(0, pwgt) and psell = max(0, -pwgt).

Attributes

Accesspublic
Staticfalse
Hiddenfalse

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

Examples

expand all

Obtain Portfolios with Targeted Portfolio Risks

To obtain efficient portfolios that have targeted portfolio risks, the estimateFrontierByRisk method accepts one or more target portfolio risks and obtains efficient portfolios with the specified risks. Assume you have a universe of four assets where you want to obtain efficient portfolios with target portfolio risks of 12%, 20%, and 30%.

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 ];

rng(11);

p = PortfolioCVaR;
p = p.simulateNormalScenariosByMoments(m, C, 2000);
p = p.setDefaultConstraints;
p = p.setProbabilityLevel(0.95);

pwgt = p.estimateFrontierByRisk([0.12, 0.20, 0.30]);

display(pwgt);
pwgt =

    0.5363    0.1388         0
    0.2655    0.4990    0.3830
    0.0568    0.1239    0.1461
    0.1413    0.2383    0.4709

The function rng( $seed$ ) resets the random number generator to produce the documented results. It is not necessary to reset the random number generator to simulate scenarios.

See Also

| | |

More About

Was this topic helpful?