Оцените оптимальные портфели с целенаправленными портфельными рисками
[
оценочные оптимальные портфели с целенаправленными портфельными рисками для pwgt
,pbuy
,psell
]
= estimateFrontierByRisk(obj
,TargetRisk
)Portfolio
, PortfolioCVaR
, или PortfolioMAD
объекты. Для получения дополнительной информации на соответствующих рабочих процессах при использовании этих различных объектов, смотрите Рабочий процесс Объекта Портфеля, Рабочий процесс Объекта PortfolioCVaR и Рабочий процесс Объекта PortfolioMAD.
[
добавляют дополнительные именем аргументы пары "имя-значение" для 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
с полунепрерывными ограничениями, чтобы установить кси = 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
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
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'
опция, смотрите, Получают Портфели с Целенаправленными Портфельными рисками для Объекта Портфеля Используя Опции Прямого метода и Решателя и Получают Портфели с Целенаправленными Портфельными рисками для Объекта PortfolioMAD Используя Опции Прямого метода и Решателя.
'iterative'
— Одномерная оптимизация с помощью fminbnd
чтобы найти портфель возвращаются между min и макс. возвращаются на границе, которая минимизирует различие между фактическим риском и целевым риском. Затем веса портфеля получены путем решения границы проблемой возврата. Следовательно, '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.