Когда любой, или любая комбинация ограничений из 'Conditional'
BoundType
, MinNumAssets
, и MaxNumAssets
активны, задача портфеля сформулирована как задача смешанного целочисленного программирования, и используется решатель MINLP.
Создайте Portfolio
объект для трех активов.
Использование setBounds
с полунепрерывными ограничениями, чтобы задать xi = 0
или 0.02
<= xi
<= 0.5
для всех i = 1
... NumAssets
.
При работе с Portfolio
объект, setMinMaxNumAssets
функция позволяет вам установить пределы на количество вложенных активов (так называемая кардинальность) ограничения. Это устанавливает общее количество распределенных активов, удовлетворяющих ограничениям Bound, которые находятся между MinNumAssets
и MaxNumAssets
. Путем настройки MinNumAssets
= MaxNumAssets
= 2, только два из трех активов инвестируются в портфель.
Использование estimateFrontierByReturn
для оценки оптимальных портфелей с целевыми возвратами портфеля.
pwgt = 3×2
0 0.5000
0.6922 0
0.3078 0.5000
pbuy = 3×2
0 0.5000
0.6922 0
0.3078 0.5000
The estimateFrontierByReturn
функция использует решатель MINLP, чтобы решить эту задачу. Используйте setSolverMINLP
функция для конфигурирования SolverType
и опции.
ans =
'OuterApproximation'
ans = struct with fields:
MaxIterations: 1000
AbsoluteGapTolerance: 1.0000e-07
RelativeGapTolerance: 1.0000e-05
NonlinearScalingFactor: 1000
ObjectiveScalingFactor: 1000
Display: 'off'
CutGeneration: 'basic'
MaxIterationsInactiveCut: 30
ActiveCutTolerance: 1.0000e-07
IntMasterSolverOptions: [1x1 optim.options.Intlinprog]
NumIterationsEarlyIntegerConvergence: 30