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 опция put с европейским упражнением. Можно задать несколько аргументы пары "имя-значение".

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

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

Тип инструмента, заданный как строка со значением "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-by- 1 матрица числовых значений, где каждый элемент является 1-by- 2 вектор, где первый столбец является барьером (1) (UB), а второй - барьером (2) (LB). Барьер (1) должен быть больше барьера (2).

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

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

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

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

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

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

Примечание

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

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

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

  • 'DKI' - Double knock-in

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

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

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

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

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

Ценовые 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 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 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 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 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