bndspread

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

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

Синтаксис

Spread = bndspread(SpotInfo,Price,Coupon,Settle,Maturity)
Spread = bndspread(___,Name,Value)

Описание

пример

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;

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

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

свернуть все

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

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

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

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

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

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

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

Дата погашения связи, заданной как скаляр или 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' и скаляра или NUMBONDS-by-1 или 1-by-NUMBONDS вектор с помощью значений: 0, 1, 2, 3, 4, 6 или 12.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

  • simple

  • compound

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

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

свернуть все

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

Ссылки

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

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

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

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