Ценовые связи в портфеле набором кривых нулевой ширины
вычисляет цены облигаций в портфеле с помощью набора кривых нулевой ширины. BondPrices
= prbyzero(Bonds
,Settle
,ZeroRates
,ZeroDates
)
добавляет дополнительный аргумент для BondPrices
= prbyzero(___,Compounding
)Compounding
.
Этот пример использует функциональный zbtprice
вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero
вычислить цены.
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]; Prices = [ 99.375; 99.875; 105.75 ; 96.875; 103.625; 101.125; 103.125; 99.375; 101.0 ; 101.25 ; 96.375; 102.75 ]; Settle = datenum('12/18/1997');
Установите полугодовое соединение для кривой нулевой ширины на фактической/365 основе.
OutputCompounding = 2;
Выполните функциональный zbtprice
который возвращает кривую нулевой ширины в датах погашения.
[ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle,...
OutputCompounding)
ZeroRates = 11×1
0.0616
0.0609
0.0658
0.0590
0.0647
0.0655
0.0606
0.0601
0.0642
0.0621
⋮
ZeroDates = 11×1
729907
730364
730439
730500
730667
730668
730971
731032
731033
731321
⋮
Выполните функциональный prbyzero
.
BondPrices = prbyzero(Bonds, Settle, ZeroRates, ZeroDates)
BondPrices = 12×1
99.3750
98.7980
106.8270
96.8750
103.6249
101.1250
103.1250
99.3637
101.0000
101.2500
⋮
В этом примере zbtprice
и prbyzero
точно не инвертируйте друг друга. Многие связи имеют конец месяца, отделяют чертой (EndMonthRule = 0
). Правило тонко влияет на расчет фактора времени. Если вы устанавливаете правило о (EndMonthRule = 1
) везде в Bonds
матрица, затем prbyzero
возвращает исходные цены, кроме тех случаев, когда две несовместимых цены падают на ту же дату погашения.
Этот пример использует функциональный zbtprice
вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero
с 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]; Prices = [ 99.375; 99.875; 105.75 ; 96.875; 103.625; 101.125; 103.125; 99.375; 101.0 ; 101.25 ; 96.375; 102.75 ]; Settle = datenum('12/18/1997'); OutputCompounding = 2; [ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle, OutputCompounding); dates = datetime(Bonds(:,1),'ConvertFrom','datenum','Locale','en_US'); data = Bonds(:,2:end); t=[table(dates) array2table(data)]; BondPrices = prbyzero(t, datetime(Settle,'ConvertFrom','datenum','Locale','en_US'),... ZeroRates, datetime(ZeroDates,'ConvertFrom','datenum','Locale','en_US'))
BondPrices = 12×1
99.3750
98.7980
106.8270
96.8750
103.6249
101.1250
103.1250
99.3637
101.0000
101.2500
⋮
Bonds
— Информация об облигации на предъявителя, чтобы вычислить ценыИнформация об облигации на предъявителя, чтобы вычислить цены в виде таблицы с 6 столбцами или NumBonds
- 6
матрица информации о связи, где столбцы таблицы или столбцы матрицы содержит:
Maturity
(Необходимая) Дата погашения связи, как последовательный номер даты. Использование datenum
преобразовывать векторы символов даты в последовательные числа даты. Если вход Bonds
таблица, Maturity
даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.
CouponRate
(Необходимое) Десятичное число, указывающее на годовую процентную ставку раньше, определяло купоны, подлежащие оплате на связи.
Face
(Необязательно) Поверхность или номинальная стоимость связи. Значение по умолчанию = 100
.
Period
(Необязательно) Купоны в год связи. Позволенными значениями является 0
, 1, 2
(значение по умолчанию),
3
, 4, 6
, и
12
.
Basis
(Необязательно) основание Дневного количества связи. Вектор из целых чисел.
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
(Необязательно) правило Конца месяца. Это правило применяется только когда Maturity
дата конца месяца в течение месяца, имея 30 или меньше дней. 0
= проигнорируйте правило, подразумевая, что дата купонного платежа связи всегда является тем же числовым днем месяца. 1
= установите правило о (значении по умолчанию), подразумевая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца
:
Примечание
Если Bonds
таблица, столбцы таблицы имеют то же значение как тогда, когда матрица используется, но Maturity
даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.
Если Bonds
матрица, это - NUMBONDS
- 6
матрица связей, где каждая строка описывает одну связь. Первые два столбца требуются; остальные столбцы являются дополнительными, но должны быть добавлены в порядке. Все строки в Bonds
должен иметь одинаковое число столбцов. Столбцами является Maturity
, CouponRate
, Face
, Period
, Basis
, и EndMonthRule
.
.
Типы данных: double |
table
Settle
— Расчетный деньРасчетный день в виде последовательных чисел даты, векторов символов даты или массивов datetime.
Типы данных: double |
datetime
| char
ZeroRates
— Наблюдаемые нулевые уровниНаблюдаемые нулевые уровни в виде NUMDATES
- NUMCURVES
матрица десятичных дробей. Каждый столбец представляет кривую уровня. Каждая строка представляет дату наблюдения.
Типы данных: double |
datetime
| char
ZeroDates
— Наблюдаемые даты ZeroRates
Наблюдаемые даты ZeroRates
В виде NUMDATES
- 1
столбец с помощью последовательных чисел даты, векторов символов даты или массивов datetime.
Типы данных: double |
datetime
| char
Compounding
— Соединение частоты входа ZeroRates
когда пересчитано на год
(значение по умолчанию) | числовые значения: 1
, 2
, 3
, 4
, 6
, 12
,(Необязательно) Соединяя частоту входа ZeroRates
когда пересчитано на год, заданное использование позволенных значений:
1 — Ежегодное соединение
2 — Полугодовое соединение (значение по умолчанию)
3 — Соединение три раза в год
4 — Ежеквартально соединение
6 — Два раза в месяц соединение
12 — Ежемесячно соединение
Типы данных: double
BondPrices
— Чистые цены облигацийЧистые цены облигаций, возвращенные как NUMBONDS
- NUMCURVES
матрица. Каждый столбец выведен из соответствующей кривой нулевой ширины в ZeroRates
.
Кроме того, можно использовать метод Financial Instruments Toolbox™ getZeroRates
(Financial Instruments Toolbox) для IRDataCurve
объект с Dates
свойство создать вектор из дат и данных, приемлемых для prbyzero
. Для получения дополнительной информации смотрите Преобразование Объекта IRDataCurve или IRFunctionCurve (Financial Instruments Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.