AssetMonteCarlo

Создайте AssetMonteCarlo объект калькулятора цен для инструментов акции с помощью BlackScholes, Merton, Heston, или Bates модель

Описание

Создайте и оцените Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouchдвоичный файл инструментальный объект с BlackScholes, Bachelier, Merton, Heston, или Bates модель и AssetMonteCarlo метод ценообразования с помощью этого рабочего процесса:

  1. Использование fininstrument создать Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrierдвоичный файл, Touch, или DoubleTouch инструментальный объект.

  2. Использование finmodel задавать BlackScholes модель для Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

    Использование finmodel задавать Bachelier модель для Vanilla, Spread или Binary инструмент.

    Использование finmodel задавать Merton, Bates, или Heston модель для Vanilla, Barrier, Lookback, Asian, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

  3. Использование finpricer задавать AssetMonteCarlo объект калькулятора цен для Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

Для получения дополнительной информации об этом рабочем процессе смотрите Начало работы с Рабочими процессами Используя Основанную на объектах Среду для Оценки Финансовых инструментов.

Для получения дополнительной информации о доступных инструментах, моделях и методах ценообразования для Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, или Binary инструменты, смотрите, Выбирают Instruments, Models и Pricers.

Создание

Описание

пример

AssetMonteCarloPricerObj = finpricer(PricerType,'Model',model,'DiscountCurve',ratecurve_obj,'SpotPrice',spotprice_value,'SimulationDates',simulation_dates,) создает AssetMonteCarlo объект калькулятора цен путем определения PricerType и устанавливает свойства с помощью необходимых аргументов пары "имя-значение" Model, DiscountCurve, SpotPrice, и SimulationDates.

пример

AssetMonteCarloPricerObj = finpricer(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, AssetMonteCarloPricerObj = finpricer("assetmontecarlo",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',1000,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500,'DividendType','continuous','DividendValue',0.3) создает AssetMonteCarlo объект калькулятора цен использование BlackScholes модель. Можно задать несколько аргументов пары "имя-значение".

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

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

Тип калькулятора цен в виде строки со значением "AssetMonteCarlo" или вектор символов со значением 'AssetMonteCarlo'.

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

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

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

Пример: AssetMonteCarloPricerObj = finpricer("assetmontecarlo",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',1000,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500,'DividendType','continuous','DividendValue',0.3)
Необходимый AssetMonteCarlo Аргументы в виде пар имя-значение

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

Объект модели в виде разделенной запятой пары, состоящей из 'Model' и скалярный вектор символов или строка, содержащая имя ранее созданного BlackScholes, Merton, Bates, или Heston объект модели. Создайте использование объекта модели finmodel.

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

ratecurve объект для дисконтирования потоков наличности в виде разделенной запятой пары, состоящей из 'DiscountCurve' и имя ранее созданного ratecurve объект.

Примечание

Задайте плоский ratecurve объект для DiscountCurve. Если вы используете неплоский ratecurve объект, программное обеспечение использует уровень в ratecurve объект в Maturity и принимает, что значение является постоянным для жизни опции акции.

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

Текущая цена базового актива в виде разделенной запятой пары, состоящей из 'SpotPrice' и скаляр, неотрицательный числовой.

Примечание

Если вы используете Vanillaдвоичный файл, или Spread инструмент с Bachelier модель, SpotPrice может быть отрицательное числовое значение.

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

Даты симуляции в виде разделенной запятой пары, состоящей из 'SimulationDates' и скалярный последовательный номер даты, вектор символов даты, или datetime или вектор из последовательных чисел даты, массива ячеек из символьных векторов, массива строк или массива datetime.

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

Дополнительный AssetMonteCarlo Аргументы в виде пар имя-значение

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

Симуляция испытывает в виде разделенной запятой пары, состоящей из 'NumTrials' и скалярное количество независимых демонстрационных путей.

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

Зависимые случайные варьируемые величины в виде разделенной запятой пары, состоящей из 'RandomNumbers' и NSimulationDates- NBrownians- NTrials 3D массив временных рядов. 3D массив временных рядов имеет следующие поля:

  • ZNSimulationDates- NBrownians- NTrials 3D массив временных рядов зависимых случайных варьируемых величин раньше генерировал вектор Броуновского движения (то есть, Винеровские процессы), которые управляют симуляцией.

  • NNSimulationDates- NBrownians- NTrials 3D массив временных рядов зависимых случайных варьируемых величин, используемых в качестве количества скачков.

  • SizeJNSimulationDates- NBrownians- NTrials 3D массив временных рядов зависимых случайных варьируемых величин используется в качестве размеров скачка.

Примечание

BlackScholes и Heston модели только требуют Z поле .

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

Дивиденд запаса вводит в виде разделенной запятой пары, состоящей из 'DividendType' и вектор символов или строка. DividendType должен быть любой "cash" для фактических долларовых дивидендов или "continuous" для непрерывной дивидендной доходности.

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

Дивидендная доходность для базового запаса в виде разделенной запятой пары, состоящей из 'DividendValue' и скаляр, числовой для дивидендной доходности или расписания для расписания дивиденда.

Примечание

Задайте скаляр если DividendType "continuous" и расписание, если DividendType "cash".

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

Свойства

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

Объект модели, возвращенный как объект.

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

Это свойство доступно только для чтения.

ratecurve объект для дисконтирования потоков наличности, возвращенных как ratecurve объект.

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

Текущая цена базового актива, возвращенного как скаляр, неотрицательный числовой.

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

Даты симуляции, возвращенные как массив datetime.

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

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

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

Зависимые случайные варьируемые величины, возвращенные как NSimulationDates- NBrownians- NTrials 3D массив временных рядов.

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

Вычисление для ранней премии осуществления, возвращенной как указатель скалярной функции. @longstaffschwartz_cubic по умолчанию использует метод наименьших квадратов Лонгштафф-Шварца.

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

Это свойство доступно только для чтения.

Тип дивиденда, возвращенный как строка. DividendType любой "cash" для фактических долларовых дивидендов или "continuous" для непрерывной дивидендной доходности.

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

Дивидендная доходность или дивиденд планируют для базового запаса, возвращенного как скаляр, числовой для дивидендной доходности или расписания для расписания дивиденда.

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

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

priceВычислите цену за инструмент акции с AssetMonteCarlo калькулятор цен

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить DoubleBarrier инструмент, когда вы используете BlackScholes модель и AssetMonteCarlo метод ценообразования.

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "american"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

Создайте BlackScholes Объект модели

Используйте finmodel создать BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes","Volatility",0.3)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.3000
    Correlation: 1

Создайте ratecurve Объект

Создайте плоский ratecurve объект с помощью ratecurve.

Settle = datetime(2017,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2017
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте AssetMonteCarlo Объект калькулятора цен

Используйте finpricer создать AssetMonteCarlo объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

ExerciseDate = datetime(2020,08,15);
Settle = datetime(2017,9,15);
outPricer = finpricer("AssetMonteCarlo","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'simulationDates', Settle+days(1):days(1):ExerciseDate);

Цена DoubleBarrier Инструмент

Используйте price вычислить цену и чувствительность для DoubleBarrier инструмент.

[Price, outPR] = price(outPricer,DoubleBarrierOpt,"all")
Price = 6.9563
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results 
ans=1×7 table
    Price      Delta      Gamma      Lambda      Rho       Theta      Vega 
    ______    _______    ________    ______    _______    _______    ______

    6.9563    0.23644    -0.11701    3.399     0.14976    -99.727    -8.344

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

Создайте Asian Инструментальный объект

Используйте fininstrument создать Asian инструментальный объект.

AsianOpt = fininstrument("Asian",'ExerciseDate',datetime(2022,9,15),'Strike',100,'OptionType',"put",'Name',"asian_option")
AsianOpt = 
  Asian with properties:

          OptionType: "put"
              Strike: 100
         AverageType: "arithmetic"
        AveragePrice: 0
    AverageStartDate: NaT
       ExerciseStyle: "european"
        ExerciseDate: 15-Sep-2022
                Name: "asian_option"

Создайте Heston Объект модели

Используйте finmodel создать Heston объект модели.

HestonModel = finmodel("Heston",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.02,'RhoSV',0.9)
HestonModel = 
  Heston with properties:

        V0: 0.0320
    ThetaV: 0.1000
     Kappa: 0.0030
    SigmaV: 0.0200
     RhoSV: 0.9000

Создайте ratecurve Объект

Создайте плоский ratecurve объект с помощью ratecurve.

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте AssetMonteCarlo Объект калькулятора цен

Используйте finpricer создать AssetMonteCarlo объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",HestonModel,'SpotPrice',80,'simulationDates',Settle+calmonths(1):calmonths(1):datetime(2022,9,15))
outPricer = 
  HestonMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: 80
    SimulationDates: [1x48 datetime]
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.Heston]
       DividendType: "continuous"
      DividendValue: 0

Цена Asian Инструмент

Используйте price вычислить цену и чувствительность для Asian инструмент.

[Price, outPR] = price(outPricer,AsianOpt,"all")
Price = 14.7999
outPR = 
  priceresult with properties:

       Results: [1x8 table]
    PricerData: [1x1 struct]

outPR.Results 
ans=1×8 table
    Price     Delta       Gamma      Lambda       Rho       Theta      Vega     VegaLT 
    _____    ________    ________    _______    _______    _______    ______    _______

    14.8     -0.71073    0.023453    -3.8418    -173.12    0.61794    27.992    0.15319

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

Создайте Vanilla Инструментальный объект

Используйте fininstrument создать Vanilla инструментальный объект.

VanillaOpt = fininstrument("Vanilla",'Strike',105,'ExerciseDate',datetime(2022,9,15),'OptionType',"call",'ExerciseStyle',"american",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

Создайте Bachelier Объект модели

Используйте finmodel создать Bachelier объект модели.

BachelierModel = finmodel("Bachelier","Volatility",0.2)
BachelierModel = 
  Bachelier with properties:

     Volatility: 0.2000
    Correlation: 1

Создайте ratecurve Объект

Создайте плоский ratecurve объект с помощью ratecurve.

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте AssetMonteCarlo Объект калькулятора цен

Используйте finpricer создать AssetMonteCarlo объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",BachelierModel,'SpotPrice',150,'simulationDates',datetime(2022,9,15))
outPricer = 
  BachelierMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: 150
    SimulationDates: 15-Sep-2022
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.Bachelier]
       DividendType: "continuous"
      DividendValue: 0

Цена Vanilla Инструмент

Используйте price вычислить цену и чувствительность для Vanilla инструмент.

[Price, outPR] = price(outPricer,VanillaOpt,["all"])
Price = 57.3776
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×7 table
    Price      Delta       Gamma       Lambda     Rho       Theta        Vega    
    ______    _______    __________    ______    ______    _______    ___________

    57.378    0.99107    -1.579e-14    2.5909    291.94    -2.5576    -2.1316e-10

Введенный в R2020b