При решении оптимизации портфеля для объекта PortfolioCVaR
поддерживаются все изменения fmincon
от Optimization Toolbox™. Также вы можете use'cuttingplane'
, решатель, который реализует метод плоскости сокращения Келли (см. Келли [45] при Оптимизации Портфеля).
В отличие от Optimization Toolbox, который использует алгоритм interior-point
в качестве алгоритма по умолчанию для fmincon
, оптимизация портфеля для объекта PortfolioCVaR
использует алгоритм sqp
. Для получения дополнительной информации о fmincon
и ограниченных нелинейных алгоритмах оптимизации и опциях, см. Ограниченные Нелинейные Алгоритмы Оптимизации (Optimization Toolbox).
Чтобы изменить опции fmincon
для оптимизации портфеля CVaR, используйте setSolver
, чтобы установить скрытые свойства solverType
и solverOptions
задать и управлять решателем. (Обратите внимание на то, что вы видите опции по умолчанию путем создания объекта dummyPortfolioCVaR
, использования p = PortfolioCVaR
и затем вводите p.solverOptions
.), Поскольку эти свойства решателя скрыты, вы не можете установить их использующий объект PortfolioCVaR
. Решатель по умолчанию является fmincon
с целевой функцией алгоритма sqp
, градиенты, включенные, и не отобразил вывод, таким образом, вы не должны использовать setSolver
, чтобы задать это.
Если вы хотите задать дополнительные опции, сопоставленные с решателем fmincon
, setSolver
принимает эти опции как аргументы пары "имя-значение". Например, если вы хотите использовать fmincon
с алгоритмом trust-region-reflective
и без отображенного вывода, используйте setSolver
с:
p = PortfolioCVaR; p = setSolver(p, 'fmincon', 'Algorithm', 'trust-region-reflective', 'Display', 'on'); display(p.solverOptions.Algorithm); display(p.solverOptions.Display);
trust-region-reflective on
Также setSolver
принимает объект optimoptions
как второй аргумент. Например, можно изменить алгоритм на trust-region-reflective
без отображенного вывода можно следующим образом:
p = PortfolioCVaR; 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
Решатель 'cuttingplane'
имеет опции, чтобы управлять итерациями номера и останавливающимися допусками. Кроме того, этот решатель использует linprog
в качестве основного решателя, и все опции linprog
поддерживаются с помощью структур optimoptions
. Все эти опции установлены с помощью setSolver
.
Например, можно использовать setSolver
, чтобы увеличить число итераций для 'cuttingplane'
:
p = PortfolioCVaR; p = setSolver(p, 'cuttingplane', 'MaxIter', 2000); display(p.solverType); display(p.solverOptions);
cuttingplane MaxIter: 2000 AbsTol: 1.0000e-06 RelTol: 1.0000e-05 MasterSolverOptions: [1x1 optim.options.Linprog]
Чтобы изменить основной алгоритм решателя, to'interior-point'
, без отображения, используют setSolver
, чтобы изменить 'MasterSolverOptions'
:
p = PortfolioCVaR; options = optimoptions('linprog','Algorithm','interior-point','Display','off'); p = setSolver(p,'cuttingplane','MasterSolverOptions',options); display(p.solverType) display(p.solverOptions) display(p.solverOptions.MasterSolverOptions.Algorithm) display(p.solverOptions.MasterSolverOptions.Display)
cuttingplane MaxIter: 1000 AbsTol: 1.0000e-06 RelTol: 1.0000e-05 MasterSolverOptions: [1x1 optim.options.Linprog] interior-point off
Смешанное целочисленное нелинейное программирование (MINLP) решатель, сконфигурированное использование setSolverMINLP
, позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для объекта PortfolioCVaR
. Когда любой или любая комбинация 'Conditional'
, BoundType
, MinNumAssets
или ограничения MaxNumAssets
активны, проблема портфеля, формулируется путем добавления двоичных переменных NumAssets
, где 0
указывает не инвестированный, и 1
инвестируют. Для получения дополнительной информации об использовании 'Conditional'
BoundType
смотрите setBounds
. Для получения дополнительной информации об определении MinNumAssets
и MaxNumAssets
, смотрите setMinMaxNumAssets
.
При использовании функций estimate
с объектом PortfolioCVaR
, где 'Conditional'
BoundType
, MinNumAssets
или ограничения MaxNumAssets
активны, смешанное целочисленное нелинейное программирование (MINLP), автоматически используется решатель.
Следующая таблица предоставляет инструкции для использования setSolver
и setSolverMINLP
.
Функция PortfolioCVaR | Тип задачи оптимизации | Основной решатель | Решатель помощника |
---|---|---|---|
estimateFrontierByRisk | Оптимизация портфеля для уровня определенного риска вводит нелинейное ограничение. Поэтому эта проблема имеет линейную цель с линейными и нелинейными ограничениями. | 'fmincon' или 'cuttingplane' с помощью setSolver |
|
estimateFrontierByReturn | Нелинейная цель с линейными ограничениями | 'fmincon' или ' 'cuttingplane' с помощью setSolver |
|
estimateFrontierLimits | Нелинейная или линейная цель с линейными ограничениями | Для Для | Не применяется |
estimateFrontierByRisk | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver . |
estimateFrontierByReturn | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
estimateFrontierLimits | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
estimateMaxSharpeRatio | Проблема формулируется путем представления двоичных переменных NumAssets , чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется, когда функции estimate уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
PortfolioCVaR
| estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| setSolver
| setSolverMINLP