Решатель по умолчанию для оптимизации портфеля средних дисперсий 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-12
lcprog
с:p = setSolver(p, 'lcprog');
display(p.solverType);
display(p.solverOptions)
lcprog MaxIter: [] TieBreak: [] TolPiv: 5.0000e-08
setSolver
настраивает опции по умолчанию, сопоставленные с любым из решателей. Если вы хотите задать дополнительные опции, связанные с заданным решателем, 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 | Квадратичный (задача минимального риска) или линейный (задача максимального возврата) цель с линейными и нелинейными ограничениями | '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 |
estimatePortMoments
| estimatePortReturn
| plotFrontier
| Portfolio