Оцените оптимальные портфели с целенаправленными портфельными рисками
[pwgt,pbuy,psell]
= estimateFrontierByRisk(obj,TargetRisk)[pwgt,pbuy,psell]
= estimateFrontierByRisk(___,Name,Value)[ оценочные оптимальные портфели с целенаправленными портфельными рисками для pwgt,pbuy,psell]
= estimateFrontierByRisk(obj,TargetRisk)Portfolio, PortfolioCVaR или объектов PortfolioMAD. Для получения дополнительной информации на соответствующих рабочих процессах при использовании этих различных объектов, смотрите Рабочий процесс Объекта Портфеля, Рабочий процесс Объекта PortfolioCVaR и Рабочий процесс Объекта PortfolioMAD.
[ добавляют дополнительные именем аргументы пары "имя-значение" для объектов pwgt,pbuy,psell]
= estimateFrontierByRisk(___,Name,Value)PortfolioMAD или Portfolio.
Чтобы получить эффективные портфели, которые предназначались для портфельных рисков, функция 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 с полунепрерывными ограничениями, чтобы установить кси = 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%. Этот пример использует default'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.0000
0.2655 0.4991 0.3830
0.0568 0.1239 0.1461
0.1413 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.1613 0.0000 0.0000
0.4777 0.2139 0.0037
0.1118 0.1381 0.1214
0.2492 0.6480 0.8749
Функциональный 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
[pwgt,pbuy,psell] = estimateFrontierByRisk(p,‘method’,‘direct’)'Method' — Метод, чтобы оценить границу риском для Portfolio или объектов PortfolioMAD'direct' (значение по умолчанию) | вектор символов со значением 'direct' или 'iterative'Метод, чтобы оценить границу риском для Portfolio или объектов PortfolioMAD, заданных как пара, разделенная запятой, состоящая из 'Method' и вектора символов с одним из следующих значений:
'direct' — Создайте одну задачу оптимизации, чтобы максимизировать портфель, возвращаются с целевым риском как нелинейное ограничение и решают его непосредственно использование fmincon, вместо того, чтобы итеративно исследовать границу эффективности. Для примера использования опции 'direct' смотрите, Получают Портфели с Целенаправленными Портфельными рисками для Объекта Портфеля Используя Опции Прямого метода и Решателя и Получают Портфели с Целенаправленными Портфельными рисками для Объекта PortfolioMAD Используя Опции Прямого метода и Решателя.
'iterative' — Одномерная оптимизация с помощью fminbnd, чтобы найти портфель возвращается между min и макс. возвращается на границе, которая минимизирует различие между фактическим риском и целевым риском. Затем веса портфеля получены путем решения границы проблемой возврата. Следовательно, метод 'iterative' медленнее, чем 'direct'.
Типы данных: char
pwgt — Оптимальные портфели на границе эффективности с заданными целевыми рискамиОптимальные портфели на границе эффективности с заданной целью возвращаются из TargetRisk, возвращенного как NumAssets-by-NumPorts матрица. pwgt возвращен для Portfolio, PortfolioCVaR или входного объекта PortfolioMAD (obj).
pbuy — Покупки относительно начального портфеля для оптимальных портфелей на границе эффективности Покупки относительно начального портфеля для оптимальных портфелей на границе эффективности, возвращенной как NumAssets-by-NumPorts матрица.
Если никакой начальный портфель не задан в obj.InitPort, то значение принято, чтобы быть 0, таким образом что pbuy = max(0,pwgt) и psell = max(0,-pwgt).
pbuy возвращен для Portfolio, PortfolioCVaR или входного объекта PortfolioMAD (obj).
psell — Продажи относительно начального портфеля для оптимальных портфелей на границе эффективности Продажи относительно начального портфеля для оптимальных портфелей на границе эффективности, возвращенной как NumAssets-by-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.