OptionEmbeddedFloatBond

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

Описание

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

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

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

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

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

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

Создание

Описание

пример

OptionEmbeddedFloatBondObj = fininstrument(InstrumentType,'Spread',spread_value,'Maturity',maturity_date,'CallSchedule',call_schedule_value) создает OptionEmbeddedFloatBond объект путем определения InstrumentType и необходимые аргументы пары "имя-значение" Spread, Maturity, и CallSchedule устанавливает свойства с помощью требуемых аргументов пары "имя-значение".

OptionEmbeddedFloatBond связи поддержек ванили со встроенными опциями, продвинутые облигации на предъявителя со встроенными опциями и связи амортизации со встроенными опциями.

пример

OptionEmbeddedFloatBondObj = fininstrument(InstrumentType,'Spread',spread_value,'Maturity',maturity_date,'PutSchedule',put_schedule_value) создает OptionEmbeddedFloatBond объект путем определения InstrumentType и необходимые аргументы пары "имя-значение" Spread, Maturity, и PutSchedule устанавливает свойства с помощью требуемых аргументов пары "имя-значение".

пример

OptionEmbeddedFloatBondObj = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, OptionEmbeddedFloatBondObj = fininstrument("OptionEmbeddedFloatBond",'Spread',0.01,'Maturity',datetime(2019,1,30),'Period',4,'Basis',5,'Principal',1000,'FirstCouponDate',datetime(2016,1,30),'EndMonthRule',1,'CallSchedule',schedule,'CallExerciseStyle',"american",'ProjectionCurve',ratecurve_obj,'Name',"optionembeddedfloatbond"). Можно задать несколько пар "имя-значение".

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

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

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

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

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

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

Пример: OptionEmbeddedFloatBondObj = fininstrument("OptionEmbeddedFloatBond",'Spread',0.01,'Maturity',datetime(2019,1,30),'Period',4,'Basis',5,'Principal',1000,'FirstCouponDate',datetime(2016,1,30),'EndMonthRule',1,'CallSchedule',schedule,'CallExerciseStyle',"american",'ProjectionCurve',ratecurve_obj,'Name',"optionembeddedfloatbond")
Необходимый OptionEmbeddedFloatBond Аргументы в виде пар имя-значение

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

Количество пунктов по ссылочному уровню в виде разделенной запятой пары, состоящей из 'Spread' и скаляр, неотрицательный числовой.

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

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

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

Вызовите расписание в виде разделенной запятой пары, состоящей из 'CallSchedule' и расписание дат погашения и забастовок.

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

Примечание

OptionEmbeddedFloatBond инструмент поддерживает любой CallSchedule и CallExerciseStyle или PutSchedule и PutExerciseStyle, но не то и другое одновременно.

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

Поместите расписание в виде разделенной запятой пары, состоящей из 'PutSchedule' и расписание дат погашения и забастовок.

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

Примечание

OptionEmbeddedFloatBond инструмент поддерживает любой CallSchedule и CallExerciseStyle или PutSchedule и PutExerciseStyle, но не то и другое одновременно.

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

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

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

Частота платежей в год в виде разделенной запятой пары, состоящей из 'Reset' и скалярное целое число. Значения для Reset : 1, 2, 3, 4, 6, и 12.

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

Осуществление колл-опциона разрабатывает в виде разделенной запятой пары, состоящей из 'CallExerciseStyle' и скалярная строка или вектор символов.

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

Осуществление пут-опциона разрабатывает в виде разделенной запятой пары, состоящей из 'PutExerciseStyle' и скалярная строка или вектор символов.

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

Дневное основание количества в виде разделенной запятой пары, состоящей из 'Basis' и скалярное целое число с помощью одного из следующих значений:

  • 0 — фактический/фактический

  • 1 — 30/360 (СИА)

  • 2 — фактический/360

  • 3 — фактический/365

  • 4 — 30/360 (PSA)

  • 5 — 30/360 (ISDA)

  • 6 — 30/360 (европеец)

  • 7 — фактический/365 (японский язык)

  • 8 — фактический/фактический (ICMA)

  • 9 — фактический/360 (ICMA)

  • 10 — фактический/365 (ICMA)

  • 11 — 30/360E (ICMA)

  • 12 — фактический/365 (ISDA)

  • 13 — ШИНА/252

Для получения дополнительной информации смотрите Основание.

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

Отвлеченная основная сумма или основное значение планируют в виде разделенной запятой пары, состоящей из 'Principal' и числовой скаляр или расписание.

Principal принимает a timetable, где первый столбец является датами, и второй столбец является связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.

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

Отметьте указание, настраивает ли поток наличности для базы ежедневного расчета процентов в виде разделенной запятой пары, состоящей из 'DaycountAdjustedCashFlow' и скаляр, логический со значением true или false.

Типы данных: логический

Соглашения рабочего дня в виде разделенной запятой пары, состоящей из 'BusinessDayConvention' и скалярная строка или вектор символов. Выбор для соглашения рабочего дня определяет, как обработаны нерабочие дни. Нерабочие дни заданы как выходные плюс любая другая дата, что компании не открыты (например, установленные законом праздники). Значения:

  • "actual" — Нерабочие дни эффективно проигнорированы. Потоки наличности, которые падают в нерабочие дни, приняты, чтобы быть распределенными в фактическую дату.

  • "follow" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день.

  • "modifiedfollow" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день. Однако, если следующий рабочий день находится в различном месяце, предыдущий рабочий день принят вместо этого.

  • "previous" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день.

  • "modifiedprevious" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в различном месяце, следующий рабочий день принят вместо этого.

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

Праздники, используемые в вычислении рабочих дней в виде разделенной запятой пары, состоящей из 'Holidays' и даты с помощью datetimes, последовательные числа даты, массив ячеек векторов символов даты или массив строки даты. Например:

H = holidays(datetime('today'),datetime(2025,12,15));
OptionEmbeddedFixedBondObj = fininstrument("OptionEmbeddedFixedBond",'CouponRate',0.34,'Maturity',datetime(2025,12,15),...
'CallSchedule',schedule,'CallExerciseStyle',"american",'Holidays',H)

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

Правило конца месяца отмечает для генерации дат когда Maturity дата конца месяца в течение месяца с 30 или меньшим количеством дней в виде разделенной запятой пары, состоящей из 'EndMonthRule' и скалярное логическое значение true или false.

  • Если вы устанавливаете EndMonthRule к false, программное обеспечение игнорирует правило, означая, что платежный день всегда является тем же числовым днем месяца.

  • Если вы устанавливаете EndMonthRule к true, программное обеспечение устанавливает правило о, означая, что платежный день всегда является прошлым фактическим днем месяца.

Типы данных: логический

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

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

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

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

Когда FirstCouponDate и LastCouponDate оба заданы, FirstCouponDate более приоритетен в определении структуры купонного платежа. Если вы не задаете FirstCouponDate, платежные дни потока наличности определяются из других входных параметров.

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

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

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

Если вы задаете LastCouponDate но не FirstCouponDate, LastCouponDate определяет структуру купона связи. Структура купона связи является усеченной в LastCouponDate, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете LastCouponDate, платежные дни потока наличности определяются из других входных параметров.

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

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

Передайте срок начала работы платежей в виде разделенной запятой пары, состоящей из 'StartDate' и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.

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

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

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

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

Свойства

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

Инструментальный тип, возвращенный как строка со значением "OptionEmbeddedFloatBond".

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

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

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

Дата погашения, возвращенная как datetime.

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

Вызовите расписание, возвращенное как расписание.

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

Поместите расписание, возвращенное как расписание.

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

Частота платежей в год, возвращенный как скалярное целое число.

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

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

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

Отвлеченная основная сумма или основное расписание значения, возвращенное как числовой скаляр или расписание.

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

Отметьте указание, возвратился ли поток наличности, настроенный для базы ежедневного расчета процентов, как скаляр, логический со значением true или false.

Типы данных: логический

Соглашения рабочего дня, возвращенные как строка

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

Праздники используются в вычислении рабочих дней, возвращенных как datetimes.

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

Правило конца месяца отмечает для генерации дат когда Maturity дата конца месяца в течение месяца с 30 или меньшим количеством дней, возвращенных как логический скаляр.

Типы данных: логический

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

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

Неправильная первая дата купона, возвращенная как datetime.

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

Неправильная последняя дата купона, возвращенная как datetime.

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

Передайте срок начала работы платежей, возвращенных как datetime.

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

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

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

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

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

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

setCallExercisePolicyУстановите политику осуществления вызова для OptionEmbeddedFixedBond или OptionEmbeddedFloatBond инструмент
setPutExercisePolicyУстановите помещенную политику осуществления для OptionEmbeddedFixedBond или OptionEmbeddedFloatBond инструмент

Примеры

свернуть все

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

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

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

Settle = datetime(2018,1,1);
ZeroTimes = calyears(1:10)';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
Compounding = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding);

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

Используйте fininstrument создать три OptionEmbeddedFloatBond инструмент возражает с различными стилями осуществления.

Maturity = datetime(2024,1,1);

% Option embedded float bond (Bermudan callable bond)
Strike = [100; 100];
ExerciseDates = [datetime(2020,1,1); datetime(2024,1,1)];
Reset = 1;
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

CallableBondBermudan = fininstrument("OptionEmbeddedFloatBond",'Maturity',Maturity,...
                              'Spread',0.025,'Reset',Reset, ...
                              'CallSchedule',CallSchedule,'CallExerciseStyle', "bermudan")
CallableBondBermudan = 
  OptionEmbeddedFloatBond with properties:

                      Spread: 0.0250
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: [2x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [2x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "bermudan"
            PutExerciseStyle: [0x0 string]
                        Name: ""

% Option embedded float bond (American callable bond)
Strike = 100;
ExerciseDates = datetime(2024,1,1);
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 
Reset = 1;

CallableBondAmerican = fininstrument("OptionEmbeddedFloatBond",'Maturity',Maturity,...
                              'Spread',0.025,'Reset', Reset, ...
                              'CallSchedule',CallSchedule,'CallExerciseStyle',"american")
CallableBondAmerican = 
  OptionEmbeddedFloatBond with properties:

                      Spread: 0.0250
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: 01-Jan-2024
                    PutDates: [0x1 datetime]
                CallSchedule: [1x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "american"
            PutExerciseStyle: [0x0 string]
                        Name: ""

% Option embedded float bond (European callable bond)
Strike = 100;
ExerciseDates = datetime(2024,1,1);
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 
Reset = 1;

CallableBondEuropean = fininstrument("OptionEmbeddedFloatBond",'Maturity',Maturity,...
                              'Spread',0.025,'Reset',Reset, ...
                              'CallSchedule',CallSchedule)                          
CallableBondEuropean = 
  OptionEmbeddedFloatBond with properties:

                      Spread: 0.0250
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: 01-Jan-2024
                    PutDates: [0x1 datetime]
                CallSchedule: [1x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "european"
            PutExerciseStyle: [0x0 string]
                        Name: ""

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

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

VolCurve = 0.01;
AlphaCurve = 0.1;

HWModel = finmodel("HullWhite",'alpha',AlphaCurve,'sigma',VolCurve);

Создайте 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]

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

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

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

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

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

    104.96     0      19.597    -7.3926

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

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

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

     100      0        0        0  

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

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

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

    114.56    -2.8422e-10    262.58    -50.006

Больше о

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

Советы

После создания OptionEmbeddedFixedBond объект, можно изменить CallSchedule и CallExerciseStyle использование setCallExercisePolicy. Или, можно изменить PutSchedule и PutExerciseStyle использование значений setPutExercisePolicy.

Введенный в R2020a