exponenta event banner

Убавляет

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