Когда любой, или любая комбинация ограничений из '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