simulateNormalScenariosByData

Симулируйте многомерные сценарии нормального возврата активов из данных

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

Описание

пример

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

пример

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

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

Данные могут быть в NumSamples-by- NumAssets матрица NumSamples цены или возвраты в установленной периодичности для набора NumAssets активы, а table или a 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);

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

Задан объект 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);

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

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

свернуть все

Объект для портфеля, заданный с помощью 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 - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

  • 'Returns' - Данные в AssetReturns содержит общие возвраты активов.

  • 'Prices' - Данные в AssetReturns содержит общие цены возврата активов.

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

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

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

  • true - Использовать алгоритм ECM для обработки NaN значения.

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

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

  • false - Не извлекать и не создавать имена основных средств.

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

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

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

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

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

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

свернуть все

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

Совет

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

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

Введенный в R2012b