Статическое распространение по точечной кривой
В 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
- 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'
— Количество купонных платежей в год
(значение по умолчанию) | числовой со значениями 0
, 1
, 2
, 3
, 4
, 6
или 12
Количество купонных платежей в год в виде разделенной запятой пары, состоящей из 'Period'
и скаляр или NUMBONDS
- 1
или 1
- NUMBONDS
вектор с помощью значений: 0
, 1, 2
, 3
, 4
, 6
, или
12
.
Типы данных: double
'Basis'
— Базис дневного количества инструмента
(значение по умолчанию) | числовые значения: 0
,1
, 2
, 3
, 4
, 6
, 7
, 8
, 9
, 10
, 11
, 12
, 13
Дневное количество инструмента в виде разделенной запятой пары, состоящей из 'Basis'
и скаляр или NUMBONDS
- 1
или 1
- 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'
— Флаг правила конца месяца
(в действительности) (значение по умолчанию) | неотрицательный целочисленный 0
или 1
Правило конца месяца отмечает в виде разделенной запятой пары, состоящей из 'EndMonthRule'
и скаляр или NUMBONDS
- 1
или 1
- NUMBONDS
вектор. Это правило применяется только когда Maturity
дата конца месяца в течение месяца, имея 30 или меньше дней.
0 = Проигнорируйте правило, подразумевая, что платежный день облигационного купона всегда является тем же числовым днем месяца.
1 = Установите правило о, подразумевая, что платежный день облигационного купона всегда является прошлым фактическим днем месяца.
Типы данных: логический
'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'
— Номинальная стоимость связи
(значение по умолчанию) | числовойНоминальная стоимость связи в виде разделенной запятой пары, состоящей из '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 (СИА)
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
- 1
или 1
- NUMBONDS
вектор. LastCouponInterest
основан только на последнем купоне и номинальной стоимости, которая будет возмещена. Приемлемые значения:
simple
compound
Типы данных: char |
cell
Spread
— Статическое распространение, чтобы протестировать в сравнении с эталоном в пунктахСтатическое распространение, чтобы протестировать в сравнении с эталоном, возвращенный в пунктах как скаляр или NUMBONDS
- 1
вектор.
[1] Krgin, D. Руководство глобальных вычислений фиксированного дохода. Вайли, 2002.
[2] Mayle, J. "Методы вычислений стандартных защит: формулы ценных бумаг фиксированного дохода для аналитических мер". SIA, Vol 2, январь 1994.
[3] Stigum, M., Робинсон, F. Денежный рынок и вычисление связи. McGraw-Hill, 1996.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.