exponenta event banner

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 см. раздел Выбор приборов, моделей и прайсеров.

Создание

Описание

пример

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' и числовую матрицу.

  • Для опций Stock-In, Rebate выплачивается по истечении срока действия.

  • Для вариантов выбивания, Rebate выплачивается, если сбит верхний барьер (1) (UB), и второе значение выплачивается, если сбит нижний барьер (2) (LB).

    .

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

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

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

Свойства

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

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

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

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

Типы данных: 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 pricer object и используйте 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 pricer object и используйте 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 pricer object и используйте 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 pricer object и используйте 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 pricer object и используйте 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