Оценка оптимальных портфелей с целевыми портфельными рисками
[ оценивает оптимальные портфели с целевыми портфельными рисками для pwgt,pbuy,psell] = estimateFrontierByRisk(obj,TargetRisk)Portfolio, PortfolioCVaR, или PortfolioMAD объекты. Для получения подробной информации о соответствующих рабочих процессах при использовании этих различных объектов см. Workflow-процесс объекта портфеля, Workflow-процесс объекта Portfolio CVaR и Workflow-процесс объекта Portfolio MAD.
[ добавляет аргументы пары имя-необязательное имя-значение для pwgt,pbuy,psell] = estimateFrontierByRisk(___,Name,Value)Portfolio или PortfolioMAD объекты.
Для получения эффективных портфелей, которые имеют целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с указанными рисками. Предположим, что у вас есть набор из четырех активов, где вы хотите получить эффективные портфели с целевым риском портфеля в 12%, 14% и 16%. В этом примере используется значение по умолчанию 'direct' способ оценки оптимальных портфелей с целевыми портфельными рисками.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
p = Portfolio;
p = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]);
display(pwgt);pwgt = 4×3
0.3984 0.2659 0.1416
0.3064 0.3791 0.4474
0.0882 0.1010 0.1131
0.2071 0.2540 0.2979
Portfolio Объект с BoundType, MinNumAsset, и MaxNumAsset ОграниченияКогда какое-либо одно или любое сочетание ограничений из 'Conditional' BoundType, MinNumAssets, и MaxNumAssets активны, портфельная задача формулируется как задача смешанного целочисленного программирования и используется решатель MINLP.
Создать Portfolio объект для трех основных средств.
AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ];
AssetCovar = [ 0.00324625 0.00022983 0.00420395;
0.00022983 0.00049937 0.00019247;
0.00420395 0.00019247 0.00764097 ];
p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar);
p = setDefaultConstraints(p); Использовать setBounds с полунепрерывными ограничениями для установки xi = 0 или 0.02 <= xi <= 0.5 для всех i = 1,...NumAssets.
p = setBounds(p, 0.02, 0.7,'BoundType', 'Conditional', 'NumAssets', 3);
При работе с Portfolio объект, setMinMaxNumAssets функция позволяет установить ограничения на количество инвестированных активов (так называемые ограничения по кардинальности). Это задает общее количество выделенных активов, удовлетворяющих ограничениям привязки, которые находятся между MinNumAssets и MaxNumAssets. По настройке MinNumAssets = MaxNumAssets = 2, только два из трех активов инвестируются в портфель.
p = setMinMaxNumAssets(p, 2, 2);
Использовать estimateFrontierByRisk оценка оптимальных портфелей с целевыми портфельными рисками.
[pwgt, pbuy, psell] = estimateFrontierByRisk(p,[0.0324241, 0.0694534 ])
pwgt = 3×2
0.0000 0.5000
0.6907 0
0.3093 0.5000
pbuy = 3×2
0.0000 0.5000
0.6907 0
0.3093 0.5000
psell = 3×2
0 0
0 0
0 0
estimateFrontierByRisk для решения этой проблемы функция использует решатель MINLP. Используйте setSolverMINLP для конфигурирования SolverType и варианты.
p.solverTypeMINLP
ans = 'OuterApproximation'
p.solverOptionsMINLP
ans = struct with fields:
MaxIterations: 1000
AbsoluteGapTolerance: 1.0000e-07
RelativeGapTolerance: 1.0000e-05
NonlinearScalingFactor: 1000
ObjectiveScalingFactor: 1000
Display: 'off'
CutGeneration: 'basic'
MaxIterationsInactiveCut: 30
ActiveCutTolerance: 1.0000e-07
IntMasterSolverOptions: [1x1 optim.options.Intlinprog]
NumIterationsEarlyIntegerConvergence: 30
Для получения эффективных портфелей, которые имеют целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с указанными рисками. Предположим, что у вас есть набор из четырех активов, где вы хотите получить эффективные портфели с целевым риском портфеля в 12%, 14% и 16%. В этом примере используется значение по умолчанию'direct' способ оценки оптимальных портфелей с целевыми портфельными рисками. 'direct' метод использует fmincon для решения задачи оптимизации, которая максимизирует доходность портфеля, с учетом целевого риска в качестве квадратичного нелинейного ограничения. setSolver задает solverType и SolverOptions для fmincon.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
p = Portfolio;
p = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
p = setSolver(p, 'fmincon', 'Display', 'off', 'Algorithm', 'sqp', ...
'SpecifyObjectiveGradient', true, 'SpecifyConstraintGradient', true, ...
'ConstraintTolerance', 1.0e-8, 'OptimalityTolerance', 1.0e-8, 'StepTolerance', 1.0e-8);
pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]);
display(pwgt);pwgt = 4×3
0.3984 0.2659 0.1416
0.3064 0.3791 0.4474
0.0882 0.1010 0.1131
0.2071 0.2540 0.2979
Для получения эффективных портфелей, которые имеют целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с указанными рисками. Предположим, что у вас есть набор из четырех активов, где вы хотите получить эффективные портфели с целевым риском портфеля в 12%, 20% и 30%.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
rng(11);
p = PortfolioCVaR;
p = simulateNormalScenariosByMoments(p, m, C, 2000);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);
pwgt = estimateFrontierByRisk(p, [0.12, 0.20, 0.30]);
display(pwgt);pwgt = 4×3
0.5363 0.1387 0
0.2655 0.4991 0.3830
0.0570 0.1239 0.1461
0.1412 0.2382 0.4709
Функция rng() сбрасывает генератор случайных чисел для получения документированных результатов. Нет необходимости сбрасывать генератор случайных чисел для моделирования сценариев.
Для получения эффективных портфелей, которые имеют целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с указанными рисками. Предположим, что у вас есть набор из четырех активов, где вы хотите получить эффективные портфели с целевым риском портфеля в 12%, 20% и 25%. В этом примере используется значение по умолчанию 'direct' способ оценки оптимальных портфелей с целевыми портфельными рисками.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
rng(11);
p = PortfolioMAD;
p = simulateNormalScenariosByMoments(p, m, C, 2000);
p = setDefaultConstraints(p);
pwgt = estimateFrontierByRisk(p, [0.12, 0.20, 0.25]);
display(pwgt);pwgt = 4×3
0.1610 0 0
0.4784 0.2137 0.0047
0.1116 0.1384 0.1200
0.2490 0.6480 0.8753
Функция rng() сбрасывает генератор случайных чисел для получения документированных результатов. Нет необходимости сбрасывать генератор случайных чисел для моделирования сценариев.
Для получения эффективных портфелей, которые имеют целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с указанными рисками. Предположим, что у вас есть набор из четырех активов, где вы хотите получить эффективные портфели с целевым риском портфеля в 12%, 20% и 25%. В этом примере используется значение по умолчанию 'direct' способ оценки оптимальных портфелей с целевыми портфельными рисками. 'direct' метод использует fmincon для решения задачи оптимизации, которая максимизирует доходность портфеля, с учетом целевого риска в качестве квадратичного нелинейного ограничения. setSolver задает solverType и SolverOptions для fmincon.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
rng(11);
p = PortfolioMAD;
p = simulateNormalScenariosByMoments(p, m, C, 2000);
p = setDefaultConstraints(p);
p = setSolver(p, 'fmincon', 'Display', 'off', 'Algorithm', 'sqp', ...
'SpecifyObjectiveGradient', true, 'SpecifyConstraintGradient', true, ...
'ConstraintTolerance', 1.0e-8, 'OptimalityTolerance', 1.0e-8, 'StepTolerance', 1.0e-8);
plotFrontier(p);
pwgt = estimateFrontierByRisk(p, [0.12 0.20, 0.25]); display(pwgt);
pwgt = 4×3
0.1613 0.0000 -0.0000
0.4777 0.2139 0.0037
0.1118 0.1381 0.1214
0.2492 0.6480 0.8749
obj - Объект для портфеляОбъект для портфеля, указанный с помощью Portfolio, PortfolioCVaR, или PortfolioMAD объект. Дополнительные сведения о создании объекта портфеля см. в разделе
Примечание
Если исходный портфель не указан в obj.InitPort, предполагается, что 0 чтобы pbuy = max(0,pwgt) и psell = max(0,-pwgt). Дополнительные сведения о настройке начального портфеля см. в разделе setInitPort.
Типы данных: object
TargetRisk - Целевые значения для портфельного рискаЦелевые значения для портфельного риска, указанные как NumPorts вектор.
Примечание
При наличии TargetRisk значения находятся вне диапазона рисков для эффективных портфелей, целевой риск заменяется минимальным или максимальным эффективным портфельным риском, в зависимости от того, находится ли целевой риск ниже или выше диапазона эффективных портфельных рисков.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
[pwgt,pbuy,psell] = estimateFrontierByRisk(p,‘method’,‘direct’)'Method' - Метод оценки границы по риску для Portfolio или PortfolioMAD объекты'direct' (по умолчанию) | символьный вектор со значением 'direct' или 'iterative'Метод оценки границы по риску для Portfolio или PortfolioMAD объекты, указанные как разделенная запятыми пара, состоящая из 'Method' и вектор символов с одним из следующих значений:
'direct' - Создать одну задачу оптимизации, чтобы максимизировать доходность портфеля с целевым риском в качестве нелинейного ограничения, и решить ее непосредственно с помощью fminconвместо итеративного изучения эффективной границы. Для примера использования 'direct' см. раздел Получение портфелей с целевыми портфельными рисками для объекта портфеля с использованием прямого метода и вариантов решателя и получение портфелей с целевыми портфельными рисками для объекта с использованием прямого метода и опций решателя.
'iterative' - Одномерная оптимизация с использованием fminbnd чтобы найти доходность портфеля между минимальной и максимальной доходностью на границе, которая минимизирует разницу между фактическим риском и целевым риском. Затем веса портфеля получаются путем решения задачи «граница-возврат». Следовательно, 'iterative' метод медленнее, чем 'direct'.
Типы данных: char
pwgt - Оптимальные портфели на эффективной границе с указанными целевыми рискамиОптимальные портфели на эффективной границе с указанной целевой доходностью от TargetRisk, возвращено как NumAssetsоколо-NumPorts матрица. pwgt возвращается для Portfolio, PortfolioCVaR, или PortfolioMAD входной объект (obj).
pbuy - Закупки по отношению к первоначальному портфелю для оптимальных портфелей на эффективной границе Закупки по отношению к первоначальному портфелю для оптимальных портфелей на эффективной границе, возвращенные как NumAssetsоколо-NumPorts матрица.
Примечание
Если исходный портфель не указан в obj.InitPort, это значение принимается равным 0 такой, что pbuy = max(0,pwgt) и psell = max(0,-pwgt).
pbuy возвращается для Portfolio, PortfolioCVaR, или PortfolioMAD входной объект (obj).
psell - Продажи по отношению к первоначальному портфелю для оптимального портфеля на эффективной границе Продажи по отношению к первоначальному портфелю для оптимальных портфелей на эффективной границе, возвращаемые как NumAssetsоколо-NumPorts матрица.
Примечание
Если исходный портфель не указан в obj.InitPort, это значение принимается равным 0 такой, что pbuy = max(0,pwgt) и psell = max(0,-pwgt).
psell возвращается для Portfolio, PortfolioCVaR, или PortfolioMAD входной объект (obj).
Можно также использовать точечную нотацию для оценки оптимальных портфелей с целевыми портфельными рисками.
[pwgt,pbuy,psell] = obj.estimateFrontierByRisk(TargetRisk);
или
[pwgt,pbuy,psell] = obj.estimateFrontierByRisk(TargetRisk,Name,Value);
estimateFrontier | estimateFrontierByReturn | estimateFrontierLimits | rng | setBounds | setInitPort | setMinMaxNumAssets
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.