Настроенное опцией распространение (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
вычислить OAS.
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
) чтобы определить OAS, можно также использовать выражение, чтобы разрешить его (mbsyield2oas
). Кроме того, существуют противоположные функции OAS, которые возвращают цены, и дает к данному OAS (mbsoas2price
и mbsoas2yield
).
Пример также вновь заявляет о более ранних примерах, которые показывают дисконтное преимущество ценных бумаг от более высокого уровня предварительной оплаты, сохраняя все остальное неизменным. Отношение инвертируется для премиальных ценных бумаг.
mbscfamounts
| mbsconvp
| mbsconvy
| mbsdurp
| mbsdury
| mbsnoprepay
| mbsoas2price
| mbsoas2yield
| mbspassthrough
| mbsprice
| mbsprice2oas
| mbsprice2speed
| mbswal
| mbsyield
| mbsyield2oas
| mbsyield2speed
| psaspeed2default
| psaspeed2rate