Ценовые облигации в портфеле по набору нулевых кривых
вычисляет цены облигаций в портфеле с использованием набора нулевых кривых. 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 (SIA)
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 = BUS/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 в годовом исчислении2 (по умолчанию) | числовые значения: 1, 2, 3, 4, 6, 12,(Необязательно) Частота объединения входных данных ZeroRates в годовом исчислении с использованием допустимых значений:
1 - Годовое суммирование
2 - Полугодичное объединение (по умолчанию)
3 - Три раза в год
4 - Квартальное суммирование
6 - Компаундирование раз в два месяца
12 - Ежемесячное суммирование
Типы данных: double
BondPrices - Чистые цены облигацийЧистые цены облигаций, возвращенные как NUMBONDSоколо-NUMCURVES матрица. Каждый столбец выводится из соответствующей нулевой кривой в ZeroRates.
Кроме того, можно использовать метод Toolbox™ финансовых инструментов. getZeroRates (инструментарий финансовых инструментов) для IRDataCurve объект с Dates свойство для создания вектора дат и данных, приемлемых для prbyzero. Дополнительные сведения см. в разделе Преобразование объекта IRDataCurve или IRFфункциональCurve (панель инструментов финансовых инструментов).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.