Когда решение оптимизации портфеля для объекта PortfolioMAD
, в то время как все изменения fmincon
от Optimization Toolbox™ поддерживаются, с помощью 'sqp'
и алгоритмов 'active-set'
для fmincon
, рекомендуется, и использование алгоритма 'interior-point'
не рекомендуется для оптимизации портфеля MAD.
В отличие от Optimization Toolbox, который использует алгоритм 'trust-region-reflective'
в качестве алгоритма по умолчанию для fmincon
, оптимизация портфеля для объекта PortfolioMAD
использует алгоритм 'active-set'
. Для получения дополнительной информации о fmincon
и ограниченных нелинейных алгоритмах оптимизации и опциях, см. Ограниченные Нелинейные Алгоритмы Оптимизации (Optimization Toolbox).
Чтобы изменить опции fmincon
для оптимизации портфеля MAD, используйте setSolver
, чтобы установить скрытые свойства solverType
и solverOptions
задать и управлять решателем. Поскольку эти свойства решателя скрыты, вы не можете установить их использующий объект PortfolioMAD
. Решатель по умолчанию является fmincon
с алгоритмом 'sqb'
и не отобразил вывод, таким образом, вы не должны использовать setSolver
, чтобы задать это.
Если вы хотите задать дополнительные опции, сопоставленные с решателем fmincon
, setSolver
принимает эти опции как аргументы пары "имя-значение". Например, если вы хотите использовать fmincon
с алгоритмом sqp
и с отображенным выводом, используйте setSolver
с:
p = PortfolioMAD; p = setSolver(p, 'fmincon', 'Algorithm', 'sqp', 'Display', 'final'); display(p.solverOptions.Algorithm); display(p.solverOptions.Display);
sqp final
Также функция setSolver
принимает объект optimoptions
как второй аргумент. Например, можно изменить алгоритм на trust-region-reflective
без отображенного вывода можно следующим образом:
p = PortfolioMAD; options = optimoptions('fmincon', 'Algorithm', 'trust-region-reflective', 'Display', 'off'); p = setSolver(p, 'fmincon', options); display(p.solverOptions.Algorithm); display(p.solverOptions.Display);
trust-region-reflective off
Смешанное целочисленное нелинейное программирование (MINLP) решатель, сконфигурированное использование setSolverMINLP
, позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для объекта PortfolioMAD
. Когда любой или любая комбинация 'Conditional'
, BoundType
, MinNumAssets
или ограничения MaxNumAssets
активны, проблема портфеля, формулируется путем добавления двоичных переменных NumAssets
, где 0
указывает не инвестированный, и 1
инвестируют. Для получения дополнительной информации об использовании 'Conditional'
BoundType
смотрите setBounds
. Для получения дополнительной информации об определении MinNumAssets
и MaxNumAssets
, смотрите setMinMaxNumAssets
.
При использовании функций estimate
с объектом PortfolioMAD
, где 'Conditional'
BoundType
, MinNumAssets
или ограничения MaxNumAssets
активны, смешанное целочисленное нелинейное программирование (MINLP), автоматически используется решатель.
Следующая таблица предоставляет инструкции для использования setSolver
и setSolverMINLP
.
Проблема портфеля | Функция PortfolioMAD | Тип задачи оптимизации | Основной решатель | Решатель помощника |
---|---|---|---|---|
Портфель, не отслеживая ошибочные ограничения | estimateFrontierByRisk | Оптимизация портфеля для уровня определенного риска вводит нелинейное ограничение. Поэтому эта проблема имеет линейную цель с линейными и нелинейными ограничениями. | 'fmincon' с помощью setSolver |
|
Портфель, не отслеживая ошибочные ограничения | estimateFrontierByReturn | Нелинейная цель с линейными ограничениями | 'fmincon' с помощью setSolver |
|
Портфель, не отслеживая ошибочные ограничения | estimateFrontierLimits | Нелинейная или линейная цель с линейными ограничениями | Для Для | Не применяется |
PortfolioMAD с активным 'Conditional'
BoundType , MinNumAssets и MaxNumAssets | estimateFrontierByRisk | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver . |
PortfolioMAD с активным 'Conditional'
BoundType , MinNumAssets и MaxNumAssets | estimateFrontierByReturn | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
PortfolioMAD с активным 'Conditional'
BoundType , MinNumAssets и MaxNumAssets | estimateFrontierLimits | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
PortfolioMAD
| estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| setSolver
| setSolverMINLP