Кривая нулевой ширины, загружающаяся из данных об облигации на предъявителя, данных урожай
[
использует метод начальной загрузки, чтобы возвратить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их урожаев. ZeroRates
,CurveDates
] = zbtyield(Bonds
,Yields
Settle
)
Кривая нулевой ширины состоит из доходов до срока погашения для портфеля теоретических облигаций с нулевым купоном, которые выведены из входа Bonds
портфель. Метод начальной загрузки, что эта функция использование не требует выравнивания среди дат потока наличности связей во входном портфеле. Это использует теоретический арбитраж связи паритета и интерполяцию урожая, чтобы вывести все нулевые уровни; а именно, процентные ставки для потоков наличности определяются с помощью линейной интерполяции. Для лучших результатов используйте портфель по крайней мере 30 связей, равномерно расположенных с интервалами через инвестиционный горизонт.
добавляет дополнительный аргумент для ZeroRates
,CurveDates
= zbtyield(___,OutputCompounding
)OutputCompounding
.
Определенные данные и доходы до срока погашения для 12 облигаций на предъявителя, два с той же датой погашения; и, учитывая общий расчетный день.
Bonds = [datenum('6/1/1998') 0.0475 100 2 0 0; datenum('7/1/2000') 0.06 100 2 0 0; datenum('7/1/2000') 0.09375 100 6 1 0; datenum('6/30/2001') 0.05125 100 1 3 1; datenum('4/15/2002') 0.07125 100 4 1 0; datenum('1/15/2000') 0.065 100 2 0 0; datenum('9/1/1999') 0.08 100 3 3 0; datenum('4/30/2001') 0.05875 100 2 0 0; datenum('11/15/1999') 0.07125 100 2 0 0; datenum('6/30/2000') 0.07 100 2 3 1; datenum('7/1/2001') 0.0525 100 2 3 0; datenum('4/30/2002') 0.07 100 2 0 0]; Yields = [0.0616 0.0605 0.0687 0.0612 0.0615 0.0591 0.0603 0.0608 0.0655 0.0646 0.0641 0.0627]; Settle = datenum('12/18/1997');
Установите полугодовое соединение для кривой нулевой ширины.
OutputCompounding = 2;
Выполните функциональный zbtyield
который возвращает кривую нулевой ширины в датах погашения. Отметьте средний нулевой уровень этими двумя связями с той же датой погашения.
[ZeroRates, CurveDates] = zbtyield(Bonds, Yields, Settle,... OutputCompounding)
ZeroRates = 11×1
0.0616
0.0603
0.0657
0.0590
0.0649
0.0650
0.0606
0.0611
0.0643
0.0614
⋮
CurveDates = 11×1
729907
730364
730439
730500
730667
730668
730971
731032
731033
731321
⋮
Определенные данные и доходы до срока погашения для 12 облигаций на предъявителя (два с той же датой погашения), и, учитывая общий расчетный день, вычисляют кривую нулевой ширины с помощью datetime
входные параметры.
Bonds = [datenum('6/1/1998') 0.0475 100 2 0 0; datenum('7/1/2000') 0.06 100 2 0 0; datenum('7/1/2000') 0.09375 100 6 1 0; datenum('6/30/2001') 0.05125 100 1 3 1; datenum('4/15/2002') 0.07125 100 4 1 0; datenum('1/15/2000') 0.065 100 2 0 0; datenum('9/1/1999') 0.08 100 3 3 0; datenum('4/30/2001') 0.05875 100 2 0 0; datenum('11/15/1999') 0.07125 100 2 0 0; datenum('6/30/2000') 0.07 100 2 3 1; datenum('7/1/2001') 0.0525 100 2 3 0; datenum('4/30/2002') 0.07 100 2 0 0]; Yields = [0.0616 0.0605 0.0687 0.0612 0.0615 0.0591 0.0603 0.0608 0.0655 0.0646 0.0641 0.0627]; Settle = datenum('12/18/1997'); OutputCompounding = 2; t = array2table(Bonds,'VariableNames',{'Maturity','CouponRate', 'Face' ,'Period', 'Basis', 'EndMonthRule'}); disp(t)
Maturity CouponRate Face Period Basis EndMonthRule __________ __________ ____ ______ _____ ____________ 7.2991e+05 0.0475 100 2 0 0 7.3067e+05 0.06 100 2 0 0 7.3067e+05 0.09375 100 6 1 0 7.3103e+05 0.05125 100 1 3 1 7.3132e+05 0.07125 100 4 1 0 7.305e+05 0.065 100 2 0 0 7.3036e+05 0.08 100 3 3 0 7.3097e+05 0.05875 100 2 0 0 7.3044e+05 0.07125 100 2 0 0 7.3067e+05 0.07 100 2 3 1 7.3103e+05 0.0525 100 2 3 0 7.3134e+05 0.07 100 2 0 0
t.Maturity = datetime(t.Maturity,'ConvertFrom','datenum','Locale','en_US'); Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US'); [ZeroRates, CurveDates] = zbtyield(t, Yields, Settle,... OutputCompounding)
ZeroRates = 11×1
0.0616
0.0603
0.0657
0.0590
0.0649
0.0650
0.0606
0.0611
0.0643
0.0614
⋮
CurveDates = 11x1 datetime array
01-Jun-1998 00:00:00
01-Sep-1999 00:00:00
15-Nov-1999 00:00:00
15-Jan-2000 00:00:00
30-Jun-2000 00:00:00
01-Jul-2000 00:00:00
30-Apr-2001 00:00:00
30-Jun-2001 00:00:00
01-Jul-2001 00:00:00
15-Apr-2002 00:00:00
30-Apr-2002 00:00:00
Используйте zbtyield
вычислить действительные нулевые уровни из реальных доходностей соединенных с инфляцией связей.
% Load the data load usbond_02Sep2008 Settle = datenum('02-Sep-2008');
Вычислите реальные доходности и затем вычислите действительные нулевые уровни.
RealYields = bndyield(TIPSPrice,TIPSCoupon,Settle,TIPSMaturity); TIPSBonds = [TIPSMaturity TIPSCoupon]; [RealZeroRates, CurveDates] = zbtyield(TIPSBonds, RealYields, Settle)
RealZeroRates = 26×1
0.0069
0.0094
0.0092
0.0111
0.0110
0.0119
0.0116
0.0128
0.0126
0.0136
⋮
CurveDates = 26×1
734153
734243
734518
734608
734883
734974
735065
735339
735430
735614
⋮
Bonds
— Информация об облигации на предъявителя, чтобы сгенерировать кривую нулевой шириныИнформация об облигации на предъявителя, чтобы сгенерировать кривую нулевой ширины, заданную как таблица с 6 столбцами или n
- 2
к n
- 6
матрица информации о связи, где столбцы таблицы или столбцы матрицы содержит:
Maturity
(Столбец 1, Необходимый) Дата погашения связи, как последовательный номер даты. Используйте datenum
преобразовывать векторы символов даты в последовательные числа даты. Если вход Bonds
таблица, Maturity
даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.
CouponRate
(Столбец 2, Необходимый) Десятичная дробь, указывающая на купонную ставку связи.
Face
(Столбец 3, Дополнительный) Освобождение или номинальная стоимость связи. Значение по умолчанию = 100
.
Period
(Столбец 4, Дополнительный) Купоны в год связи. Позволенными значениями является 0
, 1, 2
(значение по умолчанию),
3
, 4, 6
, и
12
.
Basis
(Столбец 5, Дополнительный) основание Дневного количества связи. Вектор целых чисел.
0 = фактический/фактический (значение по умолчанию)
1 = 30/360 (СИА)
2 = Фактический/360
3 = Фактический/365
4 = 30/360 (BMA)
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
Для получения дополнительной информации смотрите Основание.
EndMonthRule
(Столбец 6, Дополнительный) правило Конца месяца. Это правило применяется только когда Maturity
дата конца месяца в течение месяца, имея 30 или меньше дней. 0
= проигнорируйте правило, подразумевая, что дата купонного платежа связи всегда является тем же числовым днем месяца. 1
= установите правило о (значении по умолчанию), подразумевая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца
:
Если Bonds
таблица, Maturity
даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.
Если Bonds
матрица, n
- 2
к n
- 6
матрица, где каждая строка описывает связь, первые два столбца (Maturity
и CouponRate
) требуются. Остаток от столбцов является дополнительным, но должен быть добавлен в порядке. Все строки в Bonds
должен иметь одинаковое число столбцов.
.
Типы данных: double |
table
Yields
— Доход до срока погашения каждой связи в Bonds
Доход до срока погашения каждой связи в Bonds
, заданный как N
- 1
вектор-столбец. Количество строк (n) должно совпадать с количеством строк в Bonds
.
Доход до срока погашения должен раз в полгода составляться.
Типы данных: double
Settle
— Начальный момент времени представления расчетного дня в деривации кривой нулевой шириныНачальный момент времени представления расчетного дня в деривации кривой нулевой ширины, заданной как последовательный номер даты, вектор символов даты или массив datetime. Settle
представляет начальный момент времени для получения кривой нулевой ширины, и это обычно - общий расчетный день для всех связей.
Типы данных: double |
char
| datetime
OutputCompounding
— Соединение частоты выхода ZeroRates
(значение по умолчанию) | числовые значения: 0
,1
, 2
, 3
, 4
, 6
, 12
, 365
, -1
(Необязательно) Соединяя частоту выхода ZeroRates
, заданное использование позволенных значений:
0 — Простой процент (никакое соединение)
1 — Ежегодное соединение
2 — Полугодовое соединение (значение по умолчанию)
3 — Соединение три раза в год
4 — Ежеквартально соединение
6 — Два раза в месяц соединение
12 — Ежемесячно соединение
-1 — Непрерывное соединение
Типы данных: double
ZeroRates
— Подразумеваемые нулевые уровни для каждой точки вдоль инвестиционного горизонта заданы датой погашенияПодразумеваемые нулевые уровни для каждой точки вдоль инвестиционного горизонта, заданного датой погашения, возвращенной как m
- 1
вектор десятичных дробей, где m
количество связей с уникальными датами погашения. В агрегате, уровнях в ZeroRates
составьте кривую нулевой ширины.
Если больше чем одна связь имеет тот же Maturity
дата, zbtyield
возвращает средний нулевой уровень для того Maturity
. Любые уровни перед первым Maturity
приняты, чтобы быть равным уровню в первом Maturity
, то есть, кривая принята, чтобы быть плоской перед первым Maturity
.
CurveDates
— Даты погашения, которые соответствуют ZeroRates
Даты погашения, которые соответствуют ZeroRates
, возвращенный как m
- 1
вектор уникальных дат погашения, где m
количество связей различных дат погашения. Эти даты начинаются с самого раннего Maturity
дата и конец с последним Maturity
дата в Bonds
таблица или матрица.
Если любой входные параметры для Bonds
или Settle
имейте значения datetime, затем CurveDates
CurveDates
datetimes. В противном случае CurveDates
последовательные числа даты.
[1] Фабоцци, Франк Дж. “Структура Процентных ставок”. Ch. 6 в Фабоцци, Франке Дж. и Т. Дессе Фабоцци, редакторах Руководство Fixed Income Securities. 4-й редактор Нью-Йорк, Irwin Professional Publishing, 1995.
[2] Мсеналли, Ричард В. и Джеймс В. Джордан. “Термин Структура Процентных ставок”. в Ch. 37 в Fabozzi и Fabozzi, там же
[3] Десять кубометров, Satyajit. “Вычисляя Уровни Нулевого купона”. в Подкачке и Производном Финансировании. Приложение к Ch. 8, стр 219–225. Нью-Йорк, Ирвин Профешенэл Паблишинг, 1994.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.