Vanilla

Vanilla объект прибора

Описание

Создайте и оцените Vanilla объект инструмента, использующий этот рабочий процесс:

  1. Использовать fininstrument для создания Vanilla объект прибора.

  2. Использовать finmodel для задания BlackScholes, Bachelier, Heston, Bates, Merton, или Dupire модель для Vanilla прибора.

Дополнительные сведения об этом рабочем процессе см. в разделе Запуске с рабочими процессами с использованием объектной среды для ценообразования финансовых инструментов.

Для получения дополнительной информации о доступных моделях и методах ценообразования для Vanilla инструмент, см. «Выбор инструментов», «Модели» и «Цены».

Создание

Описание

пример

VanillaObj = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercise_date) создает Vanilla объект путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" Strike и ExerciseDate. Для получения дополнительной информации о Vanilla инструмент, см. Подробнее о.

пример

VanillaObj = fininstrument(___,Name,Value) устанавливает необязательные свойства с помощью дополнительных пар "имя-значение" в дополнение к необходимым аргументам в предыдущем синтаксисе. Для примера, VanillaObj = fininstrument("Vanilla",'Strike',100,'ExerciseDate',datetime(2019,1,30),'OptionType',"put",'ExerciseStyle',"American",'Name',"vanilla_instrument") создает Vanilla поставьте опцию с американскими упражнениями. Можно задать несколько аргументы пары "имя-значение".

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

расширить все

Тип инструмента, заданный как строка со значением "Vanilla" или вектор символов со значением 'Vanilla'.

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

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

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

Пример: VanillaObj = fininstrument("Vanilla",'Strike',100,'ExerciseDate',datetime(2019,1,30),'OptionType',"put",'ExerciseStyle',"American",'Name',"vanilla_instrument")
Требуемая Vanilla Аргументы в виде пар имя-значение

расширить все

Значение цены доставки опции, заданное как разделенная разделенными запятой парами, состоящая из 'Strike' и скаляр неотрицательное числовое значение.

Примечание

При использовании "Bermudan" ExerciseStyle с FiniteDifference цена, Strike является вектором.

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

Дата выполнения опции, заданная как разделенная разделенными запятой парами, состоящая из 'ExerciseDate' и скалярное значение datetime, серийный номер даты, вектор символов даты или строка даты.

Примечание

Для европейской опции существует только один ExerciseDate на дату истечения срока действия опции.

При использовании "Bermudan" ExerciseStyle с FiniteDifference цена, ExerciseDate является вектором.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что ExerciseDate свойство сохранено как datetime.

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

Необязательные Vanilla Аргументы в виде пар имя-значение

расширить все

Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'OptionType' и скалярную строку или вектор символов.

Примечание

Когда вы используете RollGeskeWhaley прейскурант с Vanilla опция, OptionType должен быть 'call'.

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

Опция стиль упражнения, заданный как разделенная запятой пара, состоящий из 'ExerciseStyle' и скалярную строку или вектор символов.

Примечание

  • Когда вы используете BlackScholes прейскурант с Vanilla опция, 'American' тип опции не поддерживается.

  • Когда вы используете RollGeskeWhaley или BjerksundStensland прейскурант с Vanilla опция, вы должны задать 'American' опция.

  • Когда вы используете NumericalIntegration прейскурант с Bates, Merton, или Heston модель для Vanilla опция, ExerciseStyle должен быть 'European'.

  • Когда вы используете FFT прейскурант с Bates, Merton, или Heston модель для Vanilla опция, ExerciseStyle должен быть 'European'.

  • Когда вы используете AssetMonteCarlo прейскурант с BlackScholes, Bates, Merton, или Heston модель для Vanilla опция, ExerciseStyle можно 'American', 'European', или 'Bermudan'.

  • Когда вы используете FiniteDifference прейскурант с BlackScholes, Bachelier, Dupire, Bates, Merton, или Heston модель для Vanilla опция, ExerciseStyle можно 'American', 'European', или 'Bermudan'.

Для получения дополнительной информации о ExerciseStyle, см. «Поддерживаемые стили упражнений».

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

Определяемое пользователем имя инструмента, заданное как разделенная разделенными запятой парами, состоящая из 'Name' и скалярную строку или вектор символов.

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

Свойства

расширить все

Опциональное значение цены доставки, возвращаемое как скалярное неотрицательное числовое значение.

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

Дата выполнения опции, возвращенная как datetime.

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

Тип опции, возвращенный как строка со значением "call" или "put".

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

Опция стиле упражнения возвращается как строка со значением "European", "American", или "Bermudan".

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

Определяемое пользователем имя инструмента, возвращаемое как строка.

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

Функции объекта

setExercisePolicyУстановите политику упражнений для FixedBondOption, FloatBondOption, или Vanilla инструмент

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить Vanilla инструмент, когда вы используете BlackScholes модель и BlackScholes метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'ExerciseDate',datetime(2018,5,1),'Strike',29,'OptionType',"put",'ExerciseStyle',"european",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "put"
    ExerciseStyle: "european"
     ExerciseDate: 01-May-2018
           Strike: 29
             Name: "vanilla_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes",'Volatility',0.25)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2500
    Correlation: 1

Создание ratecurve Объект

Создайте плоскую ratecurve объект, использующий ratecurve.

Settle = datetime(2018,1,1);
Maturity = datetime(2019,1,1);
Rate = 0.05;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',1)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 1
                Dates: 01-Jan-2019
                Rates: 0.0500
               Settle: 01-Jan-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание BlackScholes Объект прейскуранта

Использование finpricer для создания BlackScholes и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("analytic",'DiscountCurve',myRC,'Model',BlackScholesModel,'SpotPrice',30,'DividendValue',0.045)
outPricer = 
  BlackScholes with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 30
    DividendValue: 0.0450
     DividendType: "continuous"

Ценовые Vanilla Инструмент

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

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

       Results: [1x7 table]
    PricerData: []

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

    1.2046    -0.36943    0.086269    -9.3396    6.4702    -4.0959    -2.3107

Этот пример показывает рабочий процесс, чтобы оценить Vanilla инструмент, когда вы используете BlackScholes модель и AssetTree метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'ExerciseDate',datetime(2018,5,1),'Strike',29,'OptionType',"put",'ExerciseStyle',"european",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "put"
    ExerciseStyle: "european"
     ExerciseDate: 01-May-2018
           Strike: 29
             Name: "vanilla_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes",'Volatility',0.25)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2500
    Correlation: 1

Создание ratecurve Объект

Создайте плоскую ratecurve объект, использующий ratecurve.

Settle = datetime(2018,1,1);
Maturity = datetime(2019,1,1);
Rate = 0.05;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',1)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 1
                Dates: 01-Jan-2019
                Rates: 0.0500
               Settle: 01-Jan-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание AssetTree Объект прейскуранта

Использование finpricer для создания AssetTree объект цены для дерева собственных средств LR и используйте ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

NumPeriods = 15;
LRPricer = finpricer("AssetTree",'DiscountCurve',myRC,'Model',BlackScholesModel,'SpotPrice',50,'PricingMethod',"LeisenReimer",'Maturity',datetime(2018,5,1),'NumPeriods',NumPeriods)
LRPricer = 
  LRTree with properties:

    InversionMethod: PP1
             Strike: 50
               Tree: [1x1 struct]
         NumPeriods: 15
              Model: [1x1 finmodel.BlackScholes]
      DiscountCurve: [1x1 ratecurve]
          SpotPrice: 50
       DividendType: "continuous"
      DividendValue: 0
          TreeDates: [1x15 datetime]

LRPricer.Tree
ans = struct with fields:
    Probs: [2x15 double]
    ATree: {1x16 cell}
     dObs: [1x16 datetime]
     tObs: [1x16 double]

Ценовые Vanilla Инструмент

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

[Price, outPR] = price(LRPricer,VanillaOpt,["all"])
Price = 3.5022e-06
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×7 table
      Price          Delta         Gamma         Vega       Lambda         Rho           Theta   
    __________    ___________    __________    _________    _______    ___________    ___________

    3.5022e-06    -1.9331e-06    1.1068e-06    0.0016243    -30.496    -3.6747e-05    -0.00060106

outPR.PricerData.PriceTree
ans = struct with fields:
     PTree: {1x16 cell}
    ExTree: {1x16 cell}
      tObs: [1x16 double]
      dObs: [1x16 datetime]
     Probs: [2x15 double]

outPR.PricerData.PriceTree.ExTree
ans=1×16 cell array
  Columns 1 through 5

    {[0]}    {[0 0]}    {[0 0 0]}    {[0 0 0 0]}    {[0 0 0 0 0]}

  Columns 6 through 8

    {[0 0 0 0 0 0]}    {[0 0 0 0 0 0 0]}    {[0 0 0 0 0 0 0 0]}

  Columns 9 through 11

    {[0 0 0 0 0 0 0 0 0]}    {[0 0 0 0 0 0 0 0 0 0]}    {1x11 logical}

  Columns 12 through 15

    {1x12 logical}    {1x13 logical}    {1x14 logical}    {1x15 logical}

  Column 16

    {1x16 logical}

Этот пример показывает рабочий процесс, чтобы оценить американскую опцию для Vanilla инструмент, когда вы используете BlackScholes модель и RollGeskeWhaley метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'Strike',105,'ExerciseDate',datetime(2022,9,15),'OptionType',"call",'ExerciseStyle',"american",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes","Volatility",0.2)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2000
    Correlation: 1

Создание 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"

Создание RollGeskeWhaley Объект прейскуранта

Использование finpricer для создания RollGeskeWhaley и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("analytic",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',100,'DividendValue',timetable(datetime(2021,6,15),0.25),'PricingMethod',"RollGeskeWhaley")
outPricer = 
  RollGeskeWhaley with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 100
    DividendValue: [1x1 timetable]
     DividendType: "cash"

Ценовые Vanilla Инструмент

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

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

       Results: [1x7 table]
    PricerData: []

outPR.Results
ans=1×7 table
    Price      Delta       Gamma      Lambda     Vega      Theta      Rho  
    ______    _______    _________    ______    ______    _______    ______

    19.907    0.66568    0.0090971    3.344     72.804    -3.4537    186.68

Этот пример показывает рабочий процесс, чтобы оценить Vanilla инструмент для иностранной валюты (FX) при использовании BlackScholes модель и BlackScholes метод ценообразования. Предположим, что текущий обменный курс составляет $0,52 и имеет волатильность 12% годовых. В годовом исчислении постоянно сложившаяся иностранная безрисковая ставка составляет 8% годовых.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'ExerciseDate',datetime(2022,9,15),'Strike',.50,'OptionType',"put",'ExerciseStyle',"european",'Name',"vanilla_fx_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "put"
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2022
           Strike: 0.5000
             Name: "vanilla_fx_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

Sigma = .12;
BlackScholesModel = finmodel("BlackScholes","Volatility",Sigma)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.1200
    Correlation: 1

Создание 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"

Создание BlackScholes Объект прейскуранта

Использование finpricer для создания BlackScholes и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение". При ценообразовании валюты с помощью Vanilla инструмент, DividendType должен быть 'continuous' и DividendValue - годовая процентная ставка без риска в иностранной стране.

ForeignRate = 0.08;
outPricer = finpricer("analytic",'DiscountCurve',myRC,'Model',BlackScholesModel,'SpotPrice',.52,'DividendType',"continuous",'DividendValue',ForeignRate)
outPricer = 
  BlackScholes with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 0.5200
    DividendValue: 0.0800
     DividendType: "continuous"

Ценовые Vanilla FX КИП

Использование price вычислить цену и чувствительность для Vanilla Прибор FX.

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

       Results: [1x7 table]
    PricerData: []

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

    0.073778    -0.49349    2.0818    -4.7899    0.27021    -1.3216    -0.013019

Этот пример показывает рабочий процесс, чтобы оценить американскую опцию для Vanilla инструмент, когда вы используете BlackScholes модель и AssetMonteCarlo метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'Strike',105,'ExerciseDate',datetime(2022,9,15),'OptionType',"call",'ExerciseStyle',"american",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes","Volatility",0.2)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2000
    Correlation: 1

Создание 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",BlackScholesModel,'SpotPrice',150,'simulationDates',datetime(2022,9,15))
outPricer = 
  GBMMonteCarlo with properties:

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

Ценовые Vanilla Инструмент

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

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

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×7 table
    Price      Delta       Gamma      Lambda     Rho       Theta      Vega 
    ______    _______    _________    ______    ______    _______    ______

    61.201    0.93074    0.0027813    2.2812    313.95    -3.7909    41.626

Этот пример показывает рабочий процесс, чтобы оценить американскую опцию для Vanilla инструмент, когда вы используете Heston модель и AssetMonteCarlo метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'Strike',105,'ExerciseDate',datetime(2022,9,15),'OptionType',"call",'ExerciseStyle',"american",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

Создание Heston Объект модели

Использование finmodel для создания Heston объект модели.

HestonModel = finmodel("Heston",'V0',0.032,'ThetaV',0.07,'Kappa',0.003,'SigmaV',0.02,'RhoSV',0.09)
HestonModel = 
  Heston with properties:

        V0: 0.0320
    ThetaV: 0.0700
     Kappa: 0.0030
    SigmaV: 0.0200
     RhoSV: 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"

Создание AssetMonteCarlo Объект прейскуранта

Использование finpricer для создания AssetMonteCarlo и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",HestonModel,'SpotPrice',150,'simulationDates',datetime(2022,9,15))
outPricer = 
  HestonMonteCarlo with properties:

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

Ценовые Vanilla Инструмент

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

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

       Results: [1x8 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×8 table
    Price      Delta       Gamma      Lambda     Rho       Theta      Vega     VegaLT 
    ______    _______    _________    ______    ______    _______    ______    _______

    60.564    0.94774    0.0011954    2.3473    326.36    -3.7126    35.272    0.31155

Этот пример показывает рабочий процесс, чтобы оценить опцию Бермудских островов для Vanilla инструмент, когда вы используете BlackScholes модель и FiniteDifference метод ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

VanillaOpt = fininstrument("Vanilla",'Strike',[110,120],'ExerciseDate',[datetime(2022,9,15) ; datetime(2023,9,15)],'OptionType',"call",'ExerciseStyle',"Bermudan",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "bermudan"
     ExerciseDate: [15-Sep-2022    15-Sep-2023]
           Strike: [110 120]
             Name: "vanilla_option"

Создание BlackScholes Объект модели

Использование finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes","Volatility",0.2)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.2000
    Correlation: 1

Создание 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"

Создание FiniteDifference Объект прейскуранта

Использование finpricer для создания FiniteDifference и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("FiniteDifference",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',100)
outPricer = 
  FiniteDifference with properties:

     DiscountCurve: [1x1 ratecurve]
             Model: [1x1 finmodel.BlackScholes]
         SpotPrice: 100
    GridProperties: [1x1 struct]
      DividendType: "continuous"
     DividendValue: 0

Ценовые Vanilla Инструмент

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

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

       Results: [1x7 table]
    PricerData: [1x1 struct]

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

    18.68    0.62163    0.0091406    3.3278    -3.3154    184.31    83.162

Этот пример показывает рабочий процесс, чтобы оценить Vanilla инструмент, когда вы используете Heston модель и различные методы ценообразования.

Создание Vanilla Объект прибора

Использование fininstrument для создания Vanilla объект прибора.

Settle = datetime(2017,6,29);
Maturity = datemnth(Settle,6);
Strike = 80;
VanillaOpt = fininstrument('Vanilla','ExerciseDate',Maturity,'Strike',Strike,'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "european"
     ExerciseDate: 29-Dec-2017
           Strike: 80
             Name: "vanilla_option"

Создание Heston Объект модели

Использование finmodel для создания Heston объект модели.

V0 = 0.04;
ThetaV = 0.05;
Kappa = 1.0;
SigmaV = 0.2;
RhoSV = -0.7;

HestonModel = finmodel("Heston",'V0',V0,'ThetaV',ThetaV,'Kappa',Kappa,'SigmaV',SigmaV,'RhoSV',RhoSV)
HestonModel = 
  Heston with properties:

        V0: 0.0400
    ThetaV: 0.0500
     Kappa: 1
    SigmaV: 0.2000
     RhoSV: -0.7000

Создание ratecurve объект

Создайте ratecurve объект, использующий ratecurve.

Rate = 0.03;
ZeroCurve = ratecurve('zero',Settle,Maturity,Rate);

Создание NumericalIntegration, FFT, и FiniteDifference Объекты прейскуранта

Использование finpricer для создания NumericalIntegration, FFT, и FiniteDifference Ценовые объекты и используйте ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

SpotPrice = 80;
Strike = 80;
DividendYield = 0.02;

NIPricer = finpricer("NumericalIntegration",'Model', HestonModel,'SpotPrice',SpotPrice,'DiscountCurve',ZeroCurve,'DividendValue',DividendYield)
NIPricer = 
  NumericalIntegration with properties:

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

FFTPricer = finpricer("FFT",'Model',HestonModel, ...
    'SpotPrice',SpotPrice,'DiscountCurve',ZeroCurve, ...
    'DividendValue',DividendYield,'NumFFT',8192)
FFTPricer = 
  FFT with properties:

                    Model: [1x1 finmodel.Heston]
            DiscountCurve: [1x1 ratecurve]
                SpotPrice: 80
             DividendType: "continuous"
            DividendValue: 0.0200
                   NumFFT: 8192
    CharacteristicFcnStep: 0.0100
            LogStrikeStep: 0.0767
        CharacteristicFcn: @characteristicFcnHeston
            DampingFactor: 1.5000
               Quadrature: "simpson"
           VolRiskPremium: 0
               LittleTrap: 1

FDPricer = finpricer("FiniteDifference",'Model',HestonModel,'SpotPrice',SpotPrice,'DiscountCurve',ZeroCurve,'DividendValue',DividendYield)
FDPricer = 
  FiniteDifference with properties:

     DiscountCurve: [1x1 ratecurve]
             Model: [1x1 finmodel.Heston]
         SpotPrice: 80
    GridProperties: [1x1 struct]
      DividendType: "continuous"
     DividendValue: 0.0200

Ценовые Vanilla Инструмент

Используйте следующие чувствительности при расчете цены на Vanilla прибора.

InpSensitivity = ["delta", "gamma", "theta", "rho", "vega", "vegalt"];

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

[PriceNI,  outPR_NI]  = price(NIPricer,VanillaOpt,InpSensitivity)
PriceNI = 4.7007
outPR_NI = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

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

[PriceFFT, outPR_FFT] = price(FFTPricer,VanillaOpt,InpSensitivity)
PriceFFT = 4.7007
outPR_FFT = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

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

[PriceFD,  outPR_FD]  = price(FDPricer,VanillaOpt,InpSensitivity)
PriceFD = 4.7003
outPR_FD = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

Агрегируйте результаты цены.

[outPR_NI.Results;outPR_FFT.Results;outPR_FD.Results]
ans=3×7 table
    Price      Delta      Gamma       Theta      Rho       Vega     VegaLT
    ______    _______    ________    _______    ______    ______    ______

    4.7007    0.57747     0.03392    -4.8474    20.805    17.028    5.2394
    4.7007    0.57747     0.03392    -4.8474    20.805    17.028    5.2394
    4.7003    0.57722    0.035254    -4.8483    20.801    17.046    5.2422

Вычисление Опции ценовых поверхностей

Используйте price функция для NumericalIntegration ценник и price функция для FFT прейскурант для вычисления цен для области значений Vanilla приборы.

Maturities = datemnth(Settle,(3:3:24)');
NumMaturities = length(Maturities);
Strikes = (20:10:160)';
NumStrikes = length(Strikes);

[Maturities_Full,Strikes_Full] = meshgrid(Maturities,Strikes);

NumInst = numel(Strikes_Full);
VanillaOptions(NumInst, 1) = fininstrument("vanilla",...
    "ExerciseDate", Maturities_Full(1), "Strike", Strikes_Full(1));
for instidx=1:NumInst
    VanillaOptions(instidx) = fininstrument("vanilla",...
        "ExerciseDate", Maturities_Full(instidx), "Strike", Strikes_Full(instidx));
end

Prices_NI = price(NIPricer, VanillaOptions);
Prices_FFT = price(FFTPricer, VanillaOptions);

figure;
surf(Maturities_Full,Strikes_Full,reshape(Prices_NI,[NumStrikes,NumMaturities]));
title('Price (Numerical Integration)');
view(-112,34);
xlabel('Maturity')
ylabel('Strike')

Figure contains an axes. The axes with title Price (Numerical Integration) contains an object of type surface.

figure;
surf(Maturities_Full,Strikes_Full,reshape(Prices_FFT,[NumStrikes,NumMaturities]));
title('Price (FFT)');
view(-112,34);
xlabel('Maturity')
ylabel('Strike')

Figure contains an axes. The axes with title Price (FFT) contains an object of type surface.

Подробнее о

расширить все

Совет

После создания Vanilla объект инструмента, вы можете использовать setExercisePolicy для изменения размера опций. Для примера, если у вас есть следующий инструмент:

VanillaOpt = fininstrument("Vanilla",'ExerciseDate',datetime(2021,5,1),'Strike',29,'OptionType',"put",'ExerciseStyle',"European")
Как изменить Vanilla размер инструмента путем изменения ExerciseStyle от "European" на "American", использование setExercisePolicy:
VanillaOpt = setExercisePolicy(VanillaOpt,[datetime(2021,1,1) datetime(2022,1,1)],100,'American')

Введенный в R2020a