FloatBondOption

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

Описание

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

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

  2. Использование finmodel задавать HullWhite или BlackKarasinski модель для FloatBondOption инструмент.

  3. Использование finpricer задавать IRTree метод ценообразования для 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'.

Типы данных: char | 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' и скалярное неотрицательное значение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

Инструментальный тип, возвращенный как строка со значением "floatbondoption".

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

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

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

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

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

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

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

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

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

Базовая связь плавающая, возвращенная как FloatBond объект.

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

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

Типы данных: 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:
     FinObj: 'HWFwdTree'
       tObs: [0 0.4959 1 1.4959 2 2.4959 3 3.4986 4.0027 4.4986 5.0027 5.4986]
       dObs: [1x12 datetime]
     CFlowT: {1x12 cell}
      Probs: {1x11 cell}
    Connect: {1x11 cell}
    FwdTree: {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 инструментальный объект, можно использовать 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