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, Binary, 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 инструмент, см. «Выбор инструментов», «Модели» и «Цены».

Создание

Описание

пример

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 и используйте объект pricer 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 и используйте объект pricer 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