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.

The 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-by- NSTRIKES вектор дат упражнений.

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

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

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

Базовые FixedBond инструмент, заданный как разделенная разделенными запятой парами, состоящая из 'BondInstrument' и a 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 и используйте объект pricer 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 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