Вычисление скорректированного по опциям спреда

Скорректированный по опциям спред (OAS) является суммой дополнительных процентов, добавленных выше (или ниже, если отрицательно) кривая ссылка нуля. Чтобы вычислить OAS, вы должны предоставить нулевую кривую в качестве дополнительного входа. Вы можете задать нулевую кривую в любых интервалах и с любым методом компаундирования. (Чтобы минимизировать любую ошибку из-за интерполяции, держите интервалы как можно более регулярными и частыми.) Необходимо задать вектор предоплаты или скорость, соответствующую стандартному вектору предоплаты PSA.

Один из способов вычислить соответствующую нулевую кривую для агентства - посмотреть на его выражения облигаций и загрузить их с самой короткой даты и далее. Это можно сделать с помощью функций Financial Toolbox™ zbtprice и zbtyield.

В следующем примере показано, как вычислить соответствующую нулевую кривую с последующим расчетом OAS пула. В этом примере вычисляется OAS 30-летней ипотеки с фиксированной ставкой с примерно 28-летним средневзвешенным сроком погашения, учитывая предположение о скорости предоплаты 0, 50 и 100 PSA.

Создайте кривую для zerorates.

Bonds = [datenum('11/21/2002')   0        100    0    2    1;    
         datenum('02/20/2003')   0        100    0    2    1;
         datenum('07/31/2004')   0.03     100    2    3    1;
         datenum('08/15/2007')   0.035    100    2    3    1;
         datenum('08/15/2012')   0.04875  100    2    3    1;
         datenum('02/15/2031')   0.05375  100    2    3    1];
  
Yields = [0.0162;
          0.0163;
          0.0211;
          0.0328;
          0.0420;
          0.0501];

Поскольку вышесказанное является данными Казначейства, а не выбранными агентскими данными, принимается срочная структура спреда. В этом примере разброс уменьшается пропорционально с максимума 250 базисных точек при самой короткой зрелости.

Yields = Yields + 0.025 * (1./[1:6]');

Получите параметры из Bonds матрица.

Settle = datenum('20-Aug-2002');
Maturity = Bonds(:,1);
CouponRate = Bonds(:,2);
Face = Bonds(:,3);
Period = Bonds(:,4);
Basis = Bonds(:,5);
EndMonthRule = Bonds(:,6);
  
[Prices, AccruedInterest] = bndprice(Yields, CouponRate, ...
Settle, Maturity, Period, Basis, EndMonthRule, [], [], [], [], ... 
Face);

Использовать zbtprice для решения нулевых ставок.

[ZeroRatesP, CurveDatesP] = zbtprice(Bonds, Prices, Settle);
ZeroCompounding = 2*ones(size(ZeroRatesP));
ZeroMatrix = [CurveDatesP, ZeroRatesP, ZeroCompounding];

Используйте выход из zbtprice для вычисления ОАГ.

Price = 95;
Settle = datenum('20-Aug-2002');
Maturity = datenum('2-Jan-2030');
IssueDate = datenum('2-Jan-2000');
GrossRate = 0.08125;
CouponRate = 0.075;
Delay = 14;
Interpolation = 1;
PrepaySpeed = [0; 50; 100];
  
OAS = mbsprice2oas(ZeroMatrix, Price, Settle, Maturity, ...
IssueDate, GrossRate, CouponRate, Delay, Interpolation, ... 
PrepaySpeed)
OAS =

    26.0502
    28.6348
    31.2222

Этот пример показывает, что один набор денежных потоков дисконтируется и решается для его OAS, в отличие от NumberOfPaths набор денежных потоков, как показано в разделе Оценка ипотечного пула. Усреднение наборов денежных потоков, полученных в результате всех симуляций, в один средний вектор денежного потока и решение для OAS, дисконтирует средние денежные потоки, чтобы иметь текущее значение сегодняшней (средней) цены.

В то время как этот пример использует цену ипотечного пула (mbsprice2oas) для определения ОАГ можно также использовать выражение для ее разрешения (mbsyield2oas). Кроме того, существуют обратные функции OAS, которые возвращают цены и доходности по данным OAS (mbsoas2price и mbsoas2yield).

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

См. также

| | | | | | | | | | | | | | | | |

Похожие примеры

Подробнее о