PortfolioCVaR

Создает объект PortfolioCVaR для условной подверженной риску значения оптимизации портфеля и анализа

Описание

Используйте 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 объект с помощью поддерживаемого "добавляет" и "установил" функции. Для получения дополнительной информации смотрите Создание Объекта PortfolioCVaR.

пример

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

Сгруппируйте веса, которые будут ограничены весами в группе 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Оценка, подверженная риску значения объекта PortfolioCVaR

estimatePortStd

Примеры

свернуть все

Можно создать объект PortfolioCVaR, 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);

Этот путь работает потому что вызовы 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);

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

Можно создать объект PortfolioCVaR, 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: []

Сценарии не могут быть присвоены непосредственно объекту PortfolioCVaR. Сценарии должны всегда устанавливаться через любого 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);

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] Для полного списка ссылок для объекта PortfolioCVaR смотрите Оптимизацию Портфеля.

Смотрите также

| | | | |

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