simulateNormalScenariosByData

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

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

Описание

пример

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

пример

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

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

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

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

  • NumSamples- 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 значения.

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

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

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

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

Если a 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
Для просмотра документации необходимо авторизоваться на сайте