FloatBondOption

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

Описание

Создайте и оцените FloatBondOption инструментальный объект для одного или нескольких инструментов Опции Связи Плавающих с помощью этого рабочего процесса:

  1. Использование fininstrument создать FloatBondOption инструментальный объект для одного или нескольких инструментов Опции Связи Плавающих.

  2. Использование finmodel задавать HullWhite, BlackKarasinski, BraceGatarekMusiela, SABRBraceGatarekMusiela, или LinearGaussian2F модель для FloatBondOption инструментальный объект.

  3. Выберите метод ценообразования.

    • При использовании HullWhite или BlackKarasinski модель, использовать finpricer задавать IRTree метод ценообразования для одного или нескольких FloatBondOption инструменты.

    • При использовании HullWhite, BraceGatarekMusiela, SABRBraceGatarekMusiela, или LinearGaussian2F модель, использовать finpricer задавать IRMonteCarlo метод ценообразования для одного или нескольких FloatBondOption инструменты.

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

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

Создание

Описание

пример

FloatBondOptionObj = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercise_date,'Bond',bond_obj) создает FloatBond объект для одного или нескольких инструментов Опции Связи Плавающих путем определения InstrumentType и свойства наборов с помощью необходимых аргументов пары "имя-значение" Strike, ExerciseDate, и Bond.

пример

FloatBondOptionObj = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных аргументов пары "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, FloatBondOptionObj = fininstrument("FloatBondOption",'Strike',100,'ExerciseDate',datetime(2019,1,30),'Bond',bond_obj,'OptionType','put','ExerciseStyle',"american",'Name',"float_bond_option") создает FloatBondOption инструмент с забастовкой 100 и американское осуществление. Можно задать несколько аргументов пары "имя-значение".

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

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

Инструментальный тип в виде строки со значением "FloatBondOption", вектор символов со значением 'FloatBondOption', NINST- 1 массив строк со значениями "FloatBondOption", или NINST- 1 массив ячеек из символьных векторов со значениями 'FloatBondOption'.

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

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

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

Пример: FloatBondOptionObj = fininstrument("FloatBondOption",'Strike',100,'ExerciseDate',datetime(2019,1,30),'Bond',bond_obj,'OptionType','put','ExerciseStyle',"american",'Name',"float_bond_option")
Необходимый FloatBondOption Аргументы в виде пар имя-значение

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

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

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

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

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

  • Для бермудской опции существует 1- NSTRIKES вектор из дат осуществления.

  • Для американской опции опция может быть осуществлена между ValuationDate из дерева запаса и одного перечисленного ExerciseDate.

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

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

Базовая связь плавающая в виде разделенной запятой пары, состоящей из 'Bond' и имя FloatBond возразите или NINST- 1 вектор из FloatBond объекты.

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

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

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

Определение опции в виде разделенной запятой пары, состоящей из 'OptionType' и скалярный вектор символов или строка или NINST- 1 массив ячеек из символьных векторов или массив строк с помощью 'call' или 'put'.

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

Тип опции в виде разделенной запятой пары, состоящей из 'ExerciseStyle' и скалярный вектор символов или строка или NINST- 1 массив ячеек из символьных векторов или массив строк.

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

Пользовательское имя для одного из большего количества инструментов в виде разделенной запятой пары, состоящей из 'Name' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.

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

Свойства

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

Инструментальный тип, возвращенный как скалярная строка или NINST- 1 массив строк.

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

Значение забастовки опции, возвращенное как скалярное неотрицательное значение или NINST- 1 вектор из неотрицательных значений.

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

Дата осуществления опции, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

Определение опции, возвращенной как скалярная строка или NINST- 1 массив строк.

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

Тип опции, возвращенный как скалярная строка или NINST- 1 массив строк.

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

Базовая связь плавающая, возвращенная как скалярный FloatBond возразите или NINST- 1 вектор из FloatBond объекты.

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

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

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

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

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

Примеры

свернуть все

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

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

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

BondInst = fininstrument("FloatBond",'Maturity',datetime(2030,9,15),'Spread',0.021,'Name',"bond_instrument")
BondInst = 
  FloatBond with properties:

                      Spread: 0.0210
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
          LatestFloatingRate: NaN
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2030
                        Name: "bond_instrument"

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

Используйте fininstrument создать три вызываемых FloatBondOption инструмент возражает с европейцем, американцем и бермудским осуществлением.

FloatBOptionEuro = fininstrument("FloatBondOption",'ExerciseDate',datetime(2029,9,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"european",'Name',"float_bond_option_european")
FloatBOptionEuro = 
  FloatBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2029
           Strike: 98
             Bond: [1x1 fininstrument.FloatBond]
             Name: "float_bond_option_european"

FloatBOptionAmerican = fininstrument("FloatBondOption",'ExerciseDate',datetime(2029,9,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"american",'Name',"float_bond_option_american")
FloatBOptionAmerican = 
  FloatBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2029
           Strike: 98
             Bond: [1x1 fininstrument.FloatBond]
             Name: "float_bond_option_american"

FloatBOptionBermudan = fininstrument("FloatBondOption",'ExerciseDate',[datetime(2025,9,15) , datetime(2029,09,15)],'Strike',[98,100],'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"bermudan",'Name',"float_bond_option_bermudan")
FloatBOptionBermudan = 
  FloatBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "bermudan"
     ExerciseDate: [15-Sep-2025    15-Sep-2029]
           Strike: [98 100]
             Bond: [1x1 fininstrument.FloatBond]
             Name: "float_bond_option_bermudan"

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

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

Settle = datetime(2024,9,15);
Type = 'zero';
ZeroTimes = [calyears([1:10])]';
ZeroRates = [0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307 0.0310]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2024
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.01,'Sigma',0.05)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.0100
    Sigma: 0.0500

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

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

CFdates = cfdates(Settle, BondInst.Maturity, BondInst.Reset, BondInst.Basis);
HWTreePricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',CFdates')
HWTreePricer = 
  HWBKTree with properties:

             Tree: [1x1 struct]
        TreeDates: [12x1 datetime]
            Model: [1x1 finmodel.HullWhite]
    DiscountCurve: [1x1 ratecurve]

HWTreePricer.Tree
ans = struct with fields:
        tObs: [0 0.4959 1 1.4959 2 2.4959 3 3.4986 4.0027 4.4986 5.0027 ... ]
        dObs: [15-Sep-2024    15-Mar-2025    15-Sep-2025    ...    ]
      CFlowT: {1x12 cell}
       Probs: {1x11 cell}
     Connect: {1x11 cell}
     FwdTree: {1x12 cell}
    RateTree: {1x12 cell}

Цена FixedBondOption Инструменты

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

[Price, outPR] = price(HWTreePricer,FloatBOptionEuro,["all"])
Price = 3.8040
outPR = 
  priceresult with properties:

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

outPR.Results
ans=1×4 table
    Price       Vega        Gamma      Delta 
    _____    ___________    ______    _______

    3.804    -2.6645e-11    110.75    -20.465

[Price, outPR] = price(HWTreePricer,FloatBOptionAmerican,["all"])
Price = 14.1700
outPR = 
  priceresult with properties:

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

outPR.Results
ans=1×4 table
    Price    Vega    Gamma      Delta 
    _____    ____    ______    _______

    14.17     0      160.87    -38.981

[Price, outPR] = price(HWTreePricer,FloatBOptionBermudan,["all"])
Price = 12.0676
outPR = 
  priceresult with properties:

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

outPR.Results
ans=1×4 table
    Price        Vega        Gamma      Delta 
    ______    ___________    ______    _______

    12.068    -2.8422e-10    161.55    -39.402

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

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

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

BondInst = fininstrument("FloatBond",'Maturity',datetime(2030,9,15),'Spread',0.021,'Name',"bond_instrument")
BondInst = 
  FloatBond with properties:

                      Spread: 0.0210
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
          LatestFloatingRate: NaN
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2030
                        Name: "bond_instrument"

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

Используйте fininstrument создать FloatBondOption инструментальный объект с европейским осуществлением для трех инструментов Опции Связи Плавающих.

FloatBOptionEuro = fininstrument("FloatBondOption",'ExerciseDate',datetime([2030,9,15 ; 2029,09,15 ; 2028,09,15]),'Strike',[98 ; 99 ; 100],'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"european",'Name',"float_bond_option_european")
FloatBOptionEuro=3×1 object
  3x1 FloatBondOption array with properties:

    OptionType
    ExerciseStyle
    ExerciseDate
    Strike
    Bond
    Name

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

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

Settle = datetime(2024,9,15);
Type = 'zero';
ZeroTimes = [calyears([1:10])]';
ZeroRates = [0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307 0.0310]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2024
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.01,'Sigma',0.05)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.0100
    Sigma: 0.0500

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

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

CFdates = cfdates(Settle, BondInst.Maturity, BondInst.Reset, BondInst.Basis);
HWTreePricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',CFdates')
HWTreePricer = 
  HWBKTree with properties:

             Tree: [1x1 struct]
        TreeDates: [12x1 datetime]
            Model: [1x1 finmodel.HullWhite]
    DiscountCurve: [1x1 ratecurve]

HWTreePricer.Tree
ans = struct with fields:
        tObs: [0 0.4959 1 1.4959 2 2.4959 3 3.4986 4.0027 4.4986 5.0027 ... ]
        dObs: [15-Sep-2024    15-Mar-2025    15-Sep-2025    ...    ]
      CFlowT: {1x12 cell}
       Probs: {1x11 cell}
     Connect: {1x11 cell}
     FwdTree: {1x12 cell}
    RateTree: {1x12 cell}

Цена FixedBondOption Инструменты

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

[Price, outPR] = price(HWTreePricer,FloatBOptionEuro,["all"])
Price = 3×1

    1.8081
    2.8617
    3.9097

outPR=3×1 object
  3x1 priceresult array with properties:

    Results
    PricerData

outPR.Results
ans=1×4 table
    Price        Vega       Gamma      Delta 
    ______    __________    ______    _______

    1.8081    4.4409e-12    65.153    -10.854

ans=1×4 table
    Price        Vega        Gamma      Delta 
    ______    ___________    ______    _______

    2.8617    -1.7764e-11    87.167    -15.751

ans=1×4 table
    Price        Vega        Gamma      Delta 
    ______    ___________    ______    _______

    3.9097    -7.1054e-11    108.64    -20.493

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

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

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

BondInst = fininstrument("FloatBond",'Maturity',datetime(2030,9,15),'Spread',0.021,'Name',"bond_instrument")
BondInst = 
  FloatBond with properties:

                      Spread: 0.0210
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
          LatestFloatingRate: NaN
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2030
                        Name: "bond_instrument"

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

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

FloatBOptionEuro = fininstrument("FloatBondOption",'ExerciseDate',datetime(2020,3,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"european",'Name',"float_bond_option_european")
FloatBOptionEuro = 
  FloatBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "european"
     ExerciseDate: 15-Mar-2020
           Strike: 98
             Bond: [1x1 fininstrument.FloatBond]
             Name: "float_bond_option_european"

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.32,'Sigma',0.49)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.3200
    Sigma: 0.4900

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

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

Settle = datetime(2019,1,1);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

outPricer = finpricer("IRMonteCarlo",'Model',HullWhiteModel,'DiscountCurve',myRC,'SimulationDates',datetime(2019,3,15)+calmonths(0:6:48)')
outPricer = 
  HWMonteCarlo with properties:

          NumTrials: 1000
      RandomNumbers: []
      DiscountCurve: [1x1 ratecurve]
    SimulationDates: [15-Mar-2019    15-Sep-2019    15-Mar-2020    ...    ]
              Model: [1x1 finmodel.HullWhite]

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

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

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

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

outPR.Results
ans=1×4 table
    Price      Delta     Gamma     Vega  
    ______    _______    _____    _______

    18.237    -104.22    788.7    -13.949

Больше о

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

Советы

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

FloatBOption = fininstrument("FloatBondOption",'ExerciseDate',datetime(2029,9,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"European")
Изменить размер FloatBondOption инструментальный объект путем изменения ExerciseStyle от "European" к "American"Использование setExercisePolicy:
FloatBOption = setExercisePolicy(FloatBOption,[datetime(2021,1,1) datetime(2022,1,1)],100,'American')

Введенный в R2020a