Оцените оптимальные портфели с целенаправленными портфельными рисками
[
оценочные оптимальные портфели с целенаправленными портфельными рисками для 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.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'
опция, смотрите, Получают Портфели с Целенаправленными Портфельными рисками для Объекта Портфеля Используя Опции Прямого метода и Решателя и Получают Портфели с Целенаправленными Портфельными рисками для Объекта 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.