Статический разброс по точечной кривой
В 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(Панель инструментов финансовых инструментов) или таблица.
Матрица двух столбцов - первый столбец является 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 (инструментарий финансовых инструментов) для создания годовой структуры терминов. Например:
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около-1 или 1около-NUMBONDS вектор.
Типы данных: double
Coupon - Годовая купонная ставка облигаций, спреды которых рассчитываютсяГодовая купонная ставка облигаций, спреды которых вычисляются, заданная как десятичное значение с помощью скаляра или NUMBONDSоколо-1 или 1около-NUMBONDS вектор.
Типы данных: double
Settle - Дата погашения облигацииДата расчета облигации, указанная как скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime. Settle дата должна быть до Maturity дата.
Типы данных: double | char | datetime
Maturity - Дата погашения облигацииДата погашения облигации, указанная как скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.
Типы данных: 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около-1 или 1около-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около-1 или 1около-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около-1 или 1около-NUMBONDS вектор. Это правило применяется только в том случае, если Maturity - дата окончания месяца, имеющая 30 или менее дней.
0 = Игнорировать правило, означающее, что дата выплаты бонусного купона всегда совпадает с числовым днем месяца.
1 = Установить правило, означающее, что дата выплаты бонусного купона всегда является последним фактическим днем месяца.
Типы данных: logical
'IssueDate' - Дата выпуска облигацийДата выпуска облигаций, указанная как пара, разделенная запятыми, состоящая из 'IssueDate' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.
Если не указать IssueDateдаты оплаты денежного потока определяются из других входных данных.
Типы данных: double | char | datetime
'FirstCouponDate' - нерегулярная или обычная дата первого купонаНеправильная или нормальная дата первого купона, указанная как пара, разделенная запятыми, состоящая из 'FirstCouponDate' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.
Если не указать FirstCouponDateдаты оплаты денежного потока определяются из других входных данных.
Типы данных: double | char | datetime
'LastCouponDate' - нерегулярная или обычная дата последнего купонаНеправильная или нормальная дата последнего купона, указанная как пара, разделенная запятыми, состоящая из 'LastCouponDate' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.
Если не указать LastCouponDateдаты оплаты денежного потока определяются из других входных данных.
Типы данных: double | char | datetime
'StartDate' - Форвардная дата начала платежейПрямая дата начала платежей, указанная как пара, разделенная запятыми, состоящая из 'StartDate' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime. StartDate - когда действительно начинается облигация (дата, с которой рассматривается денежный поток облигации). Для форвардного запуска инструмента укажите эту дату в качестве будущей даты.
Если не указать StartDate, дата начала действия - Settle дата.
Типы данных: double | char | datetime
'Face' - Номинальная стоимость облигации100 (по умолчанию) | числовыеНоминальная стоимость облигации, указанная как разделенная запятыми пара, состоящая из 'Face' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор.
Типы данных: double
'CompoundingFrequency' - Частота компаундирования для расчета выхода2, использование баз ICMA 1 (по умолчанию) | целое число со значением 1, 2, 3, 4, 6, или 12Частота объединения для расчета выхода, указанная как пара, разделенная запятыми, состоящая из 'CompoundingFrequency' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор.
1 - Годовое суммирование
2 - Полугодичное компаундирование
3 - Три раза в год
4 - Квартальное суммирование
6 - Компаундирование раз в два месяца
12 - Ежемесячное суммирование
Примечание
По умолчанию базы SIA (0-7) и BUS/252 использовать полугодовое соглашение о компаундировании и базы ICMA (8-12) использовать ежегодное соглашение о компаундировании.
Типы данных: double
'DiscountBasis' - базис, используемый для расчета коэффициентов дисконтирования для расчета доходности;0 (по умолчанию) | целые числа множества [0...13] | вектор целых чисел множества [0...13]Базис, используемый для вычисления коэффициентов дисконтирования для вычисления доходности, указанной как пара, разделенная запятыми, состоящая из 'DiscountBasis' и скаляр или NUMBONDSоколо-1 или 1около-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
Дополнительные сведения см. в разделе Базис.
Примечание
Если базис подсчета дней SIA определен в Basis входной аргумент и нет значения, назначенного для DiscountBasis, поведение по умолчанию заключается в том, чтобы базы SIA использовали фактическое/фактическое количество дней для вычисления коэффициентов дисконтирования.
Если база или BUS/252 подсчета дней ICMA определена в Basis входной аргумент и нет значения, назначенного для DiscountBasis, указанные базы из Basis используются входные аргументы.
Типы данных: double
'LastCouponInterest' - Комбинированное соглашение для расчета доходности облигации в последний купонный периодcompound (по умолчанию) | значения: simple или compoundСоглашение о сложении для расчета доходности облигации в последний купонный период, указанное как пара, разделенная запятыми, состоящая из 'LastCouponInterest' и скаляр или NUMBONDSоколо-1 или 1около-NUMBONDS вектор. LastCouponInterest основан только на последнем купоне и номинальной стоимости, подлежащей погашению. Допустимые значения:
simple
compound
Типы данных: char | cell
Spread - Статический разброс на эталонные значения в базисных точкахСтатический разброс на эталон, возвращаемый в базисных точках как скаляр или NUMBONDSоколо-1 вектор.
[1] Кргин, D. Справочник по глобальным расчетам фиксированного дохода. Уайли, 2002.
[2] Мейл, Дж. «Стандартные методы расчета ценных бумаг: формулы ценных бумаг с фиксированным доходом для аналитических показателей». SIA, том 2, январь 1994 года.
[3] Стигум, М., Робинсон, Ф. Денежный рынок и расчет облигаций. Макгроу-Хилл, 1996.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.