FixedBondOption

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

Описание

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

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

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

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

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

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

Создание

Описание

пример

FixedBondOptionObj = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercise_date,'Bond',bond_obj) создает FixedBondOption объект путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" Strike, ExerciseDate, и Bond.

FixedBondOption инструмент поддерживает европейскую или американскую опцию. Для получения дополнительной информации смотрите Больше О.

пример

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

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

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

Инструментальный тип в виде строки со значением "FixedBondOption" или вектор символов со значением 'FixedBondOption'.

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

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

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

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

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

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

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

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

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

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

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

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

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

Лежание в основе FixedBond инструмент в виде разделенной запятой пары, состоящей из 'BondInstrument' и FixedBond объект.

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

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

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

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

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

Осуществление опции разрабатывает в виде разделенной запятой пары, состоящей из 'ExerciseStyle' и скалярная строка или вектор символов со значением "European", "American", или "Bermudan".

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

Лежание в основе FixedBond инструмент, возвращенный как FixedBond объект.

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

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

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

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

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

Примеры

свернуть все

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

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

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

BondInst = fininstrument("FixedBond",'Maturity',datetime(2029,9,15),'CouponRate',.021,'Period',1,'Name',"bond_instrument")
BondInst = 
  FixedBond with properties:

                  CouponRate: 0.0210
                      Period: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2029
                        Name: "bond_instrument"

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

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

FixedBOptionEuro = fininstrument("FixedBondOption",'ExerciseDate',datetime(2025,9,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"european",'Name',"fixed_bond_option_european")
FixedBOptionEuro = 
  FixedBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2025
           Strike: 98
             Bond: [1x1 fininstrument.FixedBond]
             Name: "fixed_bond_option_european"

FixedBOptionAmerican = fininstrument("FixedBondOption",'ExerciseDate',datetime(2025,9,15),'Strike',98,'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"american",'Name',"fixed_bond_option_american")
FixedBOptionAmerican = 
  FixedBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2025
           Strike: 98
             Bond: [1x1 fininstrument.FixedBond]
             Name: "fixed_bond_option_american"

FixedBOptionBermudan = fininstrument("FixedBondOption",'ExerciseDate',[datetime(2025,9,15) ; datetime(2025,11,15)],'Strike',[98,1000],'Bond',BondInst,'OptionType',"call",'ExerciseStyle',"bermudan",'Name',"fixed_bond_option_bermudan")
FixedBOptionBermudan = 
  FixedBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "bermudan"
     ExerciseDate: [15-Sep-2025    15-Nov-2025]
           Strike: [98 1000]
             Bond: [1x1 fininstrument.FixedBond]
             Name: "fixed_bond_option_bermudan"

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

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

Settle = datetime(2019,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-2019
         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' аргумент пары "имя-значение".

HWTreePricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',ZeroDates)
HWTreePricer = 
  HWBKTree with properties:

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

HWTreePricer.Tree
ans = struct with fields:
        tObs: [0 1 1.9973 2.9945 3.9918 4.9918 5.9891 6.9863 7.9836 8.9836]
        dObs: [1x10 datetime]
      CFlowT: {1x10 cell}
       Probs: {1x9 cell}
     Connect: {1x9 cell}
     FwdTree: {1x10 cell}
    RateTree: {1x10 cell}

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

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

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

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

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

    10.757    308.87    2207.3    -178.78

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

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

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

    19.298    437.32    4977.1    -459.06

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

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

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

    11.124    322.94    2243.7    -182.44

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

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

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

Maturity = datetime(2027,1,1);
Period = 1;
CDates = datetime([2022,1,1 ; 2027,1,1]);
CRates = [.022; .027];
CouponRate = timetable(CDates,CRates);

SBond = fininstrument("FixedBond",'Maturity',Maturity,'CouponRate',CouponRate,'Period',Period,'Name',"stepped_bond_instrument") 
SBond = 
  FixedBond with properties:

                  CouponRate: [2x1 timetable]
                      Period: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2027
                        Name: "stepped_bond_instrument"

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

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

FixedBOption = fininstrument("FixedBondOption",'ExerciseDate',datetime(2026,1,1),'Strike',90,'Bond',SBond,'OptionType',"call",'ExerciseStyle',"european",'Name',"fixed_bond_option_european")
FixedBOption = 
  FixedBondOption with properties:

       OptionType: "call"
    ExerciseStyle: "european"
     ExerciseDate: 01-Jan-2026
           Strike: 90
             Bond: [1x1 fininstrument.FixedBond]
             Name: "fixed_bond_option_european"

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

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

Settle = datetime(2018,1,1);
ZeroTimes = calyears(1:10)';
ZeroRates = [0.0055 0.0063 0.0071 0.0083 0.0099 0.0131 0.0178 0.0262 0.0343 0.0387]';
ZeroDates = Settle + ZeroTimes;
Compounding = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding);

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

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

VolCurve = 0.15;
AlphaCurve = 0.03;

HWModel = finmodel("HullWhite",'Alpha',AlphaCurve,'Sigma',VolCurve)
HWModel = 
  HullWhite with properties:

    Alpha: 0.0300
    Sigma: 0.1500

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

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

HWTreePricer = finpricer("IRTree",'Model',HWModel,'DiscountCurve',ZeroCurve,'TreeDates',ZeroDates)
HWTreePricer = 
  HWBKTree with properties:

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

HWTreePricer.Tree
ans = struct with fields:
        tObs: [0 1 2 3.0027 4.0027 5.0027 6.0027 7.0055 8.0055 9.0055]
        dObs: [1x10 datetime]
      CFlowT: {1x10 cell}
       Probs: {1x9 cell}
     Connect: {1x9 cell}
     FwdTree: {1x10 cell}
    RateTree: {1x10 cell}

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

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

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

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

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

    12.272    100.91    1438.4    -130.1

Больше о

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

Советы

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

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

Введенный в R2020a