OptionEmbeddedFixedBond

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

Описание

Создайте и оцените OptionEmbeddedFixedBond инструментальный объект для одного или нескольких Опция Встроенные Фиксированные инструменты Связи с помощью этого рабочего процесса:

  1. Использование fininstrument создать OptionEmbeddedFixedBond инструментальный объект для одного или нескольких Опция Встроенные Фиксированные инструменты Связи.

  2. использование finmodel задавать HullWhite, BlackKarasinski, BraceGatarekMusiela, SABRBraceGatarekMusiela, или LinearGaussian2F модель для OptionEmbeddedFixedBond инструментальный объект.

  3. Выберите метод ценообразования.

    • При использовании HullWhite или BlackKarasinski модель, использовать finpricer задавать IRTree метод ценообразования для одного или нескольких OptionEmbeddedFixedBond инструменты.

    • При использовании HullWhite, BraceGatarekMusiela, SABRBraceGatarekMusiela, или LinearGaussian2F модель, использовать finpricer задавать IRMonteCarlo метод ценообразования для одного или нескольких OptionEmbeddedFixedBond инструменты.

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

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

Создание

Описание

пример

OptionEmbeddedFixedBondObj = fininstrument(InstrumentType,'CouponRate',couponrate_value,'Maturity',maturity_date,'CallSchedule',call_schedule_value) создает OptionEmbeddedFixedBond объект для одного или нескольких Опция Встроенные Фиксированные инструменты Связи путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" CouponRate, Maturity, и CallSchedule.

OptionEmbeddedFixedBond инструмент поддерживает связь ванили со встроенной опцией, продвинулся облигация на предъявителя со встроенной опцией и связь амортизации со встроенной опцией. Для получения дополнительной информации смотрите Больше О.

пример

OptionEmbeddedFixedBondObj = fininstrument(InstrumentType,'CouponRate',couponrate_value,'Maturity',maturity_date,'PutSchedule',put_schedule_value) создает OptionEmbeddedFixedBond объект для одного или нескольких Опция Встроенные Фиксированные инструменты Связи путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" CouponRate, Maturity, и PutSchedule.

пример

OptionEmbeddedFixedBondObj = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, OptionEmbeddedFixedBondObj = fininstrument("OptionEmbeddedFixedBond",'CouponRate',0.034,'Maturity',datetime(2019,1,30),'Period',2,'Basis',1,'Principal',100,'CallSchedule',schedule,'CallExerciseStyle',"American",'Name',"optionembeddedfixedbond_instrument") создает OptionEmbeddedFixedBond инструмент с американским осуществлением и расписанием вызова. Можно задать несколько аргументов пары "имя-значение".

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

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

Инструментальный тип в виде строки со значением "OptionEmbeddedFixedBond", вектор символов со значением 'OptionEmbeddedFixedBond', NINST- 1 массив строк со значениями "OptionEmbeddedFixedBond", или NINST- 1 массив ячеек из символьных векторов со значениями 'OptionEmbeddedFixedBond'.

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

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

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

Пример: OptionEmbeddedFixedBondObj = fininstrument("OptionEmbeddedFixedBond",'CouponRate',0.034,'Maturity',datetime(2019,1,30),'Period',2,'Basis',1,'Principal',100,'CallSchedule',schedule,'CallExerciseStyle',"American",'Name',"optionembeddedfixedbond_instrument")
Необходимый OptionEmbeddedFixedBond Аргументы в виде пар имя-значение

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

Купонная ставка для OptionEmbeddedFixedBondВ виде разделенной запятой пары, состоящей из 'CouponRate' как скалярное десятичное число или NINST- 1 вектор из десятичных чисел для годового показателя или расписания, где первый столбец является датами и вторым столбцом, является сопоставленными уровнями. Дата указывает в последний день, что купонная ставка допустима.

Примечание

Если вы создаете один или несколько OptionEmbeddedFixedBond инструменты и использование расписание, спецификация расписания применяется ко всему OptionEmbeddedFixedBond инструменты. CouponRate не принимает NINST- 1 массив ячеек расписаний, как введено.

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

Дата погашения для OptionEmbeddedFixedBondВ виде разделенной запятой пары, состоящей из 'Maturity' и скалярный datetime, последовательный номер даты, вектор символов даты, строка даты или NINST- 1 вектор из datetimes, последовательных чисел даты, массива ячеек векторов символов даты или массива строки даты.

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

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

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

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

Примечание

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

Если вы создаете один или несколько OptionEmbeddedFixedBond инструменты и использование расписание, спецификация расписания применяется ко всему OptionEmbeddedFixedBond инструменты. CallSchedule не принимает NINST- 1 массив ячеек расписаний, как введено.

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

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

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

Примечание

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

Если вы создаете один или несколько OptionEmbeddedFixedBond инструменты и использование расписание, спецификация расписания применяется ко всему OptionEmbeddedFixedBond инструменты. PutSchedule не принимает NINST- 1 массив ячеек расписаний, как введено.

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

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

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

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

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

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

Примечание

CallSchedule расписание дат погашения и забастовок. Если вы не задаете CallExerciseStyle, затем на основе CallSchedule спецификация, значение по умолчанию CallExerciseStyle присвоен можно следующим образом:

  • Если существует одна дата осуществления в CallSchedule, затем CallExerciseStyle "European".

  • Если существует две даты осуществления в CallSchedule, затем CallExerciseStyle "American" с датой начала и зрелостью.

  • Если существует больше чем две даты осуществления в CallSchedule, затем CallExerciseStyle "Bermudan".

Если вы задают CallExerciseStyle и это не сопоставимо с тем, что вы задали в CallSchedule, вы получаете сообщение об ошибке.

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

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

Примечание

PutSchedule расписание дат погашения и забастовок. Если вы не задаете PutExerciseStyle, затем на основе PutSchedule спецификация, значение по умолчанию PutExerciseStyle присвоен можно следующим образом:

  • Если существует одна дата осуществления в PutSchedule, затем PutExerciseStyle "European".

  • Если существует две даты осуществления в PutSchedule, затем PutExerciseStyle "American" с датой начала и зрелостью.

  • Если существует больше чем две даты осуществления в PutSchedule, затем PutExerciseStyle "Bermudan".

Если вы задают PutExerciseStyle и это не сопоставимо с тем, что вы задали в PutSchedule, вы получаете сообщение об ошибке.

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

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

  • 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' и числовой скаляр или NINST- 1 числовой вектор или расписание.

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

Примечание

Если вы создаете один или несколько OptionEmbeddedFixedBond инструменты и использование расписание, спецификация расписания применяется ко всему OptionEmbeddedFixedBond инструменты. Principal не принимает NINST- 1 массив ячеек расписаний, как введено.

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

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

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

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

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

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

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

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

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

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

Праздники, используемые в вычислении рабочих дней в виде разделенной запятой пары, состоящей из 'Holidays' и даты с помощью NINST- 1 вектор из 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' и логический скаляр или NINST- 1 вектор из logicals со значениями true или false.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

Годовой показатель купона, возвращенный как скалярное десятичное число или NINST- 1 вектор из десятичных чисел или расписания.

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

Дата погашения, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

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

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

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

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

Купоны в год, возвращенный как скалярное целое число или NINST- 1 вектор из целых чисел.

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

Дневной базис количества, возвращенный как скалярное целое число или NINST- 1 вектор из целых чисел.

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

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

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

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

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

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

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

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

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

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

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

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

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

Неправильная первая дата купона, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

Неправильная последняя дата купона, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить американца, европейца и бермудские стили осуществления для трех вызываемых OptionEmbeddedFixedBond инструменты, когда вы используете 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);

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

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

Maturity = datetime(2024,1,1);

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

CallableBondBermudan = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'CallSchedule',CallSchedule,'CallExerciseStyle', "bermudan")
CallableBondBermudan = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      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-2024
                   CallDates: [2x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [2x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "bermudan"
            PutExerciseStyle: [0x0 string]
                        Name: ""

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

CallableBondAmerican = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period', Period, ...
                              'CallSchedule',CallSchedule,'CallExerciseStyle',"american")
CallableBondAmerican = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      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-2024
                   CallDates: 01-Jan-2024
                    PutDates: [0x1 datetime]
                CallSchedule: [1x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "american"
            PutExerciseStyle: [0x0 string]
                        Name: ""

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

CallableBondEuropean = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'CallSchedule',CallSchedule)                          
CallableBondEuropean = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      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-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 = 103.2729
outPR = 
  priceresult with properties:

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

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

    103.27    -148.28    1375.9    -290.33

[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 = 107.7023
outPR = 
  priceresult with properties:

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

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

    107.7     0      4086.4    -602.56

Этот пример показывает рабочий процесс, чтобы оценить несколько вызываемый OptionEmbeddedFixedBond инструменты с бермудским осуществлением разрабатывают, когда вы используете 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);

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

Используйте fininstrument создать OptionEmbeddedFixedBond инструментальный объект для трех Опций Встроенная Фиксированная Связь instuments.

Maturity = datetime([2025,1,1 ; 2026,1,1 ; 2027,1,1]);

% Option embedded bond (Bermudan callable bond)
Strike = [100 ; 200 ; 300]; 
ExerciseDates = datetime([2022,1,1 ; 2023,1,1 ; 2024,1,1]); 
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 
Period = 1;

CallableBondBermudan = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period', Period, ...
                              'CallSchedule',CallSchedule,'CallExerciseStyle',"Bermudan")  
CallableBondBermudan=3×1 object
  3x1 OptionEmbeddedFixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

Когда вы создаете несколько OptionEmbeddedFixedBond инструменты и использование расписание для CallSchedule, спецификация расписания применяется ко всему OptionEmbeddedFixedBond инструменты. CallSchedule входной параметр не принимает NINST- 1 массив ячеек расписаний, как введено.

Создайте 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 = 3×1

  104.5001
  102.0649
   97.6664

outPR=3×1 object
  3x1 priceresult array with properties:

    Results
    PricerData

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

    104.5    -166.73    4134.2    -584.34

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

    102.06    -201.07    4850.3    -621.72

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

    97.666    -84.933    6857.7    -743.76

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

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

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

Settle = datetime(2019,1,1);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
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: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

% Option embedded bond (European callable bond)
Maturity = datetime(2022,9,15);
Strike = 100;
ExerciseDates = datetime(2024,1,1);
CallSchedule = timetable(datetime(2020,3,15), 50);
Period = 1;

CallableBondEuropean = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'CallSchedule',CallSchedule)      
CallableBondEuropean = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      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-2022
                   CallDates: 15-Mar-2020
                    PutDates: [0x1 datetime]
                CallSchedule: [1x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "european"
            PutExerciseStyle: [0x0 string]
                        Name: ""

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.32,'Sigma',0.49)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.3200
    Sigma: 0.4900

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

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

outPricer = finpricer("IRMonteCarlo",'Model',HullWhiteModel,'DiscountCurve',myRC,'SimulationDates',datetime(2019,3,15)+calmonths(0:6:48)')
outPricer = 
  HWMonteCarlo with properties:

          NumTrials: 1000
      RandomNumbers: []
      DiscountCurve: [1x1 ratecurve]
    SimulationDates: [15-Mar-2019    15-Sep-2019    15-Mar-2020    ...    ]
              Model: [1x1 finmodel.HullWhite]

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

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

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

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

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

    58.188    -125.43    356.04    18.24

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

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

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

Settle = datetime(2018, 1, 1);
ZeroTimes = calyears(1:4)';
ZeroRates = [0.035; 0.042147; 0.047345; 0.052707];
ZeroDates = Settle + ZeroTimes;
Compounding = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: 1
                Basis: 0
                Dates: [4x1 datetime]
                Rates: [4x1 double]
               Settle: 01-Jan-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

CouponRate = 0.0425;
Strike = [95; 98];
ExerciseDates = [datetime(2021,1,1); datetime(2022,1,1)];
Maturity = datetime(2022,1,1);
Period = 1;
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 
CallableBond = fininstrument("OptionEmbeddedFixedBond", 'Maturity',Maturity,...
                              'CouponRate',CouponRate,'Period', Period, ...
                              'CallSchedule',CallSchedule,...
                              'CallExerciseStyle', "American",...
                              'Name',"MyCallableBond")                
CallableBond = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0425
                      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-2022
                   CallDates: [2x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [2x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "american"
            PutExerciseStyle: [0x0 string]
                        Name: "MyCallableBond"

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

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

VolCurve = 0.01;
AlphaCurve = 0.1;
BKModel = finmodel("BlackKarasinski",'alpha',AlphaCurve,'sigma',VolCurve)
BKModel = 
  BlackKarasinski with properties:

    Alpha: 0.1000
    Sigma: 0.0100

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

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

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

             Tree: [1x1 struct]
        TreeDates: [4x1 datetime]
            Model: [1x1 finmodel.BlackKarasinski]
    DiscountCurve: [1x1 ratecurve]

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

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

[Price,  PriceResults]= price(BKTreePricer, CallableBond)
Price = 92.5235
PriceResults = 
  priceresult with properties:

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

Исследуйте выход PriceResults.PricerData.PriceTree.ExTree, который содержит массивы индикатора осуществления. В массиве ячеек, 1 указывает на осуществленную опцию и 0 указывает на неосуществленную опцию.

PriceResults.PricerData.PriceTree.ExTree{5} 
ans = 1x7 logical array

   1   1   1   1   1   1   1

Никакие опции не осуществлены.

PriceResults.PricerData.PriceTree.ExTree{4} 
ans = 1x7 logical array

   0   0   0   0   0   0   0

Инструмент осуществлен во всех узлах.

PriceResults.PricerData.PriceTree.ExTree{3} 
ans = 1x5 logical array

   0   0   0   0   0

Никакие опции не осуществлены.

PriceResults.PricerData.PriceTree.ExTree{2} 
ans = 1x3 logical array

   0   0   0

Никакие опции не осуществлены.

Просмотрите вероятность достижения каждого узла от корневого узла с помощью PriceResults.PricerData.PriceTree.ProbTree.

PriceResults.PricerData.PriceTree.ProbTree{2}
ans = 1×3

    0.1667    0.6667    0.1667

PriceResults.PricerData.PriceTree.ProbTree{3}
ans = 1×5

    0.0203    0.2206    0.5183    0.2206    0.0203

PriceResults.PricerData.PriceTree.ProbTree{4}
ans = 1×7

    0.0018    0.0395    0.2370    0.4433    0.2370    0.0395    0.0018

PriceResults.PricerData.PriceTree.ProbTree{5}
ans = 1×7

    0.0018    0.0395    0.2370    0.4433    0.2370    0.0395    0.0018

Просмотрите вероятности осуществления с помощью PriceResults.PricerData.PriceTree.ExProbTree. PriceResults.PricerData.PriceTree.ExProbTree содержит вероятности осуществления. Каждым элементом в массиве ячеек является массив, содержащий 0где нет никакого осуществления или вероятности достижения того узла, где осуществление происходит.

PriceResults.PricerData.PriceTree.ExProbTree{5}
ans = 1×7

    0.0018    0.0395    0.2370    0.4433    0.2370    0.0395    0.0018

PriceResults.PricerData.PriceTree.ExProbTree{4}
ans = 1×7

     0     0     0     0     0     0     0

PriceResults.PricerData.PriceTree.ExProbTree{3}
ans = 1×5

     0     0     0     0     0

PriceResults.PricerData.PriceTree.ExProbTree{2}
ans = 1×3

     0     0     0

Просмотрите вероятности осуществления на каждом древовидном уровне с помощью PriceResults.PricerData.PriceTree.ExProbsByTreeLevel. PriceResults.PricerData.PriceTree.ExProbsByTreeLevel массив, в котором каждая строка содержит вероятность осуществления для данной опции в каждый древовидный раз наблюдения.

PriceResults.PricerData.PriceTree.ExProbsByTreeLevel
ans = 1×5

         0         0         0         0    1.0000

Больше о

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

Советы

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

Введенный в R2020a