'Conditional'
BoundType
, MinNumAssets
и ограничения MaxNumAssets
Используя объекты PortfolioCVaRКогда любой или любая комбинация 'Conditional'
, BoundType
, MinNumAssets
или ограничения MaxNumAssets
активны, проблема портфеля, формулируется путем добавления двоичных переменных NumAssets
, где 0
указывает не инвестированный, и 1
инвестируют. Например, чтобы объяснить
BoundType
'Conditional'
и MinNumAssets
и ограничения MaxNumAssets
, примите, что ваш портфель имеет вселенную 100 активов, которые вы хотите инвестировать:
BoundType
'Conditional'
(также известный как полунепрерывные ограничения), установленный setBounds
, часто используется в ситуациях, где вы не хотите инвестировать маленькие значения. Стандартным примером является задача оптимизации портфеля, где много маленьких выделений не привлекательны из-за операционных издержек. Вместо этого вы предпочитаете меньше инструментов в портфеле с большими выделениями. Эта ситуация может быть обработана using'Conditional'
ограничения BoundType
для объекта PortfolioCVaR
.
Например, весом, который вы инвестируете в каждый актив, является или 0
или между [0.01, 0.5]
. Обычно полунепрерывная переменная x является непрерывной переменной между границами [lb
, ub
], который также может принять значение 0
, где lb
> 0
, lb
≤ ub
. Применение этого к оптимизации портфеля требует, чтобы очень маленьких или больших положений избежали, который является значениями, которые обрушиваются (0
, lb
) или являются больше, чем ub
.
MinNumAssets
и MaxNumAssets
(также известный как ограничения кардинальности), установленный setMinMaxNumAssets
, ограничивают количество активов в объекте PortfolioCVaR
. Например, если у вас есть 100 активов в вашем портфеле, и вы хотите, чтобы количество активов, выделенных в портфеле, было от 40 до 60. Используя MinNumAssets
и MaxNumAssets
можно ограничить количество активов в оптимизированном портфеле, который позволяет вам ограничивать транзакцию и операционные затраты или создавать индексный портфель отслеживания.
'Conditional'
ограничения BoundType
Используя функцию setBounds
Используйте setBounds
с
BoundType
'conditional'
, чтобы установить кси = 0
или 0.02
<= кси <= 0.5
для всего i=1
... NumAssets
:
p = PortfolioCVaR; p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3)
p = Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [3×1 double] UpperBound: [3×1 double] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] BoundType: [3×1 categorical] MinNumAssets: [] MaxNumAssets: []
setMinMaxNumAssets
Можно также установить свойства MinNumAssets
и MaxNumAssets
задать предел на количестве активов, которые инвестируют с помощью setMinMaxNumAssets
. Например, установкой MinNumAssets
=MaxNumAssets=
2
, только два из этих трех активов инвестируют в портфель.
p = PortfolioCVaR; p = setMinMaxNumAssets(p, 2, 2)
Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 3 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] UpperBound: [] LowerBudget: [] UpperBudget: [] GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] BoundType: [] MinNumAssets: 2 MaxNumAssets: 2
PortfolioCVaR
| setBounds
| setBounds
| setBudget
| setDefaultConstraints
| setEquality
| setGroupRatio
| setGroups
| setInequality
| setMinMaxNumAssets
| setOneWayTurnover
| setTurnover