exponenta event banner

FixedBondOption

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

Описание

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

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

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

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

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

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

Создание

Описание

пример

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

Тип параметра, возвращаемый в виде строки со значением "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 pricer object и используйте 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 pricer object и используйте 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