OptionEmbeddedFixedBond
инструментальный объект
Создайте и оцените OptionEmbeddedFixedBond
инструментальный объект, использующий этот рабочий процесс:
Используйте fininstrument
создать OptionEmbeddedFixedBond
инструментальный объект.
используйте finmodel
задавать HullWhite
или BlackKarasinski
модель для OptionEmbeddedFixedBond
инструмент.
Используйте finpricer
задавать IRTree
метод ценообразования для 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.34,'Maturity',datetime(2019,1,30),'Period',2,'Basis',1,'Principal',100,'CallSchedule',schedule,'CallExerciseStyle',"American",'Name',"optionembeddedfixedbond_instrument")
создает OptionEmbeddedFixedBond
инструмент с американским осуществлением и расписанием вызова. Можно задать несколько аргументов пары "имя-значение".
InstrumentType
— Инструментальный тип"OptionEmbeddedFixedBond"
| вектор символов со значением 'OptionEmbeddedFixedBond'
Инструментальный тип в виде строки со значением "OptionEmbeddedFixedBond"
или вектор символов со значением 'OptionEmbeddedFixedBond'
.
Типы данных: char |
string
OptionEmbeddedFixedBond
Аргументы в виде пар имя-значениеЗадайте требуемые и дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
OptionEmbeddedFixedBondObj = fininstrument("OptionEmbeddedFixedBond",'CouponRate',0.34,'Maturity',datetime(2019,1,30),'Period',2,'Basis',1,'Principal',100,'CallSchedule',schedule,'CallExerciseStyle',"American",'Name',"optionembeddedfixedbond_instrument")
OptionEmbeddedFixedBond
Аргументы в виде пар имя-значение'CouponRate'
— Купонная ставка для OptionEmbeddedFixedBond
Купонная ставка для OptionEmbeddedFixedBond
В виде разделенной запятой пары, состоящей из 'CouponRate'
как скалярное десятичное число для годового показателя или расписания, где первый столбец является датами и вторым столбцом, является сопоставленными уровнями. Дата указывает в последний день, что купонная ставка допустима.
Типы данных: double |
timetable
'Maturity'
— Дата погашения для OptionEmbeddedFixedBond
Дата погашения для OptionEmbeddedFixedBond
В виде разделенной запятой пары, состоящей из 'Maturity'
и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime
потому что Maturity
свойство хранится как datetime.
Типы данных: char |
double
| string
| datetime
'CallSchedule'
— Вызовите расписание Вызовите расписание в виде разделенной запятой пары, состоящей из 'CallSchedule'
и расписание дат погашения и забастовок.
Если вы используете вектор символов даты или строку даты для дат в этом расписании, формат должен быть распознаваемым datetime
потому что CallSchedule
свойство хранится как datetime.
OptionEmbeddedFixedBond
инструмент поддерживает любой CallSchedule
и CallExerciseStyle
или PutSchedule
и PutExerciseStyle
, но не то и другое одновременно.
Типы данных: timetable
'PutSchedule'
— Вызовите расписание Поместите расписание в виде разделенной запятой пары, состоящей из 'PutSchedule'
и расписание дат погашения и забастовок.
Если вы используете вектор символов даты или строку даты для дат в этом расписании, формат должен быть распознаваемым datetime
потому что PutSchedule
свойство хранится как datetime.
OptionEmbeddedFixedBond
инструмент поддерживает любой CallSchedule
и CallExerciseStyle
или PutSchedule
и PutExerciseStyle
, но не то и другое одновременно.
Типы данных: timetable
OptionEmbeddedFixedBond
Аргументы в виде пар имя-значение'Period'
— Частота платежей в год
(значение по умолчанию) | целое числоЧастота платежей в год в виде разделенной запятой пары, состоящей из 'Period'
и скалярное целое число. Значения для Period
: 1
, 2, 3
, 4
, 6
, и
12
.
Типы данных: double
'CallExerciseStyle'
— Стиль осуществления колл-опциона"European"
(значение по умолчанию) | представляет в виде строки со значением "European"
, "American"
, или "Bermudan"
| вектор символов со значением 'European'
, 'American'
, или 'Bermudan'
Осуществление колл-опциона разрабатывает в виде разделенной запятой пары, состоящей из 'CallExerciseStyle'
и скалярная строка или вектор символов.
Типы данных: string
| char
'PutExerciseStyle'
— Стиль осуществления пут-опциона"European"
(значение по умолчанию) | представляет в виде строки со значением "European"
, "American"
, или "Bermudan"
| вектор символов со значением 'European'
, 'American'
, или 'Bermudan'
Осуществление пут-опциона разрабатывает в виде разделенной запятой пары, состоящей из 'PutExerciseStyle'
и скалярная строка или вектор символов.
Типы данных: string
| char
'Basis'
— Дневное основание количества
(фактическое/фактическое) (значение по умолчанию) | целое число от 0
к 13
Дневное основание количества в виде разделенной запятой пары, состоящей из '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'
и числовой скаляр или расписание.
Principal
принимает timetable
, где первый столбец является датами, и второй столбец является связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.
Типы данных: double |
timetable
'DaycountAdjustedCashFlow'
— Отметьте указание, настраивает ли поток наличности для базы ежедневного расчета процентовfalse
(значение по умолчанию) | значение true
или false
Отметьте указание, настраивает ли поток наличности для базы ежедневного расчета процентов в виде разделенной запятой пары, состоящей из 'DaycountAdjustedCashFlow'
и скаляр, логический со значением true
или false
.
Типы данных: логический
'BusinessDayConvention'
— Соглашения рабочего дня"actual"
(значение по умолчанию) | представляет в виде строки | вектор символовСоглашения рабочего дня в виде разделенной запятой пары, состоящей из 'BusinessDayConvention'
и скалярная строка или вектор символов. Выбор для соглашения рабочего дня определяет, как обработаны нерабочие дни. Нерабочие дни заданы как выходные плюс любая другая дата, что компании не открыты (например, установленные законом праздники). Значения:
"actual"
— Нерабочие дни эффективно проигнорированы. Потоки наличности, которые падают в нерабочие дни, приняты, чтобы быть распределенными в фактическую дату.
"follow"
— Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день.
"modifiedfollow"
— Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день. Однако, если следующий рабочий день находится в различном месяце, предыдущий рабочий день принят вместо этого.
"previous"
— Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день.
"modifiedprevious"
— Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в различном месяце, следующий рабочий день принят вместо этого.
Типы данных: char |
string
'Holidays'
— Праздники используются в вычислении рабочих днейNaT
(значение по умолчанию) | datetime | массив ячеек векторов символов даты | массив строки даты | последовательные числа датыПраздники, используемые в вычислении рабочих дней в виде разделенной запятой пары, состоящей из '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
'EndMonthRule'
— Правило конца месяца отмечает для генерации дат когда Maturity
дата конца месяца в течение месяца с 30 или меньшим количеством днейtrue
(в действительности) (значение по умолчанию) | значение true
или false
Правило конца месяца отмечает для генерации дат когда Maturity
дата конца месяца в течение месяца с 30 или меньшим количеством дней в виде разделенной запятой пары, состоящей из 'EndMonthRule'
и скалярное логическое значение true
или false
.
Если вы устанавливаете EndMonthRule
к false
, программное обеспечение игнорирует правило, означая, что платежный день всегда является тем же числовым днем месяца.
Если вы устанавливаете EndMonthRule
к true
, программное обеспечение устанавливает правило о, означая, что платежный день всегда является прошлым фактическим днем месяца.
Типы данных: логический
'IssueDate'
— Дата выпуска облигацийNaT
(значение по умолчанию) | datetime | последовательный номер даты | вектор символов даты | строка датыДата выпуска облигаций в виде разделенной запятой пары, состоящей из 'IssueDate'
и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime
потому что IssueDate
свойство хранится как datetime.
Типы данных: double |
char
| string
| datetime
'FirstCouponDate'
— Неправильная первая дата купонаNaT
(значение по умолчанию) | datetime | последовательный номер даты | вектор символов даты | строка датыНеправильная первая дата купона в виде разделенной запятой пары, состоящей из 'FirstCouponDate'
и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.
Когда FirstCouponDate
и LastCouponDate
оба заданы, FirstCouponDate
более приоритетен в определении структуры купонного платежа. Если вы не задаете FirstCouponDate
, платежные дни потока наличности определяются из других входных параметров.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime
потому что FirstCouponDate
свойство хранится как datetime.
Типы данных: double |
char
| string
| datetime
'LastCouponDate'
— Неправильная последняя дата купонаNaT
(значение по умолчанию) | datetime | последовательный номер даты | вектор символов даты | строка датыНеправильная последняя дата купона в виде разделенной запятой пары, состоящей из 'LastCouponDate'
и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.
Если вы задаете LastCouponDate
но не FirstCouponDate
, LastCouponDate
определяет структуру купона связи. Структура купона связи является усеченной в LastCouponDate
, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете LastCouponDate
, платежные дни потока наличности определяются из других входных параметров.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime
потому что LastCouponDate
свойство хранится как datetime.
Типы данных: double |
char
| string
| datetime
'StartDate'
— Передайте срок начала работы платежейNaT
(значение по умолчанию) | datetime | последовательный номер даты | вектор символов даты | строка датыПередайте срок начала работы платежей в виде разделенной запятой пары, состоящей из 'StartDate'
и скалярный datetime, последовательный номер даты, вектор символов даты или строка даты.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime
потому что StartDate
свойство хранится как datetime.
Типы данных: char |
double
| string
| datetime
'Name'
— Пользовательское имя для инструмента" "
(значение по умолчанию) | представляет в виде строки | вектор символовПользовательское имя для инструмента в виде разделенной запятой пары, состоящей из 'Name'
и скалярная строка или вектор символов.
Типы данных: char |
string
CouponRate
— Годовой показатель купонаГодовой показатель купона, возвращенный как скалярное десятичное число или расписание.
Типы данных: double |
timetable
Maturity
— Дата погашенияДата погашения, возвращенная как datetime.
Типы данных: datetime
CallSchedule
— Вызовите расписание Вызовите расписание, возвращенное как расписание.
Типы данных: cell
| datetime
PutSchedule
— Вызовите расписание Поместите расписание, возвращенное как расписание.
Типы данных: cell
| datetime
Period
— Купоны в год
(значение по умолчанию) | целое числоКупоны в год, возвращенный как скалярное целое число.
Типы данных: double
Basis
— Дневное основание количества
(фактическое/фактическое) (значение по умолчанию) | целое число от 0
к 13
Дневное основание количества, возвращенное как скалярное целое число.
Типы данных: double
Principal
— Отвлеченная основная сумма или основное расписание значения
(значение по умолчанию) | скаляр, числовой | расписаниеОтвлеченная основная сумма или основное расписание значения, возвращенное как числовой скаляр или расписание.
Типы данных: timetable
| double
DaycountAdjustedCashFlow
— Отметьте указание, настраивает ли поток наличности для базы ежедневного расчета процентовfalse
(значение по умолчанию) | значение true
или false
Отметьте указание, возвратился ли поток наличности, настроенный для базы ежедневного расчета процентов, как скаляр, логический со значением true
или false
.
Типы данных: логический
BusinessDayConvention
— Соглашения рабочего дня"actual"
(значение по умолчанию) | строкаСоглашения рабочего дня, возвращенные как строка
Типы данных: string
Holidays
— Праздники используются в вычислении рабочих днейNaT
(значение по умолчанию) | datetimeПраздники используются в вычислении рабочих дней, возвращенных как datetimes.
Типы данных: datetime
EndMonthRule
— Правило конца месяца отмечает для генерации дат когда Maturity
дата конца месяца в течение месяца с 30 или меньшим количеством днейtrue
(в действительности) (значение по умолчанию) | значение true
или false
Правило конца месяца отмечает для генерации дат когда Maturity
дата конца месяца в течение месяца с 30 или меньшим количеством дней, возвращенных как логический скаляр.
Типы данных: логический
IssueDate
— Дата выпуска облигацийNaT
(значение по умолчанию) | datetimeДата выпуска облигаций, возвращенная как datetime.
Типы данных: datetime
FirstCouponDate
— Неправильная первая дата купонаNaT
(значение по умолчанию) | datetimeНеправильная первая дата купона, возвращенная как datetime.
Типы данных: datetime
LastCouponDate
— Неправильная последняя дата купонаNaT
(значение по умолчанию) | datetimeНеправильная последняя дата купона, возвращенная как datetime.
Типы данных: datetime
StartDate
— Передайте срок начала работы платежейNaT
(значение по умолчанию) | datetimeПередайте срок начала работы платежей, возвращенных как datetime.
Типы данных: datetime
CallExerciseStyle
— Стиль осуществления колл-опциона"European"
(значение по умолчанию) | представляет в виде строки со значением "European"
, "American"
, или "Bermuda"
Это свойство доступно только для чтения.
Стиль осуществления колл-опциона, возвращенный как строка со значением "European"
, "American"
, или "Bermuda"
.
Типы данных: string
PutExerciseStyle
— Стиль осуществления пут-опциона"European"
(значение по умолчанию) | представляет в виде строки со значением "European"
, "American"
, или "Bermuda"
Это свойство доступно только для чтения.
Стиль осуществления пут-опциона, возвращенный как строка со значением "European"
, "American"
, или "Bermuda"
.
Типы данных: string
Name
— Пользовательское имя для инструмента" "
(значение по умолчанию) | строкаПользовательское имя для инструмента, возвращенного как строка.
Типы данных: string
Этот пример показывает рабочий процесс, чтобы оценить американца, европейца и бермудские стили осуществления для трех вызываемых 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.2720
outPR = priceresult with properties: Results: [1x4 table] PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
______ _______ ______ _______
103.27 -148.37 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 1.4211e-10 4086.4 -602.56
Этот пример показывает рабочий процесс, чтобы оценить вызываемый 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 = 94.3981
PriceResults = priceresult with properties: Results: [1x1 table] PricerData: [1x1 struct]
Исследуйте выход PriceResults.PricerData.PriceTree.ExTree
, который содержит массивы индикатора осуществления. В массиве ячеек, 1
указывает на осуществленную опцию и 0
указывает на неосуществленную опцию.
PriceResults.PricerData.PriceTree.ExTree{5}
ans = 1×7
0 0 0 0 0 0 0
Никакие опции не осуществлены.
PriceResults.PricerData.PriceTree.ExTree{4}
ans = 1×7
1 1 1 1 1 1 1
Инструмент осуществлен во всех узлах.
PriceResults.PricerData.PriceTree.ExTree{3}
ans = 1×5
0 0 0 0 0
Никакие опции не осуществлены.
PriceResults.PricerData.PriceTree.ExTree{2}
ans = 1×3
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.0017 0.0394 0.2370 0.4437 0.2370 0.0394 0.0017
PriceResults.PricerData.PriceTree.ProbTree{5}
ans = 1×7
0.0017 0.0394 0.2370 0.4437 0.2370 0.0394 0.0017
Просмотрите вероятности осуществления с помощью PriceResults.PricerData.PriceTree.ExProbTree
. PriceResults.PricerData.PriceTree.ExProbTree
содержит вероятности осуществления. Каждым элементом в массиве ячеек является массив, содержащий 0
где нет никакого осуществления или вероятности достижения того узла, где осуществление происходит.
PriceResults.PricerData.PriceTree.ExProbTree{5}
ans = 1×7
0 0 0 0 0 0 0
PriceResults.PricerData.PriceTree.ExProbTree{4}
ans = 1×7
0.0017 0.0394 0.2370 0.4437 0.2370 0.0394 0.0017
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 1.0000 0
vanilla coupon bond является безопасностью, представляющей обязательство возместить одолженную сумму в назначенное время и сделать периодические выплаты процентов до того времени.
Выпускающий связи делает периодические выплаты процентов, пока связь не назревает. В зрелости выпускающий выплачивает держателю связи основную сумму, бывшую должную (номинальную стоимость) и последнюю выплату процентов. Связь ванили со встроенной опцией - то, где опционный контракт имеет базовый актив связи ванили.
step-up bond и step-down bond являются долговой безопасностью с предопределенной структурой купона в зависимости от времени.
С этими инструментами увеличение купонов (подходит) или уменьшается (уходят) в конкретные моменты времени во время жизни связи. Ступенчатые облигации на предъявителя могут иметь функции опций (вызовите, и помещает).
amortizing callable bond или amortizing puttable bond работают под запланированным Principal
.
Амортизирующая вызываемая связь дает выпускающему право отозвать связь, но вместо того, чтобы платить Principal
означайте в зрелости, она возмещает часть принципала наряду с купонными платежами. Амортизирующая связь с правом досрочного погашения, возмещает часть принципала наряду с купонными платежами и дает держателю облигаций право продать связь назад выпускающему.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.