При решении оптимизации портфеля для PortfolioCVaR
объект, вы решаете нелинейные задачи оптимизации или с нелинейными объективными или с нелинейными ограничениями. Можно использовать 'TrustRegionCP'
(значение по умолчанию), 'ExtendedCP'
, или 'cuttingplane'
решатели, которые реализуют метод плоскости сокращения Келли (см. Келли [45] при Оптимизации Портфеля). В качестве альтернативы можно использовать fmincon
и все изменения fmincon
от Optimization Toolbox™ поддерживаются. При использовании fmincon
как solverType
, 'sqp'
алгоритм по умолчанию для fmincon
.
'TrustRegionCP'
, 'ExtendedCP'
, и 'cuttingplane'
SolverTypes'TrustRegionCP'
, 'ExtendedCP'
, и 'cuttingplane'
решатели имеют опции, чтобы управлять итерациями номера и останавливающимися допусками. Кроме того, эти решатели использование linprog
как основной решатель и весь linprog
опции поддерживаются с помощью optimoptions
структуры. Все эти опции установлены с помощью setSolver
.
Например, можно использовать setSolver
увеличивать число итераций для 'TrustRegionCP'
:
p = PortfolioCVaR; p = setSolver(p, 'TrustRegionCP', 'MaxIterations', 2000); display(p.solverType) display(p.solverOptions)
trustregioncp MaxIterations: 2000 AbsoluteGapTolerance: 1.0000e-07 RelativeGapTolerance: 1.0000e-05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000 MasterSolverOptions: [1×1 optim.options.Linprog] Display: 'off' CutGeneration: 'basic' MaxIterationsInactiveCut: 30 ActiveCutTolerance: 1.0000e-07 ShrinkRatio: 0.7500 TrustRegionStartIteration: 2 DeltaLimit: 1
Изменить основной алгоритм решателя для 'interior-point'
, без отображения использовать setSolver
изменить 'MasterSolverOptions'
:
p = PortfolioCVaR; options = optimoptions('linprog','Algorithm','interior-point','Display','off'); p = setSolver(p,'TrustRegionCP','MasterSolverOptions',options); display(p.solverType) display(p.solverOptions) display(p.solverOptions.MasterSolverOptions.Algorithm) display(p.solverOptions.MasterSolverOptions.Display)
trustregioncp MaxIterations: 1000 AbsoluteGapTolerance: 1.0000e-07 RelativeGapTolerance: 1.0000e-05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000 MasterSolverOptions: [1×1 optim.options.Linprog] Display: 'off' CutGeneration: 'basic' MaxIterationsInactiveCut: 30 ActiveCutTolerance: 1.0000e-07 ShrinkRatio: 0.7500 TrustRegionStartIteration: 2 DeltaLimit: 1 interior-point off
'fmincon'
SolverTypeВ отличие от Optimization Toolbox, который использует interior-point
алгоритм как алгоритм по умолчанию для fmincon
, оптимизация портфеля для PortfolioCVaR
возразите использует sqp
алгоритм. Для получения дополнительной информации о fmincon
и ограниченные нелинейные алгоритмы оптимизации и опции, см. Ограниченные Нелинейные Алгоритмы Оптимизации.
Изменить fmincon
опции для оптимизации портфеля CVaR, использовать setSolver
установить скрытые свойства solverType
и solverOptions
задавать и управлять решателем. (Обратите внимание на то, что вы видите опции по умолчанию путем создания фиктивного PortfolioCVaR
объект, с помощью p = PortfolioCVaR
и затем введите p.solverOptions
.), Поскольку эти свойства решателя скрыты, вы не можете установить их использующий PortfolioCVaR
объект. Значение по умолчанию для fmincon
решатель должен использовать sqp
целевая функция алгоритма, градиенты, включенные, и не отображенный вывод, таким образом, вы не должны использовать setSolver
задавать sqp
алгоритм.
p = PortfolioCVaR;
p = setSolver(p, 'fmincon');
display(p.solverOptions)
fmincon options: Options used by current Algorithm ('sqp'): (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective') Set properties: Algorithm: 'sqp' ConstraintTolerance: 1.0000e-08 Display: 'off' OptimalityTolerance: 1.0000e-08 SpecifyConstraintGradient: 1 SpecifyObjectiveGradient: 1 StepTolerance: 1.0000e-08 Default properties: CheckGradients: 0 FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' MaxFunctionEvaluations: '100*numberOfVariables' MaxIterations: 400 ObjectiveLimit: -1.0000e+20 OutputFcn: [] PlotFcn: [] ScaleProblem: 0 TypicalX: 'ones(numberOfVariables,1)' UseParallel: 0
Если вы хотите указать, что дополнительные опции сопоставили с fmincon
решатель, setSolver
принимает эти опции как аргументы пары "имя-значение". Например, если вы хотите использовать fmincon
с 'active-set'
алгоритм и без отображенного вывода, использовать setSolver
с:
p = PortfolioCVaR; p = setSolver(p, 'fmincon','Algorithm','active-set','Display','off'); display(p.solverOptions.Algorithm) display(p.solverOptions.Display)
active-set off
В качестве варианта, setSolver
принимает optimoptions
объект от Optimization Toolbox в качестве второго аргумента. Например, можно изменить алгоритм в '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
Смешанное целочисленное нелинейное программирование (MINLP) решатель, сконфигурированное использование setSolverMINLP
, позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для PortfolioCVaR
объект. Решатель MINLP используется когда любой или любая комбинация 'Conditional'
BoundType
, MinNumAssets
, или MaxNumAssets
ограничения активны. В этом случае проблема портфеля формулируется путем добавления NumAssets
бинарные переменные, где 0
указывает не инвестированный, и 1
инвестирован. Для получения дополнительной информации об использовании 'Conditional'
BoundType
, смотрите setBounds
. Для получения дополнительной информации об определении MinNumAssets
и MaxNumAssets
, смотрите setMinMaxNumAssets
.
При использовании estimate
функции с PortfolioCVaR
возразите где 'Conditional'
BoundType
, MinNumAssets
, или MaxNumAssets
ограничения активны, смешанное целочисленное нелинейное программирование (MINLP), решатель автоматически используется.
Следующая таблица предоставляет инструкции для использования setSolver
и setSolverMINLP
.
Проблема PortfolioCVaR | Функция PortfolioCVaR | Тип задачи оптимизации | Основной решатель | Решатель помощника |
---|---|---|---|---|
PortfolioCVaR без активного 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierByRisk | Оптимизация портфеля для уровня определенного риска вводит нелинейное ограничение. Поэтому эта проблема имеет линейную цель с линейными и нелинейными ограничениями. | 'TrustRegionCP' , 'ExtendedCP' , 'fmincon' , или 'cuttingplane' использование setSolver |
|
PortfolioCVaR без активного 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierByReturn | Нелинейная цель с линейными ограничениями | 'TrustRegionCP' , 'ExtendedCP' , 'fmincon' , или 'cuttingplane' использование setSolver |
|
PortfolioCVaR без активного 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierLimits | Нелинейная или линейная цель с линейными ограничениями | Для Для | Не применяется |
PortfolioCVaR с активным 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierByRisk | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется когда estimate функции уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver . |
PortfolioCVaR с активным 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierByReturn | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется когда estimate функции уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
PortfolioCVaR с активным 'Conditional'
BoundType , MinNumAssets , и MaxNumAssets | estimateFrontierLimits | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP . | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'fmincon' используется когда estimate функции уменьшают проблему в NLP. Этот решатель сконфигурирован через setSolver |
estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| PortfolioCVaR
| setSolver
| setSolverMINLP