prbyzero

Ценовые связи в портфеле набором кривых нулевой ширины

Описание

пример

BondPrices = prbyzero(Bonds,Settle,ZeroRates,ZeroDates) вычисляет цены облигаций в портфеле с помощью набора кривых нулевой ширины.

пример

BondPrices = prbyzero(___,Compounding) добавляет дополнительный аргумент для Compounding.

Примеры

свернуть все

Этот пример использует функциональный zbtprice вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero вычислить цены.

Bonds = [datenum('6/1/1998') 0.0475 100 2 0 0; 
         datenum('7/1/2000') 0.06 100 2 0 0; 
         datenum('7/1/2000') 0.09375 100 6 1 0; 
         datenum('6/30/2001') 0.05125 100 1 3 1;
         datenum('4/15/2002') 0.07125 100 4 1 0;
         datenum('1/15/2000') 0.065 100 2 0 0; 
         datenum('9/1/1999') 0.08 100 3 3 0; 
         datenum('4/30/2001') 0.05875 100 2 0 0; 
         datenum('11/15/1999') 0.07125 100 2 0 0; 
         datenum('6/30/2000') 0.07 100 2 3 1; 
         datenum('7/1/2001') 0.0525 100 2 3 0; 
         datenum('4/30/2002') 0.07 100 2 0 0];

Prices = [ 99.375;
           99.875;
          105.75 ;
           96.875;
          103.625;
          101.125;
          103.125;
           99.375;
          101.0  ;
          101.25 ;
           96.375;
          102.75 ];

Settle = datenum('12/18/1997');

Установите полугодовое соединение для кривой нулевой ширины на фактическом/365 базисе.

OutputCompounding = 2;

Выполните функциональный zbtprice который возвращает кривую нулевой ширины в датах погашения.

[ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle,...
OutputCompounding)
ZeroRates = 11×1

    0.0616
    0.0609
    0.0658
    0.0590
    0.0647
    0.0655
    0.0606
    0.0601
    0.0642
    0.0621
      ⋮

ZeroDates = 11×1

      729907
      730364
      730439
      730500
      730667
      730668
      730971
      731032
      731033
      731321
      ⋮

Выполните функциональный prbyzero.

BondPrices = prbyzero(Bonds, Settle, ZeroRates, ZeroDates)
BondPrices = 12×1

   99.3750
   98.7980
  106.8270
   96.8750
  103.6249
  101.1250
  103.1250
   99.3637
  101.0000
  101.2500
      ⋮

В этом примере zbtprice и prbyzero точно не инвертируйте друг друга. Многие связи имеют конец месяца, отделяют чертой (EndMonthRule = 0). Правило тонко влияет на расчет фактора времени. Если вы устанавливаете правило о (EndMonthRule = 1) везде в Bonds матрица, затем prbyzero возвращает исходные цены, кроме тех случаев, когда две несовместимых цены падают на ту же дату погашения.

Этот пример использует функциональный zbtprice вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero с datetime входные параметры, чтобы вычислить цены.

Bonds = [datenum('6/1/1998') 0.0475 100 2 0 0;
         datenum('7/1/2000') 0.06 100 2 0 0;
         datenum('7/1/2000') 0.09375 100 6 1 0;
         datenum('6/30/2001') 0.05125 100 1 3 1;
         datenum('4/15/2002') 0.07125 100 4 1 0;
         datenum('1/15/2000') 0.065 100 2 0 0;
         datenum('9/1/1999') 0.08 100 3 3 0;
         datenum('4/30/2001') 0.05875 100 2 0 0;
         datenum('11/15/1999') 0.07125 100 2 0 0;
         datenum('6/30/2000') 0.07 100 2 3 1;
         datenum('7/1/2001') 0.0525 100 2 3 0;
         datenum('4/30/2002') 0.07 100 2 0 0];

Prices = [ 99.375;
           99.875;
          105.75 ;
           96.875;
          103.625;
          101.125;
          103.125;
           99.375;
          101.0  ;
          101.25 ;
           96.375;
          102.75 ];

Settle = datenum('12/18/1997');
OutputCompounding = 2;

[ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle, OutputCompounding);

dates = datetime(Bonds(:,1),'ConvertFrom','datenum','Locale','en_US');
data = Bonds(:,2:end);
t=[table(dates) array2table(data)];
BondPrices = prbyzero(t, datetime(Settle,'ConvertFrom','datenum','Locale','en_US'),...
ZeroRates, datetime(ZeroDates,'ConvertFrom','datenum','Locale','en_US'))
BondPrices = 12×1

   99.3750
   98.7980
  106.8270
   96.8750
  103.6249
  101.1250
  103.1250
   99.3637
  101.0000
  101.2500
      ⋮

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

свернуть все

Информация об облигации на предъявителя, чтобы вычислить цены в виде таблицы с 6 столбцами или NumBonds- 6 матрица информации о связи, где столбцы таблицы или столбцы матрицы содержит:

  • Maturity (Необходимая) Дата погашения связи, как последовательный номер даты. Использование datenum преобразовывать векторы символов даты в последовательные числа даты. Если вход Bonds таблица, Maturity даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.

  • CouponRate (Необходимое) Десятичное число, указывающее на годовую процентную ставку раньше, определяло купоны, подлежащие оплате на связи.

  • Face (Необязательно) Поверхность или номинальная стоимость связи. Значение по умолчанию = 100.

  • Period (Необязательно) Купоны в год связи. Позволенными значениями является 0, 1, 2 (значение по умолчанию), 3, 4, 6, и 12.

  • Basis (Необязательно) базис Дневного количества связи. Вектор из целых чисел.

    •  0 = фактический/фактический (значение по умолчанию)

    •  1 = 30/360 (СИА)

    •  2 = Фактический/360

    •  3 = Фактический/365

    •  4 = 30/360 (BMA)

    •  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

    • Для получения дополнительной информации смотрите Базис.

  • EndMonthRule (Необязательно) правило Конца месяца. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней. 0 = проигнорируйте правило, подразумевая, что дата купонного платежа связи всегда является тем же числовым днем месяца. 1 = установите правило о (значении по умолчанию), подразумевая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца

:

Примечание

  • Если Bonds таблица, столбцы таблицы имеют то же значение как тогда, когда матрица используется, но Maturity даты могут быть последовательными числами даты, векторами символов даты или массивами datetime.

  • Если Bonds матрица, это - NUMBONDS- 6 матрица связей, где каждая строка описывает одну связь. Первые два столбца требуются; остальные столбцы являются дополнительными, но должны быть добавлены в порядке. Все строки в Bonds должен иметь одинаковое число столбцов. Столбцами является Maturity, CouponRate, Face, Period, Basis, и EndMonthRule.

.

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

Расчетный день в виде последовательных чисел даты, векторов символов даты или массивов datetime.

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

Наблюдаемые нулевые уровни в виде NUMDATES- NUMCURVES матрица десятичных дробей. Каждый столбец представляет кривую уровня. Каждая строка представляет дату наблюдения.

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

Наблюдаемые даты ZeroRatesВ виде NUMDATES- 1 столбец с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

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

(Необязательно) Соединяя частоту входа ZeroRates когда пересчитано на год, заданное использование позволенных значений:

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

  • 2 — Полугодовое соединение (значение по умолчанию)

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

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

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

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

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

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

свернуть все

Чистые цены облигаций, возвращенные как NUMBONDS- NUMCURVES матрица. Каждый столбец выведен из соответствующей кривой нулевой ширины в ZeroRates.

Кроме того, можно использовать метод Financial Instruments Toolbox™ getZeroRates (Financial Instruments Toolbox) для IRDataCurve объект с Dates свойство создать вектор из дат и данных, приемлемых для prbyzero. Для получения дополнительной информации смотрите Преобразование Объекта IRDataCurve или IRFunctionCurve (Financial Instruments Toolbox).

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