Статическое распространение по точечной кривой
В R2017b изменилась спецификация дополнительных входных параметров. В то время как предыдущий упорядоченный входной синтаксис все еще поддержан, он больше не может поддерживаться в будущем релизе. Используйте дополнительные входные параметры пары "имя-значение": Period
, Basis
, EndMonthRule
, IssueDate
, FirstCouponDate
, LastCouponDate
, StartDate
, Face
, CompoundingFrequency
, DiscountBasis
и LastCouponInterest
.
Spread = bndspread(SpotInfo,Price,Coupon,Settle,Maturity)
Spread = bndspread(___,Name,Value)
Этот пример показывает, как вычислить Федеральную национальную ипотечную ассоциацию (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 array
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(datetime(CurveDates,'ConvertFrom','datenum','Locale','en_US'), 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
-by-1
или 1
-by-NUMBONDS
вектор.
Типы данных: double
Coupon
— Ежегодная купонная ставка связей, распространения которых вычисляютсяЕжегодная купонная ставка связей, распространения которых вычисляются, задала как десятичное значение с помощью скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор.
Типы данных: double
Settle
— Расчетный день связиРасчетный день связи, заданной как скаляр или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime. Дата Settle
должна быть перед датой Maturity
.
Типы данных: double
| char
| datetime
Maturity
— Дата погашения связиДата погашения связи, заданной как скаляр или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.
Типы данных: double
| char
| datetime
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (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 (СИА)
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 = ШИНА/252
Для получения дополнительной информации смотрите основание.
Типы данных: double
'EndMonthRule'
— Флаг правила конца месяца1
(в действительности) (значение по умолчанию) | неотрицательный целочисленный 0
или 1
Флаг правила конца месяца, заданный как пара, разделенная запятой, состоящая из 'EndMonthRule'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор. Это правило применяется только, когда Maturity
является датой конца месяца в течение месяца, имея 30 или меньше дней.
0
= Игнорирует правило, означая, что платежный день облигационного купона всегда является тем же числовым днем месяца.
1
= Установленное правило о, означая, что платежный день облигационного купона всегда является прошлым фактическим днем месяца.
Типы данных: логический
'IssueDate'
— Дата выпуска облигацийДата Выпуска облигаций, заданная как пара, разделенная запятой, состоящая из 'IssueDate'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.
Если вы не задаете IssueDate
, платежные дни потока наличности определяются от других входных параметров.
Типы данных: double
| char
| datetime
'FirstCouponDate'
— Неправильная или нормальная первая дата купонаНеправильная или нормальная первая дата купона, заданная как пара, разделенная запятой, состоящая из 'FirstCouponDate'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.
Если вы не задаете FirstCouponDate
, платежные дни потока наличности определяются от других входных параметров.
Типы данных: double
| char
| datetime
'LastCouponDate'
— Неправильная или нормальная последняя дата купонаНеправильная или нормальная последняя дата купона, заданная как пара, разделенная запятой, состоящая из 'LastCouponDate'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.
Если вы не задаете LastCouponDate
, платежные дни потока наличности определяются от других входных параметров.
Типы данных: double
| char
| datetime
'StartDate'
— Передайте срок начала работы платежейПередайте срок начала работы платежей, заданных как пара, разделенная запятой, состоящая из 'StartDate'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime. 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 (СИА)
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 = ШИНА/252
Для получения дополнительной информации смотрите основание.
Если основание дневного количества SIA задано во входном параметре Basis
и нет никакого значения, присвоенного для DiscountBasis
, поведение по умолчанию для основ SIA, чтобы использовать фактическое/фактическое дневное количество, чтобы вычислить коэффициенты дисконтирования.
Если основание дневного количества ICMA или BUS/252 заданы во входном параметре Basis
и нет никакого значения, присвоенного для DiscountBasis
, заданные основы от входного параметра Basis
используются.
Типы данных: double
'LastCouponInterest'
— Соединение соглашения для вычислительного урожая связи в последний период купонаcompound
(значение по умолчанию) | значения является simple
или compound
Соединение соглашения для вычисления урожая связи в последний период купона, заданный как пара, разделенная запятой, состоящая из 'LastCouponInterest'
и скаляра или NUMBONDS
-by-1
или 1
-by-NUMBONDS
вектор. LastCouponInterest
основан только на последнем купоне и номинальной стоимости, которая будет возмещена. Приемлемые значения:
simple
compound
Типы данных: char | cell
Spread
— Статическое распространение, чтобы протестировать в сравнении с эталоном в пунктахСтатическое распространение, чтобы протестировать в сравнении с эталоном, возвращенный в пунктах как скаляр или NUMBONDS
-by-1
вектор.
[1] Krgin, D. Руководство глобальных вычислений фиксированного дохода. Вайли, 2002.
[2] Mayle, J. "Методы вычислений стандартных защит: формулы ценных бумаг фиксированного дохода для аналитических мер". SIA, Vol 2, январь 1994.
[3] Stigum, M., Робинсон, F. Денежный рынок и вычисление связи. McGraw-Hill, 1996.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.