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-by- 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 и используйте объект pricer 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