exponenta event banner

Мертон

Создать 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 object и используйте 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 object и используйте 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