plotFrontier
функция создает график эффективной границы для заданной задачи оптимизации портфеля. Эта функция принимает несколько типов входов и генерирует график с дополнительной возможностью вывода оценок для портфельных рисков и возвратов вдоль эффективной границы. plotFrontier
имеет четыре различных способа, которые можно использовать. В дополнение к графику эффективной границы, если у вас есть начальный портфель в InitPort
свойство, plotFrontier
также отображает возврат от риска начального портфеля на том же графике. Если у вас есть хорошо поставленная задача оптимизации портфеля, настроенная в PortfolioMAD
объект и вы используете plotFrontier
, вы получаете график эффективной границы с количеством портфелей по умолчанию на границе (число по умолчанию 10
и поддерживается в скрытом свойстве defaultNumPorts
). Этот пример иллюстрирует типичное использование plotFrontier
чтобы создать новый график:
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 ]; m = m/12; C = C/12; AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); plotFrontier(p)
The Name
свойство появляется как заголовок эффективного пограничного графика, если вы задаете его в PortfolioMAD
объект. Без явного имени заголовка на график будет «Эффективная граница». Если вы хотите получить определенное количество портфелей вдоль эффективной границы, используйте plotFrontier
с количеством портфелей, которые вы хотите. Предположим, что у вас есть PortfolioMAD
объект из предыдущего примера, и вы хотите построить 20 портфелей вдоль эффективной границы и получить 20 значений риска и возврата для каждого портфеля:
[prsk, pret] = plotFrontier(p, 20); display([pret, prsk])
ans = 0.0049 0.0176 0.0054 0.0179 0.0058 0.0189 0.0063 0.0205 0.0068 0.0225 0.0073 0.0248 0.0078 0.0274 0.0083 0.0302 0.0088 0.0331 0.0093 0.0361 0.0098 0.0392 0.0103 0.0423 0.0108 0.0457 0.0112 0.0496 0.0117 0.0539 0.0122 0.0586 0.0127 0.0635 0.0132 0.0687 0.0137 0.0744 0.0142 0.0806
Если у вас уже есть эффективные портфели из любой функции «estimateFrontier» (см. «Оценка эффективных границ для объекта PortfolioMAD»), передайте их в plotFrontier
непосредственно для построения эффективной границы:
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 ]; m = m/12; C = C/12; AssetScenarios = mvnrnd(m, C, 20000); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = PortfolioMAD('Name', 'Asset Allocation Portfolio', 'InitPort', pwgt0); p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt = estimateFrontier(p, 20); plotFrontier(p, pwgt)
Если у вас уже есть эффективные риски портфеля и возвратов, вы можете использовать интерфейс для plotFrontier
чтобы передать их в plotFrontier
для получения графика эффективной границы:
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 ]; AssetScenarios = mvnrnd(m, C, 20000); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = PortfolioMAD('Name', 'Asset Allocation Portfolio', 'InitPort', pwgt0); p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt = estimateFrontier(p); pret= estimatePortReturn(p, pwgt) prsk = estimatePortRisk(p, pwgt) plotFrontier(p, prsk, pret)
pret = 0.0590 0.0723 0.0857 0.0991 0.1124 0.1258 0.1391 0.1525 0.1658 0.1792 prsk = 0.0615 0.0664 0.0795 0.0976 0.1184 0.1408 0.1663 0.1992 0.2368 0.2787
estimatePortReturn
| estimatePortStd
| plotFrontier
| PortfolioMAD