Main Content

Working with Budget Constraints Using PortfolioCVaR Object

The budget constraint is an optional linear constraint that maintains upper and lower bounds on the sum of portfolio weights (see Budget Constraints). Budget constraints have properties LowerBudget for the lower budget constraint and UpperBudget for the upper budget constraint. If you set up a CVaR portfolio optimization problem that requires portfolios to be fully invested in your universe of assets, you can set LowerBudget to be equal to UpperBudget. These budget constraints can be set with default values equal to 1 using setDefaultConstraints (see Setting Default Constraints Using the PortfolioCVaR Function).

Setting Budget Constraints Using the PortfolioCVaR Function

The properties for the budget constraint can also be set using the PortfolioCVaR object. Suppose that you have an asset universe with many risky assets and a riskless asset and you want to ensure that your portfolio never holds more than 1% cash, that is, you want to ensure that you are 99–100% invested in risky assets. The budget constraint for this portfolio can be set with:

p = PortfolioCVaR('LowerBudget', 0.99, 'UpperBudget', 1);
disp(p.LowerBudget)
disp(p.UpperBudget)
 0.9900

1

Setting Budget Constraints Using the setBudget Function

You can also set the properties for a budget constraint using setBudget. Suppose that you have a fund that permits up to 10% leverage which means that your portfolio can be from 100% to 110% invested in risky assets. Given a PortfolioCVaR object p, use setBudget to set the budget constraints:

p = PortfolioCVaR;
p = setBudget(p, 1, 1.1);
disp(p.LowerBudget)
disp(p.UpperBudget)
 1

 1.1000
If you were to continue with this example, then set the RiskFreeRate property to the borrowing rate to finance possible leveraged positions. For details on the RiskFreeRate property, see Working with a Riskless Asset. To clear either bound for the budget constraint from your PortfolioCVaR object, use either the PortfolioCVaR object or setBudget with empty inputs for the properties to be cleared. For example, clear the upper-budget constraint from the PortfolioCVaR object p in the previous example with:
p = PortfolioCVaR(p, 'UpperBudget', []);

See Also

| | | | | | | | | |

Related Examples

More About

External Websites