Решателем по умолчанию для оптимизации портфеля среднего отклонения является lcprog
, который реализует алгоритм линейного программирования взаимозависимости (LCP). Несмотря на то, что lcprog
работает на большинство проблем, можно настроить аргументы, чтобы управлять алгоритмом. В качестве альтернативы инструменты оптимизации портфеля среднего отклонения позволяют вам использовать любое из изменений quadprog
из программного обеспечения Optimization Toolbox™. Как Optimization Toolbox, который использует interior-point-convex
алгоритм как алгоритм по умолчанию для quadprog
, инструменты оптимизации портфеля также используют interior-point-convex
алгоритм как значение по умолчанию. Для получения дополнительной информации о quadprog
и алгоритмы квадратичного программирования и опции, см. Алгоритмы Квадратичного программирования (Optimization Toolbox).
'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 quadprog options: Options used by current Algorithm ('interior-point-convex'): (Other available algorithms: '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: '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
| estimatePortMoments
| estimatePortReturn
| plotFrontier