'Conditional'
BoundType
, MinNumAssets
, и MaxNumAssets
Ограничения с использованием объектов PortfolioCVaRКогда любой, или любая комбинация 'Conditional'
BoundType
, MinNumAssets
, или MaxNumAssets
ограничения активны, задача портфеля сформулирована путем добавления NumAssets
двоичные переменные, где 0
указывает на отсутствие инвестиций, и 1
инвестируется. Для примера, чтобы объяснить 'Conditional'
BoundType
и MinNumAssets
и MaxNumAssets
ограничения, предположим, что ваш портфель имеет вселенную из 100 активов, которые вы хотите инвестировать:
'Conditional'
BoundType
(также известные как полунепрерывные ограничения), заданные как setBounds
, часто используется в ситуациях, когда вы не хотите инвестировать небольшие значения. Стандартным примером является задача оптимизации портфеля, в которой многие небольшие распределения не привлекательны из-за транзакционных издержек. Вместо этого вы предпочитаете меньше инструментов в портфеле с большими распределениями. С этой ситуацией можно справиться с помощью '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
с 'conditional'
BoundType
установить xi = 0
или 0.02
< = xi < = 0.5
для всех i = 1
... NumAssets
:
p = PortfolioCVaR; p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3)
p = PortfolioCVaR with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] ProbabilityLevel: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] 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: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [3×1 categorical]
ФункцияМожно также задать MinNumAssets
и MaxNumAssets
свойства для определения предела на количество вложенных активов с помощью setMinMaxNumAssets
. Для примера путем установки MinNumAssets
= MaxNumAssets
= 2
в портфель вкладываются только два из трех активов.
p = PortfolioCVaR; p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3) p = setMinMaxNumAssets(p, 2, 2)
p = PortfolioCVaR with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] ProbabilityLevel: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] 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: [] MinNumAssets: 2 MaxNumAssets: 2 BoundType: [3×1 categorical]
PortfolioCVaR
| setBounds
| setBounds
| setBudget
| setDefaultConstraints
| setEquality
| setGroupRatio
| setGroups
| setInequality
| setMinMaxNumAssets
| setOneWayTurnover
| setTurnover