Merton

Создайте Merton объект модели для Vanilla, Asian, Barrier, DoubleBarrier, Lookback, OneTouch, DoubleTouch, или Binary инструмент

Описание

Создайте и оцените Vanilla, Asian, Barrier, DoubleBarrier, Lookback, Touch, DoubleTouch, или Binary инструментальный объект с Merton модель с помощью этого рабочего процесса:

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

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

  3. Использование finpricer задавать FiniteDifference, NumericalIntegration, или FFT метод ценообразования для Vanilla инструмент.

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

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

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

Создание

Описание

пример

MertonModelObj = finmodel(ModelType,'Volatility',volatility_value,'MeanJ',meanj_value,'JumpVol',jumpvol_value,'JumpFreq',jumpfreq_value) создает Merton объект модели путем определения ModelType и необходимые аргументы пары "имя-значение" MeanJ, JumpVol, и JumpFreq установить аргументы пары "имя-значение" использования свойств. Например, MertonModelObj = finmodel("Merton",'Volatility',0.03,'MeanJ',0.22,'JumpVol',0.007,'JumpFreq',0.009) создает Merton объект модели.

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

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

Тип модели в виде строки со значением "Merton" или вектор символов со значением 'Merton'.

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

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

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

Пример: MertonModelObj = finmodel("Merton",'Volatility',0.03,'MeanJ',0.22,'JumpVol',0.007,'JumpFreq',0.009)

Значение энергозависимости для базового актива в виде разделенной запятой пары, состоящей из 'Volatility' и скаляр, неотрицательный числовой.

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

Среднее значение случайного размера скачка процента (J) в виде разделенной запятой пары, состоящей из 'MeanJ' и скалярное десятичное значение, где log(1+J) нормально распределено со средним значением (log(1+MeanJ)-0.5*JumpVol^2) и стандартное отклонение JumpVol.

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

Стандартное отклонение log(1+J), где J случайный размер скачка процента в виде разделенной запятой пары, состоящей из 'JumpVol' и скалярное десятичное значение.

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

Ежегодная частота процесса скачка Пуассона в виде разделенной запятой пары, состоящей из 'JumpFreq' и скалярное числовое значение.

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

Свойства

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

Значение энергозависимости, возвращенное как скаляр, неотрицательный числовой.

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

Среднее значение случайного размера скачка процента (J), возвращенный как скалярное десятичное значение.

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

Стандартное отклонение log(1+J), где J случайный размер скачка процента, возвращенный как скалярное десятичное значение.

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

Ежегодная частота процесса скачка Пуассона, возвращенного как скалярное числовое значение.

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

Примеры

свернуть все

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

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

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

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

       OptionType: "put"
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

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

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

MertonModel = finmodel("Merton",'Volatility',0.45,'MeanJ',0.02,'JumpVol',0.07,'JumpFreq',0.09)
MertonModel = 
  Merton with properties:

    Volatility: 0.4500
         MeanJ: 0.0200
       JumpVol: 0.0700
      JumpFreq: 0.0900

Создайте 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"

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

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

outPricer = finpricer("numericalintegration",'DiscountCurve',myRC,'Model',MertonModel,'SpotPrice',100,'DividendValue',0.45,'VolRiskPremium',0.09,'LittleTrap',false,'AbsTol',0.5,'RelTol',0.04,'Framework','lewis2001')
outPricer = 
  NumericalIntegration with properties:

                Model: [1x1 finmodel.Merton]
        DiscountCurve: [1x1 ratecurve]
            SpotPrice: 100
         DividendType: "continuous"
        DividendValue: 0.4500
               AbsTol: 0.5000
               RelTol: 0.0400
     IntegrationRange: [1.0000e-09 Inf]
    CharacteristicFcn: @characteristicFcnMerton76
            Framework: "lewis2001"
       VolRiskPremium: 0.0900
           LittleTrap: 0

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

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

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

       Results: [1x6 table]
    PricerData: []

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

    75.114    -0.15305    0.00025732    -3.9836    -361.67    4.6317

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

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

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

BinaryOpt = fininstrument("Binary",'ExerciseDate',datetime(2022,9,15),'Strike',100,'PayoffValue',130,'OptionType',"put",'Name',"binary_option")
BinaryOpt = 
  Binary with properties:

       OptionType: "put"
     ExerciseDate: 15-Sep-2022
           Strike: 100
      PayoffValue: 130
    ExerciseStyle: "european"
             Name: "binary_option"

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

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

MertonModel = finmodel("Merton",'Volatility',0.25,'MeanJ',0.02,'JumpVol',0.07,'JumpFreq',0.09)
MertonModel = 
  Merton with properties:

    Volatility: 0.2500
         MeanJ: 0.0200
       JumpVol: 0.0700
      JumpFreq: 0.0900

Создайте 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"

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

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

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",MertonModel,'SpotPrice',102,'simulationDates',datetime(2022,9,15))
outPricer = 
  MertonMonteCarlo with properties:

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

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

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

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

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

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

    53.231    -0.831    0.54314    -1.5924    -212.88    1.8643     0  

Введенный в R2020a