Решателем по умолчанию для оптимизации портфеля среднего отклонения является lcprog, который реализует алгоритм линейного программирования взаимозависимости (LCP). Несмотря на то, что lcprog работает на большинство проблем, можно настроить аргументы, чтобы управлять алгоритмом. В качестве альтернативы инструменты оптимизации портфеля среднего отклонения позволяют вам использовать любое из изменений quadprog из программного обеспечения Optimization Toolbox™. Как Optimization Toolbox, который использует interior-point-convex алгоритм как алгоритм по умолчанию для quadprog, инструменты оптимизации портфеля также используют interior-point-convex алгоритм как значение по умолчанию. Для получения дополнительной информации о quadprog и алгоритмы квадратичного программирования и опции, см. Алгоритмы Квадратичного программирования.
'lcprog' и 'quadprog'Изменить любой lcprog или задавать quadprog как ваш решатель, используйте setSolver функционируйте, чтобы установить скрытые свойства solverType и solverOptions это задает и управляет решателем. Поскольку свойства решателя скрыты, вы не можете установить их с помощью Portfolio объект. Решателем по умолчанию является lcprog таким образом, вы не должны использовать setSolver задавать этот решатель. Использовать quadprog, можно установить interior-point-convex по умолчанию алгоритм quadprog использование:
p = Portfolio;
p = setSolver(p, 'quadprog');
display(p.solverType)
display(p.solverOptions)quadprog options:
Options used by current Algorithm ('interior-point-convex'):
(Other available algorithms: 'active-set', 'trust-region-reflective')
Set properties:
Algorithm: 'interior-point-convex'
Display: 'off'
OptimalityTolerance: 1.0000e-12
Default properties:
ConstraintTolerance: 1.0000e-08
LinearSolver: 'auto'
MaxIterations: 200
StepTolerance: 1.0000e-12lcprog с:p = setSolver(p, 'lcprog');
display(p.solverType);
display(p.solverOptions)lcprog
MaxIter: []
TieBreak: []
TolPiv: 5.0000e-08setSolver настраивает опции по умолчанию, сопоставленные с любым решателем. Если вы хотите указать, что дополнительные опции сопоставили с данным решателем, setSolver принимает эти опции с аргументами пары "имя-значение" аргумента в вызове функции. Например, если вы намереваетесь использовать quadprog и хочу использовать 'trust-region-reflective' алгоритм, вызвать setSolver с:p = Portfolio; p = setSolver(p, 'quadprog', 'Algorithm', 'trust-region-reflective'); display(p.solverOptions)
quadprog options:
Options used by current Algorithm ('trust-region-reflective'):
(Other available algorithms: 'active-set', 'interior-point-convex')
Set properties:
Algorithm: 'trust-region-reflective'
Default properties:
Display: 'final'
FunctionTolerance: 'default dependent on problem'
HessianMultiplyFcn: []
MaxIterations: 'default dependent on problem'
OptimalityTolerance: 'default dependent on problem'
StepTolerance: 2.2204e-14
SubproblemAlgorithm: 'cg'
TypicalX: 'ones(numberOfVariables,1)'Кроме того, если вы хотите задать какую-либо из опций для quadprog это обычно устанавливается через optimoptions от Optimization Toolbox, setSolver принимает optimoptions возразите в качестве второго аргумента. Например, можно начать с опций по умолчанию для quadprog установите setSolver и затем измените алгоритм в 'trust-region-reflective' без отображенного вывода:
p = Portfolio; options = optimoptions('quadprog', 'Algorithm', 'trust-region-reflective', 'Display', 'off'); p = setSolver(p, 'quadprog', options); display(p.solverOptions.Algorithm) display(p.solverOptions.Display)
trust-region-reflective off
Смешанное целочисленное нелинейное программирование (MINLP) решатель, сконфигурированное использование setSolverMINLP, позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для Portfolio объект. Решатель MINLP используется когда любой или любая комбинация 'Conditional'
BoundType, MinNumAssets, или MaxNumAssets ограничения активны. В этом случае проблема портфеля формулируется путем добавления NumAssets бинарные переменные, где 0 указывает не инвестированный, и 1 инвестирован. Для получения дополнительной информации об использовании 'Conditional'
BoundType, смотрите setBounds. Для получения дополнительной информации об определении MinNumAssets и MaxNumAssets, смотрите setMinMaxNumAssets.
При использовании estimate функции с Portfolio возразите где 'Conditional'
BoundType, MinNumAssets, или MaxNumAssets ограничения активны, смешанное целочисленное нелинейное программирование (MINLP), решатель автоматически используется.
Следующая таблица предоставляет инструкции для использования setSolver и setSolverMINLP.
| Проблема портфеля | Функция портфеля | Тип задачи оптимизации | Основной решатель | Решатель помощника |
|---|---|---|---|---|
| Портфель, не отслеживая ошибочные ограничения | estimateFrontierByRisk | Оптимизация портфеля для уровня определенного риска вводит нелинейное ограничение. Поэтому эта проблема имеет линейную цель с линейными и нелинейными ограничениями. | 'fmincon' использование setSolver | Для Для |
| Портфель, не отслеживая ошибочные ограничения | estimateFrontierByReturn | Квадратичная цель с линейными ограничениями | 'quadprog' или 'lcprog' использование setSolver | Для Для |
| Портфель, не отслеживая ошибочные ограничения | estimateFrontierLimits | Квадратичная или линейная цель с линейными ограничениями | Для Для | Не применяется |
| Портфель, не отслеживая ошибочные ограничения | estimateMaxSharpeRatio | Квадратичная цель с линейными ограничениями | 'quadprog' использование setSolver | Поскольку |
| Портфель с отслеживанием ошибочных ограничений | estimateFrontierByRisk | Линейная цель с линейными и нелинейными ограничениями | 'fmincon' использование setSolver | Не применяется |
| Портфель с отслеживанием ошибочных ограничений | estimateFrontierByReturn | Линейная цель с линейными и нелинейными ограничениями | 'fmincon' использование setSolver | Не применяется |
| Портфель с отслеживанием ошибочных ограничений | estimateFrontierLimits | Квадратичный (проблема риска min) или линейный (макс. возвращают проблему), цель с линейными и нелинейными ограничениями | 'fmincon' использование setSolver | Не применяется |
| Портфель с отслеживанием ошибочных ограничений | estimateMaxSharpeRatio | Квадратичная цель с линейными и нелинейными ограничениями | 'fmincon' использование setSolver | Не применяется |
Портфель с активным 'Conditional'
BoundType, MinNumAssets, и MaxNumAssets | estimateFrontierByRisk | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP. | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'quadprog' или 'fmincon' используются когда estimate функции уменьшают проблему в NLP. Эти два решателя могут быть сконфигурированы через setSolver. |
Портфель с активным 'Conditional'
BoundType, MinNumAssets, и MaxNumAssets | estimateFrontierByReturn | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP. | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'quadprog' или 'fmincon' используются когда estimate функции уменьшают проблему в NLP. Эти два решателя могут быть сконфигурированы через setSolver |
Портфель с активным 'Conditional'
BoundType, MinNumAssets, и MaxNumAssets | estimateFrontierLimits | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP. | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'quadprog' или 'fmincon' используются когда estimate функции уменьшают проблему в NLP. Эти два решателя могут быть сконфигурированы через setSolver |
Портфель с активным 'Conditional'
BoundType, MinNumAssets, и MaxNumAssets | estimateMaxSharpeRatio | Проблема формулируется путем представления NumAssets бинарные переменные, чтобы указать, инвестируют ли соответствующий актив или нет. Поэтому это требует смешанного целочисленного решателя нелинейного программирования. Три типа решателей MINLP предлагаются, видят setSolverMINLP. | Смешанный целочисленный решатель нелинейного программирования (MINLP) использование setSolverMINLP | 'quadprog' или 'fmincon' используются, когда estimate функции уменьшают проблему в NLP. Эти два решателя могут быть сконфигурированы через setSolver |
Portfolio | estimatePortReturn | estimatePortMoments | plotFrontier