simulateNormalScenariosByData

Моделируйте многомерный нормальный актив, возвращают сценарии в данные

simulateNormalScenariosByData был частично удален и больше не будет принимать объект fints для аргумента AssetReturns. Используйте timetable вместо этого для финансовых временных рядов.

Используйте fts2timetable, чтобы преобразовать объект fints в объект timetable.

Синтаксис

obj = simulateNormalScenariosByData(obj,AssetReturns)
obj = simulateNormalScenariosByData(obj,AssetReturns,NumScenarios,Name,Value)

Описание

пример

obj = simulateNormalScenariosByData(obj,AssetReturns) моделирует многомерный нормальный актив, возвращают сценарии в данные для объекта портфеля для объектов PortfolioMAD или PortfolioCVaR. Для получения дополнительной информации на рабочих процессах, смотрите Рабочий процесс Объекта PortfolioCVaR и Рабочий процесс Объекта PortfolioMAD.

пример

obj = simulateNormalScenariosByData(obj,AssetReturns,NumScenarios,Name,Value) моделирует многомерный нормальный актив, возвращают сценарии в данные для объекта портфеля для PortfolioCVaR или объектов PortfolioMAD с помощью дополнительных опций, заданных одним или несколькими аргументами пары Name,Value.

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

Данные могут быть в NumSamples-by-NumAssets матрицей цен NumSamples или возвращаются в данной периодичности для набора активов NumAssets, table или timetable.

Примечание

Если вы хотите использовать метод многократно, и вы хотите моделировать идентичные сценарии каждый раз, когда функция вызвана, предшествуйте каждому вызову функции с rng (seed) с помощью заданного целочисленного seed.

Примеры

свернуть все

Учитывая объект PortfolioCVaR p, использование функция simulateNormalScenariosByData, чтобы моделировать многомерный нормальный актив возвращают сценарии в данные.

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;

RawData = mvnrnd(m, C, 240);
NumScenarios = 2000;

p = PortfolioCVaR;
p = simulateNormalScenariosByData(p, RawData, NumScenarios)
p = 
  PortfolioCVaR with properties:

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

p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.9);

disp(p);
  PortfolioCVaR with properties:

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: 0.9000
            Turnover: []
         BuyTurnover: []
        SellTurnover: []
        NumScenarios: 2000
                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: [4x1 categorical]

Создайте объект PortfolioCVaR p и используйте функцию simulateNormalScenariosByData с данными о рынке, загруженными от CAPMuniverse.mat, чтобы моделировать многомерный нормальный актив, возвращают сценарии. Данными о рынке, AssetsTimeTable, является timetable актива, возвращается.

load CAPMuniverse

p = PortfolioCVaR('AssetList',Assets);
disp(p);
  PortfolioCVaR with properties:

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

Моделируйте сценарии от данных о расписании для каждого из активов от CAPMuniverse.mat и постройте границу эффективности.

p = simulateNormalScenariosByData(p,AssetsTimeTable,10000,'missingdata',true);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.9);
plotFrontier(p);

Учитывая объект PortfolioMAD p, использование функция simulateNormalScenariosByData, чтобы моделировать многомерный нормальный актив возвращают сценарии в данные.

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;

RawData = mvnrnd(m, C, 240);
NumScenarios = 2000;

p = PortfolioMAD;
p = simulateNormalScenariosByData(p, RawData, NumScenarios);
p = setDefaultConstraints(p);

disp(p);
  PortfolioMAD with properties:

         BuyCost: []
        SellCost: []
    RiskFreeRate: []
        Turnover: []
     BuyTurnover: []
    SellTurnover: []
    NumScenarios: 2000
            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: [4x1 categorical]

Создайте объект PortfolioMAD p и используйте функцию simulateNormalScenariosByData с данными о рынке, загруженными от CAPMuniverse.mat, чтобы моделировать многомерный нормальный актив, возвращают сценарии. Данными о рынке, AssetsTimeTable, является timetable актива, возвращается.

load CAPMuniverse

p = PortfolioMAD('AssetList',Assets);
disp(p.AssetList');
    'AAPL'
    'AMZN'
    'CSCO'
    'DELL'
    'EBAY'
    'GOOG'
    'HPQ'
    'IBM'
    'INTC'
    'MSFT'
    'ORCL'
    'YHOO'
    'MARKET'
    'CASH'

Моделируйте сценарии от данных о расписании для каждого из активов от CAPMuniverse.mat и постройте границу эффективности.

p = simulateNormalScenariosByData(p,AssetsTimeTable,10000,'missingdata',true);
p = setDefaultConstraints(p);
plotFrontier(p);

Входные параметры

свернуть все

Объект для портфеля, заданное использование объекта PortfolioCVaR или PortfolioMAD.

Для получения дополнительной информации о создании объекта PortfolioCVaR или PortfolioMAD смотрите

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

Данные об активе, которые могут быть преобразованы в актив, возвращаются ([NumSamples-by-NumAssets] матрица), заданный как матрица, table или timetable.

Данные AssetReturns могут быть:

  • NumSamples-by-NumAssets матрица.

  • Таблица цен NumSamples или возвращается в данной периодичности для набора активов NumAssets

  • Объект Timetable с наблюдениями NumSamples и временными рядами NumAssets

Типы данных: double | table | timetable

Количество сценариев, чтобы моделировать, заданный как положительное целое число.

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: p = simulateNormalScenariosByData(p,RawData,NumScenarios,'DataFormat','Returns','MissingData',true,'GetAssetList',true)

Отметьте, чтобы преобразовать входные данные как цены в возвраты, заданные как пара, разделенная запятой, состоящая из 'DataFormat' и вектора символов со значениями:

  • Возвращается Данные в AssetReturns содержат совокупные доходы актива.

  • 'Prices' — Данные в AssetReturns содержат цены совокупного дохода актива.

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

Отметьте, чтобы использовать алгоритм ECM, чтобы обработать значения NaN, заданные как пара, разделенная запятой, состоящая из 'MissingData' и логического со значением true или false.

  • ложь Не используйте алгоритм ECM, чтобы обработать значения NaN (исключите значения NaN).

  • tRUE Используйте алгоритм ECM, чтобы обработать значения NaN.

Типы данных: логический

Отметьте указание, которое актив называет, чтобы использовать для списка активов, заданного как пара, разделенная запятой, состоящая из 'GetAssetList' и логического со значением true или false.

  • ложь Не извлекайте или создавайте имена актива.

  • tRUE Извлеките или создайте имена актива из таблицы или расписания.

Если table или timetable передаются в эту функцию с помощью аргумента AssetReturns, и флагом GetAssetList является true, имена столбцов от table или timetable используются в качестве имен актива в obj.AssetList.

Если матрица передается, и флагом GetAssetList является true, имена актива по умолчанию создаются на основе свойства AbstractPortfolio defaultforAssetList, который является 'Asset'.

Если флагом GetAssetList является false, никакое действие не происходит, который является поведением по умолчанию.

Типы данных: логический

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

свернуть все

Обновленный объект портфеля, возвращенный как объект PortfolioCVaR или PortfolioMAD. Для получения дополнительной информации о создании объекта портфеля смотрите

Советы

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

obj = obj.simulateNormalScenariosByData(AssetReturns,NumScenarios,Name,Value);

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