exponenta event banner

PortfolioCVaR

Создает объект CCVaR для оптимизации и анализа портфеля с условной ценностью и риском

Описание

Использовать PortfolioCVaR для создания PortfolioCVaR объект для оптимизации портфеля условной стоимости под угрозой.

Основной поток операций для оптимизации портфеля CVaR - создание экземпляра PortfolioCVaR , который полностью определяет задачу оптимизации портфеля и для работы с PortfolioCVaR использование поддерживаемых функций для получения и анализа эффективных портфелей. Для получения дополнительной информации на этом технологическом процессе, посмотрите Технологический процесс Объекта PortfolioCVaR.

Вы можете использовать PortfolioCVaR объект несколькими способами. Настройка задачи оптимизации портфеля в PortfolioCVaR объект, простейший синтаксис:

p = PortfolioCVaR;
Этот синтаксис создает PortfolioCVaR объект, p, так что все свойства объекта пусты.

PortfolioCVaR объект также принимает коллекции аргументов пары имя-значение для свойств и их значений. PortfolioCVaR функция принимает входные данные для свойств с общим синтаксисом:

	p = PortfolioCVaR('property1',value1,'property2',value2, ... );

Если PortfolioCVaR объект уже существует, синтаксис разрешает первый (и только первый аргумент) PortfolioCVaR объект должен быть существующим объектом с последующими аргументами пары имя-значение для добавляемых или изменяемых свойств. Например, при наличии PortfolioCVaR объект в p, общий синтаксис:

p = PortfolioCVaR(p,'property1',value1,'property2',value2, ... );

Имена входных аргументов не чувствительны к регистру, но должны быть полностью указаны. Кроме того, можно указать несколько свойств с альтернативными именами аргументов (см. Ярлыки для имен свойств). PortfolioCVaR объект пытается обнаружить размеры проблемы из входных данных, и после установки последующие входные данные могут подвергаться различным скалярным или матричным операциям расширения, которые упрощают общий процесс формирования задачи. Кроме того, PortfolioCVaR объект является объектом стоимости, так что, данное портфолио p, следующий код создает два объекта, p и q, которые отличаются:

q = PortfolioCVaR(p, ...)

После создания PortfolioCVaR можно использовать связанные функции объекта для установки ограничений портфеля, анализа эффективной границы и проверки модели портфеля.

Дополнительные сведения о теоретической базе для оптимизации портфеля с учетом условной стоимости и риска см. в разделе Теория оптимизации портфеля.

Создание

Описание

пример

p = PortfolioCVaR создает пустой PortfolioCVaR объект для оптимизации и анализа портфеля условной стоимости под угрозой. Затем можно добавить элементы в PortfolioCVaR с использованием поддерживаемых функций «add» и «set». Дополнительные сведения см. в разделе Создание объекта CVaR.

пример

p = PortfolioCVaR(Name,Value) создает PortfolioCVaR объект (p) и задает Свойства, используя пары имя-значение. Например, p = PortfolioCVaR('AssetList',Assets(1:12)). Можно указать несколько пар имя-значение.

пример

p = PortfolioCVaR(p,Name,Value) создает PortfolioCVaR объект (p) с использованием ранее созданного PortfolioCVaR объект p и задает Свойства, используя пары имя-значение. Можно указать несколько пар имя-значение.

Входные аргументы

развернуть все

Ранее построенные PortfolioCVaR объект, указанный с помощью PortfolioCVaR.

Свойства

развернуть все

Настройка объекта

Имена или символы ресурсов во вселенной, определяемые как массив ячеек символьных векторов или строковый массив.

Типы данных: cell | string

Начальный портфель, указанный как вектор.

Типы данных: double

Имя для экземпляра PortfolioCVaR объект, указанный как символьный вектор или строка.

Типы данных: char | string

Количество активов во вселенной, указанное как целочисленный скаляр.

Типы данных: double

Ограничения объекта портфеля

Матрица ограничений линейного равенства, заданная как матрица.

Типы данных: double

Матрица ограничений линейного неравенства, заданная как матрица.

Типы данных: double

Вектор ограничения линейного равенства, заданный как вектор.

Типы данных: double

Вектор ограничения линейного неравенства, заданный как вектор.

Типы данных: double

Весовые коэффициенты группы A, ограничиваемые весовыми коэффициентами группы B, заданными в виде матрицы.

Типы данных: double

Весовые коэффициенты группы B, указанные как матрица.

Типы данных: double

Матрица членства в группе, заданная как матрица.

Типы данных: double

Ограничение нижней границы, указанное как вектор.

Типы данных: double

Ограничение бюджета с нижней границей, указанное как скаляр.

Типы данных: double

Групповое ограничение нижней границы, указанное как вектор.

Типы данных: double

Минимальное соотношение распределений между GroupA и GroupB, указан как вектор.

Типы данных: double

Ограничение верхней границы, указанное как вектор.

Типы данных: double

Ограничение бюджета верхней границы, указанное как скаляр.

Типы данных: double

Групповое ограничение верхней границы, указанное как вектор.

Типы данных: double

Максимальное соотношение распределений между GroupA и GroupB, указан как вектор.

Типы данных: double

Тип границ для каждого веса актива, определяемый как скалярный символьный вектор или строка, или массив ячеек из символьных векторов или строковый массив. Дополнительные сведения см. в разделе setBounds.

Типы данных: char | cell | string

Минимальное количество активов, выделенных в портфеле, указанное как скалярное числовое значение. Дополнительные сведения см. в разделе setMinMaxNumAssets.

Типы данных: double

Максимальное количество активов, выделенных в портфеле, указанное как скалярное числовое значение. Дополнительные сведения см. в разделе setMinMaxNumAssets.

Типы данных: double

Ограничение оборота, указанное как скаляр.

Типы данных: double

Ограничение оборота для продаж, указанное как скаляр.

Типы данных: double

Ограничение оборота для покупок, указанное как скаляр.

Типы данных: double

Моделирование объектов портфеля

Пропорциональные затраты на закупку, определенные как вектор.

Типы данных: double

Безрисковая ставка, указанная как скаляр.

Типы данных: double

Значение уровня вероятности риска, равное 1 − (вероятность потери), указанное как скаляр.

Типы данных: double

Число сценариев, указанное как целочисленный скаляр.

Типы данных: double

Пропорциональные затраты на продажу, определенные как вектор.

Типы данных: double

Функции объекта

setAssetListНастройка списка идентификаторов для активов
setInitPortНастройка начального или текущего портфеля
setDefaultConstraintsНастройка ограничений портфеля с неотрицательными весами, которые составляют 1
estimateAssetMomentsОценка среднего значения и ковариации доходности активов на основе данных
setCostsНастройка пропорциональных затрат по операциям
addEqualityДобавление ограничений линейного равенства для весов портфеля к существующим ограничениям
addGroupRatioДобавление ограничений группового соотношения для весов портфеля к существующим ограничениям группового соотношения
addGroupsДобавление групповых ограничений для весов портфеля к существующим групповым ограничениям
addInequalityДобавление ограничений линейного неравенства для весов портфеля к существующим ограничениям
getBoundsПолучение ограничений для весов портфеля из объекта портфеля
getBudgetПолучение ограничений бюджета из объекта портфеля
getCostsПолучение затрат на покупку и продажу из объекта портфеля
getEqualityПолучение массивов ограничений равенства из объекта портфеля
getGroupRatioПолучение массивов ограничений группового отношения из объекта портфеля
getGroupsПолучение массивов групповых ограничений из объекта портфеля
getInequalityПолучение массивов ограничений неравенства из объекта портфеля
getOneWayTurnoverПолучение односторонних ограничений оборота из объекта портфеля
setGroupsНастройка групповых ограничений для весов портфеля
setInequalityНастройка ограничений линейного неравенства для весов портфеля
setBoundsНастройка ограничений для весов портфеля для объекта портфеля
setMinMaxNumAssetsУстановка ограничений на количество активов, вложенных в объект портфеля
setBudgetНастройка бюджетных ограничений
setCostsНастройка пропорциональных затрат по операциям
setDefaultConstraintsНастройка ограничений портфеля с неотрицательными весами, которые составляют 1
setEqualityНастройка ограничений линейного равенства для весов портфеля
setGroupRatioНастройка ограничений группового соотношения для весов портфеля
setInitPortНастройка начального или текущего портфеля
setOneWayTurnoverНастройка однопользовательских ограничений оборота портфеля
setTurnoverНастройка максимального ограничения оборота портфеля
checkFeasibilityПроверка выполнимости входных портфелей по объекту портфеля
estimateBoundsОценить глобальные нижние и верхние границы для набора портфелей
estimateFrontierОценка указанного количества оптимальных портфелей на эффективной границе
estimateFrontierByReturnОценка оптимальных портфелей с целевой доходностью портфеля
estimateFrontierByRiskОценка оптимальных портфелей с целевыми портфельными рисками
estimateFrontierLimitsОценка оптимальных портфелей на конечных точках эффективной границы
plotFrontierГрафик эффективной границы
estimatePortReturnОценочное среднее значение доходности портфеля
estimatePortRiskОценка риска портфеля в соответствии с прокси-сервером риска, связанным с соответствующим объектом
setSolverВыберите основной решатель и укажите связанные опции решателя для оптимизации портфеля
setProbabilityLevelУстановить уровень вероятности для расчетов VaR и CVaR
setScenariosУстановка сценариев возврата основных средств по прямой матрице
getScenariosПолучение сценариев из объекта портфеля
simulateNormalScenariosByDataМоделирование многомерных сценариев нормального возврата основных средств на основе данных
simulateNormalScenariosByMomentsМоделирование многомерных нормальных сценариев возврата основных средств на основе среднего значения и ковариации возврата основных средств
estimateScenarioMomentsОценка среднего значения и ковариации сценариев возврата активов
estimatePortVaRОценка значения риска для объекта CCVaR
estimatePortStdОценка стандартного отклонения доходности портфеля

Примеры

свернуть все

Можно создать объект CCVaR, p, без входных аргументов и отобразить его с помощью disp.

p = PortfolioCVaR;
disp(p);
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: []
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: []
                Name: []
           NumAssets: []
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: []
          UpperBound: []
         LowerBudget: []
         UpperBudget: []
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: []

Этот подход обеспечивает способ настройки проблемы оптимизации портфеля с помощью PortfolioCVaR функция. Затем можно использовать связанные функции набора для установки и изменения коллекций свойств в PortfolioCVaR объект.

Вы можете использовать PortfolioCVaR непосредственно для настройки «стандартной» задачи оптимизации портфеля. Заданные сценарии возврата основных средств в переменной AssetScenarios, эта проблема полностью определена следующим образом:

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 = PortfolioCVaR('Scenarios', AssetScenarios, ...
'LowerBound', 0, 'LowerBudget', 1, 'UpperBudget', 1, ...
'ProbabilityLevel', 0.95)
p = 
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: 0.9500
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: 20000
                Name: []
           NumAssets: 4
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [4x1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: []

Обратите внимание, что LowerBound значение свойства подвергается скалярному расширению, поскольку AssetScenarios предоставляет размеры проблемы.

Использование последовательности шагов является альтернативным способом выполнения той же задачи по настройке «стандартной» задачи оптимизации портфеля CVaR, учитывая AssetScenarios переменная:

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 = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = PortfolioCVaR(p, 'LowerBound', 0);
p = PortfolioCVaR(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = setProbabilityLevel(p, 0.95);

plotFrontier(p);

Figure contains an axes. The axes with title \bfEfficient Frontier contains an object of type line.

Этот способ работает, потому что вызовы PortfolioCVaR находятся в этом особом порядке. В этом случае вызов для инициализации AssetScenarios предоставляет размеры для задачи. Если бы этот шаг был выполнен последним, необходимо было бы явно измерить LowerBound следующим образом:

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 = PortfolioCVaR;
p = PortfolioCVaR(p, 'LowerBound', zeros(size(m)));
p = PortfolioCVaR(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = setProbabilityLevel(p, 0.95);
p = setScenarios(p, AssetScenarios); 

plotFrontier(p);

Figure contains an axes. The axes with title \bfEfficient Frontier contains an object of type line.

Если не указан размер LowerBound но, вместо этого, введите скалярный аргумент, PortfolioCVaR объект предполагает, что вы определяете проблему с одним основным средством, и создает ошибку при вызове для установки сценариев основных средств с четырьмя основными средствами.

Можно создать объект CCVaR, p с PortfolioCVaR с использованием ярлыков для имен свойств.

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 = PortfolioCVaR('scenario', AssetScenarios, 'lb', 0, 'budget', 1, 'plevel', 0.95)
p = 
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: 0.9500
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: 20000
                Name: []
           NumAssets: 4
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [4x1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: []

Хотя это не рекомендуется, можно задать свойства непосредственно, однако проверка ошибок на входе не выполняется.

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 = PortfolioCVaR;

p = setScenarios(p, AssetScenarios);
p.ProbabilityLevel = 0.95;

p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));
disp(p)
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: 0.9500
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: 20000
                Name: []
           NumAssets: 4
           AssetList: []
            InitPort: []
         AInequality: []
         bInequality: []
           AEquality: []
           bEquality: []
          LowerBound: [4x1 double]
          UpperBound: []
         LowerBudget: 1
         UpperBudget: 1
         GroupMatrix: []
          LowerGroup: []
          UpperGroup: []
              GroupA: []
              GroupB: []
          LowerRatio: []
          UpperRatio: []
        MinNumAssets: []
        MaxNumAssets: []
           BoundType: []

Сценарии не могут быть присвоены непосредственно объекту CCVaR. Сценарии всегда должны быть установлены с помощью PortfolioCVaR функция, setScenarios функцию или любую из функций моделирования сценария.

Создание эффективных портфелей:

load CAPMuniverse

p = PortfolioCVaR('AssetList',Assets(1:12));
p = simulateNormalScenariosByData(p, Data(:,1:12), 20000 ,'missingdata',true);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);

plotFrontier(p);

Figure contains an axes. The axes with title \bfEfficient Frontier contains an object of type line.

pwgt = estimateFrontier(p, 5);

pnames = cell(1,5);
for i = 1:5
	pnames{i} = sprintf('Port%d',i);
end

Blotter = dataset([{pwgt},pnames],'obsnames',p.AssetList);

disp(Blotter);
            Port1       Port2        Port3       Port4      Port5
    AAPL    0.010562      0.07364     0.11931    0.13073    0    
    AMZN           0            0           0          0    0    
    CSCO           0            0           0          0    0    
    DELL    0.022649            0           0          0    0    
    EBAY           0            0           0          0    0    
    GOOG       0.203      0.38011     0.56202    0.75919    1    
    HPQ     0.042772    0.0094711           0          0    0    
    IBM      0.44444      0.36456     0.26305    0.11009    0    
    INTC           0            0           0          0    0    
    MSFT     0.27658      0.17222    0.055624          0    0    
    ORCL           0            0           0          0    0    
    YHOO           0            0           0          0    0    

Подробнее

развернуть все

Ссылки

[1] Полный список ссылок на объект TravingCVaR см. в разделе Оптимизация портфеля.

См. также

| | | | |

Представлен в R2012b