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

Создание

Описание

пример

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