Add group ratio constraints for portfolio weights to existing group ratio constraints

adds group ratio constraints for portfolio weights to existing group ratio
constraints for `obj`

= addGroupRatio(`obj`

,`GroupA`

,`GroupB`

,`LowerRatio`

)`Portfolio`

, `PortfolioCVaR`

,
or `PortfolioMAD`

objects. For details on the respective
workflows when using these different objects, see Portfolio Object Workflow, PortfolioCVaR Object Workflow,
and PortfolioMAD Object Workflow.

Given base and comparison group matrices `GroupA`

and
`GroupB`

and, either `LowerRatio`

, or
`UpperRatio`

bounds, group ratio constraints require any
portfolio in `Port`

to satisfy the following:

(GroupB * Port) .* LowerRatio <= GroupA * Port <= (GroupB * Port) .* UpperRatio

This collection of constraints usually requires that portfolio weights
be nonnegative and that the products `GroupA * Port`

and `GroupB * Port`

are always nonnegative. Although
negative portfolio weights and non-Boolean group ratio matrices are
supported, use with caution.

adds group ratio constraints for portfolio weights to existing group ratio
constraints with an additional option for
`obj`

= addGroupRatio(`obj`

,`GroupA`

,`GroupB`

,`LowerRatio`

,`UpperRatio`

)`UpperRatio`

.

Given base and comparison group matrices `GroupA`

and
`GroupB`

and, either `LowerRatio`

, or
`UpperRatio`

bounds, group ratio constraints require any
portfolio in `Port`

to satisfy the following:

(GroupB * Port) .* LowerRatio <= GroupA * Port <= (GroupB * Port) .* UpperRatio

This collection of constraints usually requires that portfolio weights
be nonnegative and that the products `GroupA * Port`

and `GroupB * Port`

are always nonnegative. Although
negative portfolio weights and non-Boolean group ratio matrices are
supported, use with caution.

You can also use dot notation to add group ratio constraints for the portfolio weights to existing group ratio constraints.

obj = obj.addGroupRatio(GroupA, GroupB, LowerRatio, UpperRatio)

To remove group ratio constraints from any of the portfolio objects using dot notation, enter empty arrays for the corresponding arrays.

- Working with Group Ratio Constraints Using Portfolio Object
- Working with Group Ratio Constraints Using PortfolioCVaR Object
- Working with Group Ratio Constraints Using PortfolioMAD Object
- Portfolio Optimization Examples
- Portfolio Set for Optimization Using Portfolio Object
- Portfolio Set for Optimization Using PortfolioCVaR Object
- Portfolio Set for Optimization Using PortfolioMAD Object