exponenta event banner

FloatBondOption

FloatBondOption объект прибора

Описание

Создать и оценить FloatBondOption объект инструмента с использованием этого рабочего процесса:

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

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

  3. Использовать finpricer для указания IRTree метод ценообразования для FloatBondOption инструмент.

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

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

Создание

Описание

пример

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

Определение параметра, возвращаемого в виде строки со значением "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 pricer object и используйте 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: [1x12 double]
        dObs: [1x12 datetime]
      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 объект прибора, можно использовать 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