bndspread

Статическое распространение по точечной кривой

В R2017b изменилась спецификация дополнительных входных параметров. В то время как предыдущий упорядоченный входной синтаксис все еще поддерживается, он больше не может поддерживаться в будущем релизе. Используйте дополнительные входные параметры пары "имя-значение": Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face, CompoundingFrequency, DiscountBasis, и LastCouponInterest.

Описание

пример

Spread = bndspread(SpotInfo,Price,Coupon,Settle,Maturity) вычисляет статическое распространение (Z-распространение), чтобы протестировать в сравнении с эталоном в пунктах.

пример

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;

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Treasury, FNMA 4 3/8.

В этом примере показано, как вычислить Федеральную национальную ипотечную ассоциацию (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;

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Treasury, FNMA 4 3/8.

Входные параметры

свернуть все

Информация о точечных уровнях в виде матрицы двух столбцов, пересчитанная на год структура термина, созданная 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

Цена за каждую отвлеченную сумму 100$ связей, распространения которых вычисляются в виде числового значения с помощью скаляра или NUMBONDS- 1 или 1- NUMBONDS вектор.

Типы данных: double

Ежегодная купонная ставка связей, распространения которых вычисляются в виде десятичного значения с помощью скаляра или NUMBONDS- 1 или 1- NUMBONDS вектор.

Типы данных: double

Расчетный день связи в виде скаляра или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime. Settle дата должна быть перед Maturity дата.

Типы данных: double | char | datetime

Дата погашения связи в виде скаляра или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Типы данных: double | char | datetime

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Spread = bndspread(SpotInfo,Price,Coupon,Settle,Maturity,'Period',4,'Basis',7)

Количество купонных платежей в год в виде разделенной запятой пары, состоящей из 'Period' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью значений: 0, 1, 2, 3, 4, 6, или 12.

Типы данных: double

Дневное количество инструмента в виде разделенной запятой пары, состоящей из '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' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней.

  • 0 = Проигнорируйте правило, подразумевая, что платежный день облигационного купона всегда является тем же числовым днем месяца.

  • 1 = Установите правило о, подразумевая, что платежный день облигационного купона всегда является прошлым фактическим днем месяца.

Типы данных: логический

Дата Выпуска облигаций в виде разделенной запятой пары, состоящей из 'IssueDate' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Если вы не задаете IssueDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: double | char | datetime

Неправильная или нормальная первая дата купона в виде разделенной запятой пары, состоящей из 'FirstCouponDate' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Если вы не задаете FirstCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: double | char | datetime

Неправильная или нормальная последняя дата купона в виде разделенной запятой пары, состоящей из 'LastCouponDate' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

Если вы не задаете LastCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: double | char | datetime

Передайте срок начала работы платежей в виде разделенной запятой пары, состоящей из 'StartDate' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор с помощью последовательных чисел даты, векторов символов даты или массивов datetime. StartDate когда связь на самом деле запускается (дата, с которой поток наличности связи рассматривается). Чтобы сделать инструментальный запуск форварда, задайте эту дату как будущую дату.

Если вы не задаете StartDate, эффективной датой начала является Settle дата.

Типы данных: double | char | datetime

Номинальная стоимость связи в виде разделенной запятой пары, состоящей из 'Face' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор.

Типы данных: double

Соединение частоты для вычисления выражения в виде разделенной запятой пары, состоящей из 'CompoundingFrequency' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор.

  • 1 — Ежегодное соединение

  • 2 — Полугодовое соединение

  • 3 — Соединение три раза в год

  • 4 — Ежеквартально соединение

  • 6 — Два раза в месяц соединение

  • 12 — Ежемесячно соединение

Примечание

По умолчанию, основы SIA (0-7) и BUS/252 используйте полугодовое соглашение соединения и основы ICMA (8-12) используйте ежегодное соглашение соединения.

Типы данных: double

Базис использовался для расчета коэффициентов дисконтирования в вычислении выражения в виде разделенной запятой пары, состоящей из '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' и скаляр или NUMBONDS- 1 или 1- NUMBONDS вектор. LastCouponInterest основан только на последнем купоне и номинальной стоимости, которая будет возмещена. Приемлемые значения:

  • simple

  • compound

Типы данных: char | cell

Выходные аргументы

свернуть все

Статическое распространение, чтобы протестировать в сравнении с эталоном, возвращенный в пунктах как скаляр или NUMBONDS- 1 вектор.

Ссылки

[1] Krgin, D. Руководство глобальных вычислений фиксированного дохода. Вайли, 2002.

[2] Mayle, J. "Методы вычислений стандартных защит: формулы ценных бумаг фиксированного дохода для аналитических мер". SIA, Vol 2, январь 1994.

[3] Stigum, M., Робинсон, F. Денежный рынок и вычисление связи. McGraw-Hill, 1996.

Представлено до R2006a