Статический разброс по пятнистой кривой
В R2017b изменена спецификация необязательных входных параметров. Хотя синтаксис предыдущих упорядоченных входов все еще поддерживается, он может больше не поддерживаться в будущем релизе. Используйте необязательные входы пары "имя-значение": Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face, CompoundingFrequency, DiscountBasis, и LastCouponInterest.
Этот пример показывает, как вычислить Федеральную национальную ипотечную ассоциацию (FNMA) 4 3/8, распределенную по спотовой кривой казначейства, и построить график результатов.
RefMaturity = [datenum('02/27/2003'); datenum('05/29/2003'); datenum('10/31/2004'); datenum('11/15/2007'); datenum('11/15/2012'); datenum('02/15/2031')]; RefCpn = [0; 0; 2.125; 3; 4; 5.375] / 100; RefPrices = [99.6964; 99.3572; 100.3662; 99.4511; 99.4299; 106.5756]; RefBonds = [RefPrices, RefMaturity, RefCpn]; Settle = datenum('26-Nov-2002'); [ZeroRates, CurveDates] = zbtprice(RefBonds(:, 2:end), ... RefPrices, Settle)
ZeroRates = 6×1
0.0121
0.0127
0.0194
0.0317
0.0423
0.0550
CurveDates = 6×1
731639
731730
732251
733361
735188
741854
% FNMA 4 3/8 maturing 10/06 at 4.30 pm Tuesday Price = 105.484; Coupon = 0.04375; Maturity = datenum('15-Oct-2006'); % All optional inputs are supposed to be accounted by default, % except the accrued interest under 30/360 (SIA), so: Period = 2; Basis = 1; SpotInfo = [CurveDates, ZeroRates]; % Compute static spread over treasury curve, taking into account % the shape of curve as derived by bootstrapping method embedded % within bndspread. SpreadInBP = bndspread(SpotInfo, Price, Coupon, Settle, ... Maturity, Period, Basis)
SpreadInBP = 18.5669
plot(CurveDates, ZeroRates*100, 'b', CurveDates, ... ZeroRates*100+SpreadInBP/100, 'r--') legend({'Treasury'; 'FNMA 4 3/8'}) xlabel('Curve Dates') ylabel('Spot Rate [%]') grid;

Этот пример показывает, как вычислить Федеральную национальную ипотечную ассоциацию (FNMA) 4 3/8, распределенную по спотовой кривой казначейства с помощью datetime входы для Settle и Maturity и таблицу для SpotInfo и постройте график результатов.
RefMaturity = [datenum('02/27/2003'); datenum('05/29/2003'); datenum('10/31/2004'); datenum('11/15/2007'); datenum('11/15/2012'); datenum('02/15/2031')]; RefCpn = [0; 0; 2.125; 3; 4; 5.375] / 100; RefPrices = [99.6964; 99.3572; 100.3662; 99.4511; 99.4299; 106.5756]; RefBonds = [RefPrices, RefMaturity, RefCpn]; Settle = datetime('26-Nov-2002','Locale','en_US'); [ZeroRates, CurveDates] = zbtprice(RefBonds(:, 2:end), ... RefPrices, Settle)
ZeroRates = 6×1
0.0121
0.0127
0.0194
0.0317
0.0423
0.0550
CurveDates = 6x1 datetime
27-Feb-2003
29-May-2003
31-Oct-2004
15-Nov-2007
15-Nov-2012
15-Feb-2031
% FNMA 4 3/8 maturing 10/06 at 4.30 pm Tuesday Price = 105.484; Coupon = 0.04375; Maturity = datetime('15-Oct-2006','Locale','en_US'); % All optional inputs are accounted by default, % except the accrued interest under 30/360 (SIA), so: Period = 2; Basis = 1; SpotInfo = table(CurveDates, ZeroRates); % Compute static spread over treasury curve, taking into account % the shape of curve as derived by bootstrapping method embedded % within bndspread. SpreadInBP = bndspread(SpotInfo, Price, Coupon, Settle, ... Maturity, Period, Basis)
SpreadInBP = 18.5669
plot(CurveDates, ZeroRates*100, 'b', CurveDates, ... ZeroRates*100+SpreadInBP/100, 'r--') legend({'Treasury'; 'FNMA 4 3/8'}) xlabel('Curve Dates') ylabel('Spot Rate [%]') grid;

SpotInfo - Информация о спотовых скоростяхИнформация о спот-скоростях, заданная как матрица из двух столбцов, ежегодная структура терминов, созданная intenvset (Financial Instruments Toolbox) или таблица.
Матрица из двух столбцов - первый столбец является SpotDate, и второй столбец, ZeroRates, - нулевая ставка, соответствующая срокам погашения на SpotDate. Рекомендуется, чтобы точечные ставки были расположены максимально равномерно обособленно, возможно, та, которая построена из 3-месячных ставок по депозитам. Для примера, используя 3-месячные ставки по депозитам:
SpotInfo = ...
[datenum('2-Jan-2004') , 0.03840;
datenum('2-Jan-2005') , 0.04512;
datenum('2-Jan-2006') , 0.05086];Годовая структура терминов - См. intenvset (Financial Instruments Toolbox) для создания структуры годовых терминов. Для примера:
Settle = datenum('1-Jan-2004');
Rates = [0.03840; 0.04512; 0.05086];
EndDates = [datenum('2-Jan-2004'); datenum('2-Jan-2005');...
datenum('2-Jan-2006')];
SpotInfo = intenvset('StartDates' , Settle ,...
'Rates' , Rates ,...
'EndDates' , EndDates,...
'Compounding', 2 ,...
'Basis' , 0);
Таблица - Если SpotInfo является таблицей, первый столбец может быть либо серийным номером даты, вектором символов даты или массивом datetime. Второй столбец является числовыми данными, представляющими нулевые скорости. Для примера:
ZeroRates = … [0.012067955808764;0.012730933424479;0.019360902068703;0.031704525214251;0.042306085224510;0.054987415342936];
CurveDates = [731639;731730;732251;733361;735188;741854];
Settle = datenum('26-Nov-2002');
Price = 105.484;
Coupon = 0.04375;
Maturity = datenum('15-Oct-2006');
Period = 2;
Basis = 1;
SpotInfo = table(datestr(CurveDates), ZeroRates);
Типы данных: double | table | struct
Price - Цена на каждые $100 условной суммы облигаций, спреды которых вычисляютсяЦена для каждой номинальной суммы $100 облигаций, спреды которых вычислены, задается в виде числового значения с помощью скаляра или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор.
Типы данных: double
Coupon - Годовая купонная ставка облигаций, спреды которых вычисляютсяГодовая купонная ставка облигаций, спреды которых вычисляются в виде десятичного значения с использованием скаляра или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор.
Типы данных: double
Settle - Дата погашения облигацииДата расчета облигации в виде скаляра или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени. The Settle дата должна быть перед Maturity дата.
Типы данных: double | char | datetime
Maturity - Дата погашения облигацииДата погашения облигации в виде скаляра или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.
Типы данных: double | char | datetime
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
Spread = bndspread(SpotInfo,Price,Coupon,Settle,Maturity,'Period',4,'Basis',7)'Period' - Количество купонных выплат в год2
(по умолчанию) | число со значениями 0, 1, 2, 3, 4, 6 или 12Количество купонных выплат в год в виде разделенной разделенными запятой парами, состоящей из 'Period' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием значений: 0, 1, 2, 3, 4, 6, или 12.
Типы данных: double
'Basis' - Основа прибора для подсчета дней0 (по умолчанию) | числовые значения: 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13Счетчик дней инструмента, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с поддерживаемым значением:
0 = факт/факт
1 = 30/360 (SIA)
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 = BUS/252
Для получения дополнительной информации см. раздел Базиса.
Типы данных: double
'EndMonthRule' - Флаг правила в конце месяца1 (в действии) (по умолчанию) | неотрицательное целое число 0 или 1Флаг правила в конце месяца, заданный как разделенная разделенными запятой парами, состоящая из 'EndMonthRule' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор. Это правило применяется только тогда, когда Maturity - дата окончания месяца для месяца, имеющего 30 или менее дней.
0 = Игнорируйте правило, означающее, что дата выплаты купона по облигации всегда совпадает с числовым днем месяца.
1 = Установите правило, означающее, что дата выплаты купона по облигации всегда является последним фактическим днем месяца.
Типы данных: logical
'IssueDate' - Дата выпуска облигацийДата выпуска облигации, заданная как разделенная разделенными запятой парами, состоящая из 'IssueDate' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.
Если вы не задаете IssueDateДаты платежа денежного потока определяются из других входов.
Типы данных: double | char | datetime
'FirstCouponDate' - Нерегулярная или нормальная дата первого купонаНерегулярная или нормальная дата первого купона, заданная как разделенная разделенными запятой парами, состоящая из 'FirstCouponDate' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.
Если вы не задаете FirstCouponDateДаты платежа денежного потока определяются из других входов.
Типы данных: double | char | datetime
'LastCouponDate' - Нерегулярная или нормальная дата последнего купонаНерегулярная или нормальная дата последнего купона, заданная как разделенная разделенными запятой парами, состоящая из 'LastCouponDate' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.
Если вы не задаете LastCouponDateДаты платежа денежного потока определяются из других входов.
Типы данных: double | char | datetime
'StartDate' - Форвардная дата начала платежейДата начала пересчета платежей, заданная как разделенная разделенными запятой парами, состоящая из 'StartDate' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени. The StartDate это когда облигация фактически начинается (дата, с которой рассматривается денежный поток облигаций). Чтобы сделать инструмент стартовым, укажите эту дату как будущую дату.
Если вы не задаете StartDate, дата начала вступления в силу является Settle дата.
Типы данных: double | char | datetime
'Face' - Номинальное значение облигации100 (по умолчанию) | числоНоминальное значение облигации, заданная как разделенная разделенными запятой парами, состоящая из 'Face' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор.
Типы данных: double
'CompoundingFrequency' - Частота компаундирования для расчета выражения2, основы ICMA используют 1 (по умолчанию) | целое число со значением 1, 2, 3, 4, 6, или 12Частота компаундирования для вычисления выражения, заданная как разделенная разделенными запятой парами, состоящая из 'CompoundingFrequency' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор.
1 - Ежегодное компаундирование
2 - Полу-годичное компаундирование
3 - Смешивание три раза в год
4 - ежеквартальное компаундирование
6 - Двухмесячное компаундирование
12 - Ежемесячное компаундирование
Примечание
По умолчанию SIA основ (0- 7) и BUS/252 используйте полугодовое соглашение о компаундировании и основы ICMA (8- 12) использовать ежегодное соглашение о компаундировании.
Типы данных: double
'DiscountBasis' - Базис, используемый для вычисления коэффициентов дисконтирования для вычисления выражения0 (по умолчанию) | целые числа множества [0...13] | вектор целых чисел множества [0...13]Базис, используемый для вычисления коэффициентов дисконтирования для вычисления выражения, заданный как разделенная разделенными запятой парами, состоящая из 'DiscountBasis' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор. Значения:
0 = факт/факт
1 = 30/360 (SIA)
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 = BUS/252
Для получения дополнительной информации см. раздел Базиса.
Примечание
Если в Basis определен базис подсчета дней SIA входной параметр и нет значения, назначенного для DiscountBasisпо умолчанию для основ SIA используется фактическое/фактическое количество дней для вычисления коэффициентов дисконтирования.
Если в BUS/252 задан базис или Basis дневного отсчета ICMA входной параметр и нет значения, назначенного для DiscountBasis, указанные основы из Basis используются входные параметры.
Типы данных: double
'LastCouponInterest' - Соглашение о компаундировании для вычисления выражения облигации в последний купонный периодcompound (по умолчанию) | значения simple или compoundСоглашение о компаундировании для вычисления выражения облигации в последнем купонном периоде, заданное как разделенная разделенными запятой парами, состоящая из 'LastCouponInterest' и скаляр или NUMBONDS-by- 1 или 1-by- NUMBONDS вектор. LastCouponInterest основан только на последнем купоне и значениях лица, подлежащих погашению. Допустимые значения:
simple
compound
Типы данных: char | cell
Spread - Статический разброс на бенчмарки в базисных точкахСтатический разброс на бенчмарк, возвращенный в базисных точках как скаляр или NUMBONDS-by- 1 вектор.
[1] Кргин, Д. Справочник по глобальным расчетам фиксированного дохода. Уайли, 2002.
[2] Mayle, J. «Стандартные методы расчета ценных бумаг: формулы ценных бумаг с фиксированным доходом для аналитических мер». SIA, Vol 2, Jan 1994.
[3] Стигум, М., Робинсон, Ф. Денежный рынок и расчет облигаций. МакГро-Хилл, 1996.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.