DoubleBarrier

DoubleBarrier инструментальный объект

Описание

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

  1. Использование fininstrument создать DoubleBarrier инструментальный объект.

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

    • При использовании BlackScholes модель, использовать finpricer задавать IkedaKunitomo или VannaVolga метод ценообразования для DoubleBarrier инструмент.

    • При использовании BlackScholes, Heston, Bates, или Merton модель, использовать finpricer задавать FiniteDifference или AssetMonteCarlo метод ценообразования для DoubleBarrier инструмент.

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

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

Создание

Описание

пример

DoubleBarrierOpt = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercise_date,'BarrierValue',barrier_value) создает DoubleBarrier объект путем определения InstrumentType и свойства наборов с помощью необходимых аргументов пары "имя-значение" Strike, ExerciseDate, и BarrierValue.

пример

DoubleBarrierOpt = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных аргументов пары "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2019,1,30),'BarrierValue',110,'OptionType',"put",'ExerciseStyle',"European",'BarrierType',"DKI",'Name',"doublebarrier_option") создает DoubleBarrier пут-опцион с европейским осуществлением. Можно задать несколько аргументов пары "имя-значение".

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

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

Инструментальный тип в виде строки со значением "DoubleBarrier" или вектор символов со значением 'DoubleBarrier'.

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

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

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

Пример: DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2019,1,30),'BarrierValue',110,'OptionType',"put",'ExerciseStyle',"European",'BarrierType',"DKI",'Name',"doublebarrier_option")
Необходимый DoubleBarrier Аргументы в виде пар имя-значение

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

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

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

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

Примечание

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

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

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

Двойное значение барьера в виде разделенной запятой пары, состоящей из 'BarrierValue' и NINST- 1 матрица числовых значений, где каждым элементом является 1- 2 вектором, где первым столбцом является Барьер (1) (UB) и второй столбец, является Барьер (2) (LB). Барьер (1) должен быть больше Барьера (2).

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

Дополнительный DoubleBarrier Аргументы в виде пар имя-значение

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

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

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

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

Примечание

Для DoubleBarrier опция, IkedaKunitomo калькулятор цен поддерживает только "European" тренируйтесь и FiniteDifference калькулятор цен поддерживает "American" или "European" осуществление.

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

Двойной тип барьера в виде разделенной запятой пары, состоящей из 'BarrierType' и скалярный вектор символов или строка с одним из следующих значений:

  • 'DKI' — Двойной удар - в

    'DKI' опция вступает в силу, когда цена базового актива достигает одного из барьеров. Это дает держателю опции право, но не обязательство купить или продать базовый актив по цене исполнения опциона, если базовый актив идет выше или ниже уровней барьера во время жизни опции.

  • 'DKO' — Двойной нокаут

    'DKO' опция дает держателю опции право, но не обязательство купить или продать базовый актив по цене исполнения опциона, пока базовый актив остается между уровнями барьера во время жизни опции. Эта опция завершает работу, когда цена базового актива передает один из барьеров.

ОпцияТип барьераВыплата, если любой пересеченный барьерВыплата, если барьеры, не пересеченные
Вызвать/ПоместитьДвойной удар - вСтандарт вызывает/ПомещаетБесполезный
Вызвать/ПоместитьДвойной нокаутБесполезныйСтандарт вызывает/Помещает

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

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

  • Для удара - в опциях, Rebate заплачен при истечении.

  • Для опций нокаута, Rebate заплачен, если Верхний Барьер (1) (UB) поражен, и вторая стоимость возмещена, если Более низкий Барьер (2) (LB) поражен.

    .

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

Стиль осуществления опции, возвращенный как строка со значением "European" или "American".

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

Двойной тип барьера, возвращенный как вектор символов или строка.

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

Уступка барьера, возвращенная как числовая матрица.

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

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

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

Примеры

свернуть все

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

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',75,'ExerciseDate',datetime(2019,1,1),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 75
     BarrierValue: [110 80]
    ExerciseStyle: "american"
     ExerciseDate: 01-Jan-2019
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

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

     Volatility: 0.3000
    Correlation: 1

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

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

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

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

Создайте FiniteDifference Объект калькулятора цен

Используйте finpricer создать FiniteDifference объект калькулятора цен и использование 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

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

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

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

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

outPR.Results
ans=1×7 table
    Price    Delta    Gamma    Lambda      Theta       Rho    Vega
    _____    _____    _____    ______    __________    ___    ____

     25        1        0        4       2.2737e-13     0      0  

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

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',75,'ExerciseDate',datetime(2020,9,15),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 75
     BarrierValue: [110 80]
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

HestonModel = finmodel("Heston",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.2,'RhoSV',0.9)
HestonModel = 
  Heston with properties:

        V0: 0.0320
    ThetaV: 0.1000
     Kappa: 0.0030
    SigmaV: 0.2000
     RhoSV: 0.9000

Создайте 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",HestonModel,'SpotPrice',102,'simulationDates',datetime(2020,9,15))
outPricer = 
  HestonMonteCarlo with properties:

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

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

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

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

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

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

    32.635    -0.00089196    -0.0025511    -0.0027878    -76.828    1.1334    -0.2616    -0.002986

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

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "american"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

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

     Volatility: 0.3000
    Correlation: 1

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

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

Settle = datetime(2017,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-2017
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте AssetMonteCarlo Объект калькулятора цен

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

ExerciseDate = datetime(2020,08,15);
Settle = datetime("15-Sep-2017");
outPricer = finpricer("AssetMonteCarlo","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'simulationDates', Settle+days(1):days(1):ExerciseDate);

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

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

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

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

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

    6.9563    0.23644    -0.11701    3.399     0.14976    -99.727    -8.344

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

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"European",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "european"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

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

     Volatility: 0.3000
    Correlation: 1

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

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

Settle = datetime(2017,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-2017
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте IkedaKunitomo Объект калькулятора цен

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

outPricer = finpricer("Analytic","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'Curvature',[0.03 -0.03],'DividendValue',0.029,"PricingMethod","IkedaKunitomo")
outPricer = 
  IkedaKunitomo with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 100
    DividendValue: 0.0290
     DividendType: "continuous"
        Curvature: [0.0300 -0.0300]

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

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

[Price, outPR] = price(outPricer,DoubleBarrierOpt,["all"])
Price = 5.6848e-04
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

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

    0.00056848    -3.7713e-05    -4.2071e-06    -6.6339    -0.031332    0.0008912    -0.00035113

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

Создайте DoubleBarrier Инструментальный объект

Используйте fininstrument создать DoubleBarrier инструментальный объект.

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"European",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "european"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

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

     Volatility: 0.0200
    Correlation: 1

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

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

Settle = datetime(2019,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-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте VannaVolga Объект калькулятора цен

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

VolRR = -0.0045;
VolBF = 0.0037;
RateF = 0.0210;
outPricer = finpricer("VannaVolga","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'DividendValue',RateF,'VolatilityRR',VolRR,'VolatilityBF',VolBF)
outPricer = 
  VannaVolga with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: 100
     DividendType: "continuous"
    DividendValue: 0.0210
     VolatilityRR: -0.0045
     VolatilityBF: 0.0037

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

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

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

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

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

    1.645    0.82818    75.662    50.346    14.697    -1.3145    74.666

Больше о

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

Советы

После создания DoubleBarrier инструментальный объект с ExerciseStyle установите на "American", можно изменить ExerciseStyle свойство изменить его в "European" использование записи через точку.

DoubleBarrier.ExerciseStyle = "European"
Поскольку европейская опция имеет скалярный Strike и ExerciseDate значение и американская опция имеют вектор с 2 элементами для Strike и ExerciseDate значения, когда вы превращаетесь в ExerciseStyle от "American" к "European", Strike и ExerciseDate значения становятся последним элементом в векторе с 2 элементами для Strike и ExerciseDate значения.

Введенный в R2020b