Bates

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

Описание

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

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

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

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

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

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

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

Создание

Описание

пример

BatesObj = finmodel(ModelType,'V0',V0_value,'ThetaV',thetav_value,'Kappa',kappa_value,'SigmaV',sigmav_value,'RhoSV',rhosv_value, 'MeanJ',meanj_value, 'JumpVol',jumpvol_value,'JumpFreq',jumpfreq_value) создает Bates объект путем определения ModelType и необходимые аргументы пары "имя-значение" V0, ThetaV\kappa, SigmaV, RhoSV, MeanJ, JumpVol, и JumpFreq. Необходимые аргументы пары "имя-значение" устанавливают свойства. Например, BatesObj = finmodel("Bates",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.2,'RhoSV',0.9,'MeanJ',0.11,'JumpVol',.023,'JumpFreq',0.02) создает Bates объект модели.

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

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

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

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

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

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

Пример: Bates = finmodel("Bates",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.2,'RhoSV',0.9,'MeanJ',0.11,'JumpVol',.023,'JumpFreq',0.02)

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

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

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

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

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

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

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

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

Корреляция между процессами Вайнера для базового актива и его отклонения в виде разделенной запятой пары, состоящей из 'RhoSV' и скалярное числовое значение.

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

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

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

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

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

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

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

Свойства

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

Начальное отклонение базового актива, возвращенного как скалярное числовое значение.

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

Долгосрочное отклонение базового актива, возвращенного как скалярное числовое значение.

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

Средняя скорость версии для базового актива, возвращенного как скалярное числовое значение.

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

Энергозависимость отклонения базового актива, возвращенного как скалярное числовое значение.

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

Корреляция между процессами Вайнера для базового актива и его дисперсии, возвращенной как скалярное числовое значение.

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

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

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

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

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

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

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

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить Vanilla инструмент, когда вы используете Bates модель и 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"

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

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

BatesModel = finmodel("Bates",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.2,'RhoSV',0.9,'MeanJ',0.11,'JumpVol',.023,'JumpFreq',0.02)
BatesModel = 
  Bates with properties:

          V0: 0.0320
      ThetaV: 0.1000
       Kappa: 0.0030
      SigmaV: 0.2000
       RhoSV: 0.9000
       MeanJ: 0.1100
     JumpVol: 0.0230
    JumpFreq: 0.0200

Создайте 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',BatesModel,'SpotPrice',100)
outPricer = 
  NumericalIntegration with properties:

                Model: [1x1 finmodel.Bates]
        DiscountCurve: [1x1 ratecurve]
            SpotPrice: 100
         DividendType: "continuous"
        DividendValue: 0
               AbsTol: 1.0000e-10
               RelTol: 1.0000e-10
     IntegrationRange: [1.0000e-09 Inf]
    CharacteristicFcn: @characteristicFcnBates
            Framework: "heston1993"
       VolRiskPremium: 0
           LittleTrap: 1

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

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

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

       Results: [1x7 table]
    PricerData: []

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

    6.4007    -0.53541    0.02006    1.106    -239.77    94.257    1.3059

Этот пример показывает рабочий процесс, чтобы оценить фиксированную забастовку Asian инструмент, когда вы используете Bates модель и 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"

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

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

BatesModel = finmodel("Bates",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.02,'RhoSV',0.9,'MeanJ',0.11,'JumpVol',.023,'JumpFreq',0.02)
BatesModel = 
  Bates with properties:

          V0: 0.0320
      ThetaV: 0.1000
       Kappa: 0.0030
      SigmaV: 0.0200
       RhoSV: 0.9000
       MeanJ: 0.1100
     JumpVol: 0.0230
    JumpFreq: 0.0200

Создайте 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",BatesModel,'SpotPrice',80,'simulationDates',datetime(2022,9,15))
outPricer = 
  BatesMonteCarlo with properties:

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

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

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

[Price, outPR] = price(outPricer,AsianOpt,["all"])
Price = 14.5689
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.569    -0.7137    0.0137    -3.919    -172.1    0.77965    26.779    0.2576

Введенный в R2020a