setSolver

Выберите основной решатель и задайте сопоставленные опции решателя для оптимизации портфеля

Синтаксис

obj = setSolver(obj,solverType)
obj = setSolver(obj,solverType,Name,Value)
obj = setSolver(obj,solverType,optimoptions)

Описание

пример

obj = setSolver(obj,solverType) выбирает основной решатель и позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для Portfolio, PortfolioCVaR или объектов PortfolioMAD. Для получения дополнительной информации на соответствующих рабочих процессах при использовании этих различных объектов, смотрите Рабочий процесс Объекта Портфеля, Рабочий процесс Объекта PortfolioCVaR и Рабочий процесс Объекта PortfolioMAD.

пример

obj = setSolver(obj,solverType,Name,Value) выбирает основной решатель и позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для объектов портфеля с дополнительными опциями, заданными при помощи одного или нескольких аргументов пары Name,Value.

пример

obj = setSolver(obj,solverType,optimoptions) выбирает основной решатель и позволяет вам задать сопоставленные опции решателя для оптимизации портфеля для объектов портфеля с объектом optimoptions.

Примеры

свернуть все

Если вы используете функцию quadprog в качестве solverType, значением по умолчанию является версия interior-point-convex quadprog.

load CAPMuniverse
p = Portfolio('AssetList',Assets(1:12));
p = setDefaultConstraints(p);
p = setSolver(p, 'quadprog');
display(p.solverType);
quadprog

Можно переключиться назад на lcprog с:

p = setSolver(p, 'lcprog');
display(p.solverType);
lcprog

Используйте 'fmincon' в качестве solverType.

p = PortfolioCVaR;
p = setSolver(p, 'fmincon');
display(p.solverType);
fmincon

Используйте 'fmincon' в качестве solverType и используйте аргументы пары "имя-значение", чтобы установить алгоритм на 'interior-point' и выключить отображение.

p = PortfolioCVaR;
p = setSolver(p, 'fmincon', 'Algorithm', 'interior-point', 'Display', 'off');
display(p.solverOptions.Algorithm);
interior-point
display(p.solverOptions.Display);
off

Используйте 'fmincon' в качестве solverType и используйте объект optimoptions установить алгоритм на 'interior-point' и выключить отображение.

p = PortfolioCVaR;
options = optimoptions('fmincon', 'Algorithm', 'interior-point', 'Display', 'off');
p = setSolver(p, 'fmincon', options);
display(p.solverOptions.Algorithm);
interior-point
display(p.solverOptions.Display);
off

Используйте 'cuttingplane' в качестве solverType с опциями по умолчанию.

p = PortfolioCVaR;
p = setSolver(p,'cuttingplane');
display(p.solverType);
cuttingplane

Используйте Пару "имя-значение" 'MaxIter', чтобы определить максимальный номер итераций к 1500.

p = PortfolioCVaR;
p = setSolver(p,'cuttingplane','MaxIter',1500);
display(p.solverType);
cuttingplane
display(p.solverOptions);
                MaxIter: 1500
                 AbsTol: 1.0000e-06
                 RelTol: 1.0000e-05
    MasterSolverOptions: [1x1 optim.options.Linprog]

Для основного решателя продолжите использовать алгоритм dual-simplex без отображения, но сожмите его допуск завершения к 1e-8.

p = PortfolioCVaR;
options = optimoptions('linprog','Algorithm','Dual-Simplex','Display','off','OptimalityTolerance',1e-8);
p = setSolver(p,'cuttingplane','MasterSolverOptions',options);
display(p.solverType)
cuttingplane
display(p.solverOptions)
                MaxIter: 1000
                 AbsTol: 1.0000e-06
                 RelTol: 1.0000e-05
    MasterSolverOptions: [1x1 optim.options.Linprog]
display(p.solverOptions.MasterSolverOptions.Algorithm)
dual-simplex
display(p.solverOptions.MasterSolverOptions.Display)
off
display(p.solverOptions.MasterSolverOptions.TolFun)
   1.0000e-08

Для основного решателя используйте алгоритм interior-point без отображения, и с допуском завершения 1e-7.

p = PortfolioCVaR;
options = optimoptions('linprog','Algorithm','interior-point','Display','off','OptimalityTolerance',1e-7);
p = setSolver(p,'cuttingplane','MasterSolverOptions',options);
display(p.solverType)
cuttingplane
display(p.solverOptions)
                MaxIter: 1000
                 AbsTol: 1.0000e-06
                 RelTol: 1.0000e-05
    MasterSolverOptions: [1x1 optim.options.Linprog]
display(p.solverOptions.MasterSolverOptions.Algorithm)
interior-point
display(p.solverOptions.MasterSolverOptions.Display)
off
display(p.solverOptions.MasterSolverOptions.TolFun)
   1.0000e-07

Используйте 'fmincon' в качестве solverType.

p = PortfolioMAD;
p = setSolver(p, 'fmincon');
display(p.solverType);
fmincon

Используйте 'fmincon' в качестве solverType и используйте аргументы пары "имя-значение", чтобы установить алгоритм на 'sqp' и включить отображение.

p = PortfolioMAD;
p = setSolver(p, 'fmincon', 'Algorithm', 'sqp', 'Display', 'final');
display(p.solverOptions.Algorithm);
sqp
display(p.solverOptions.Display);
final

Используйте 'fmincon' в качестве solverType и используйте объект optimoptions установить алгоритм на 'trust-region-reflective' и выключить отображение.

p = PortfolioMAD;
options = optimoptions('fmincon', 'Algorithm', 'trust-region-reflective', 'Display', 'off');
p = setSolver(p, 'fmincon', options);
display(p.solverOptions.Algorithm);
trust-region-reflective
display(p.solverOptions.Display);
off

Используйте 'fmincon' в качестве solverType и используйте объект optimoptions установить алгоритм на 'active-set' и установить флаг 'on' градиентов для 'GradObj' и выключить отображение.

p = PortfolioMAD;
options = optimoptions('fmincon','algorithm','active-set','display','off','gradobj','on');
p = setSolver(p, 'fmincon', options);
display(p.solverOptions.Algorithm);
active-set
display(p.solverOptions.Display);
off

Входные параметры

свернуть все

Объект для портфеля, заданное использование Portfolio, PortfolioCVaR или объект PortfolioMAD. Для получения дополнительной информации о создании объекта портфеля смотрите

Типы данных: object

Решатель, чтобы использовать для оптимизации портфеля, заданного использования вектора символов или строки для поддерживаемого solverType.

Входной параметр solverType зависит, на котором тип объекта (obj) используется для оптимизации портфеля.

Для объекта Portfolio поддерживаемый solverType:

Для объекта PortfolioCVaR поддерживаемый solverType:

  • 'fmincon' (Значение по умолчанию)

  • 'cuttingplane'

    • Решатель 'cuttingplane' является реализацией Келли [1] плоский сокращением метод для выпуклой оптимизации с аргументами пары "имя-значение" для 'MaxIter', 'Abstol', 'Reltol' и 'MasterSolverOptions'. Для получения дополнительной информации об опциях пары "имя-значение" 'cuttingplane', смотрите Объект PortfolioCVaR Аргументы в виде пар имя-значение.

Для объекта PortfolioMAD поддерживаемый solverType:

  • 'fmincon' (Значение по умолчанию)

Примечание

setSolver может также сконфигурировать опции решателя для 'linprog'. linprog является решателем помощника, используемым в оценке проблем границы эффективности для Portfolio, PorfolioCVaR или объекта PortfolioMAD. Алгоритмом по умолчанию для 'linprog' является 'dual-simplex'. Для получения дополнительной информации об опциях пары "имя-значение" 'linprog', см. Аргументы в виде пар имя-значение. Для получения дополнительной информации при использовании решателя помощника, см. Инструкции по Решателю для Объектов Портфеля, Инструкции по Решателю для Объектов PortfolioCVaR или Инструкции по Решателю для Объектов PortfolioMAD.

Типы данных: char | string

(Необязательно) объект optimoptions, заданный как объект optimoptions, который создается с помощью optimoptions из Optimization Toolbox™. Например:

p = setSolver(p,'fmincon',optimoptions('fmincon','Display','iter'));

Примечание

optimoptions является значением по умолчанию и рекомендуемым методом, чтобы установить опции решателя, однако optimset также поддержан.

Типы данных: object

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: p = setSolver(p,'cuttingplane','MasterSolverOptions',options) устанавливает опции cuttingplane для объекта PortfolioCVaR.

В зависимости от типа obj (Portfolio, PortfolioCVaR или PortfolioMAD) и заданный solverType, опции для связанных аргументов пары "имя-значение" отличаются.

Объект Portfolio Аргументы в виде пар имя-значение

  • Для объекта Portfolio с помощью solverType lcprog выберите значение значения имени в этой таблице.

    ЗначениеОписание
    'maxiter'

    Максимальное количество итераций, заданных как пара, разделенная запятой, состоящая из 'MaxIter' и положительного целого числа. Значением по умолчанию является 1 + n 3, где n является размерностью входа.

    'tiebreak'

    Метод, чтобы повредить связи для выбора центра, заданного как пара, разделенная запятой, состоящая из 'tiebreak' и одна из следующих опций:

    • first - Выберите центр с самым низким индексом.

    • last - Выберите центр с самым высоким индексом.

    • random - Выберите центр наугад.

    Значением по умолчанию является first.

    'tolpiv'

    Допуск центра, ниже которого номер считается нулем, задал как пара, разделенная запятой, состоящая из 'tolpiv' и числового значения. Значением по умолчанию является 1.0e-9.

  • Для объекта Portfolio с помощью solverType fmincon см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

  • Для объекта Portfolio с помощью solverType linprog см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

  • Для объекта Portfolio с помощью solverType quadprog см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

Объект PortfolioCVaR Аргументы в виде пар имя-значение

  • Для объекта PortfolioCVaR с помощью solverType fmincon см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

  • Для объекта PorfolioCVaR с помощью solverType 'cuttingplane' выберите значение пары "имя-значение" в этой таблице.

    ЗначениеОписание
    'MaxIter'

    Максимальное количество итераций, заданных как пара, разделенная запятой, состоящая из 'MaxIter' и положительного целого числа. Значением по умолчанию является 1000.

    'AbsTol'

    Абсолютный допуск остановки, заданный как пара, разделенная запятой, состоящая из 'AbsTol' и положительной скалярной величины. Значением по умолчанию является 1e-6.

    'RelTol'

    Относительный допуск остановки, заданный как пара, разделенная запятой, состоящая из 'RelTol' и положительной скалярной величины. Значением по умолчанию является 1e-5.

    'MasterSolverOptions'

    Опции для основного решателя linprog, заданный как пара, разделенная запятой, состоящая из 'MasterSolverOptions' и объекта optimoptions. Значением по умолчанию является optimoptions('linprog','Algorithm','Dual-Simplex','Display','off').

  • Для объекта PortfolioCVaR с помощью solverType linprog см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

Объект PortfolioMAD Аргументы в виде пар имя-значение

  • Для объекта PortfolioMAD с помощью solverType fmincon см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

  • Для объекта PortfolioMAD с помощью solverType linprog см. опции (Optimization Toolbox), чтобы выбрать аргументы пары "имя-значение".

Выходные аргументы

свернуть все

Обновленный объект портфеля, возвращенный как Portfolio, PortfolioCVaR или объект PortfolioMAD. Для получения дополнительной информации о создании объекта портфеля смотрите

Советы

Можно также использовать запись через точку, чтобы выбрать решатель и задать сопоставленные опции решателя.

obj = obj.setSolver(solverType,Name,Value);

Алгоритмы

Чтобы решить границу эффективности портфеля, одна версия задачи оптимизации портфеля минимизирует портфельный риск Risk (x) согласно целевому возврату и другим линейным ограничениям, заданным для Portfolio, PortfolioCVaR или объекта PortfolioMAD. Для определения портфельного риска и возвращают, видят Прокси Риска и Возвращают Прокси.

MinimizexRisk(x)подвергающийся   Return(x)TargetReturnAxbAeqx=beqlbxub

Альтернативная версия задачи оптимизации портфеля максимизирует ожидаемый доход портфеля согласно целевому риску и другим линейным ограничениям, заданным для Portfolio, PortfolioCVaR или объекта PortfolioMAD.

MaximizexReturn(x)подвергающийся   Risk(x)TаргументetRiskAxbAeqx=beqlbxub

Прокси возврата всегда является линейной функцией. Поэтому в зависимости от прокси риска и используется ли это в качестве цели или ограничений, проблема должна быть решена другими решателями. Например, quadprog подходит для проблем с квадратичной функцией как цель и только линейные ограничения, и fmincon подходит для проблем с нелинейной целью или ограничениями. Кроме того, существуют решатели в Financial Toolbox™, подходящем для определенных специальных типов проблем, таких как lcprog solverType и cuttingplane.

Ссылки

[1] Келли, J. E. "Плоский Сокращением Метод для Решения Выпуклых Программ". Журнал Общества Промышленной и Прикладной математики. Издание 8, № 4, декабрь 1960, стр 703–712.

[2] Rockafellar, R. T. и С. Урясев "Оптимизация Подверженного риску значения Условного выражения". Журнал Риска. Издание 2, № 3, Spring 2000, стр 21–41.

[3] Rockafellar, R. T. и С. Урясев "Условное выражение, Подверженное риску значения Общих Дистрибутивов Потерь". Журнал Банковского дела и Финансов. Издание 26, 2002, стр 1443–1471.

Введенный в R2011a