Создайте PAC и последовательный CMO

Этот пример показывает, как использовать базовый пул ценной бумаги, обеспеченной закладной, (MBS) для 30-летней ипотеки с фиксированной процентной ставкой 6%, чтобы задать связь PAC, и затем задать последовательный CMO от связи PAC. Анализируйте CMO путем сравнения распространения CMO с кривой нулевого уровня для 30-летней Казначейской облигации и затем вычислите средневзвешенную жизнь (WAL) для связи PAC.

Шаг 1. Задайте базовый ипотечный пул.

principal = 100000000;
grossrate = 0.06;
coupon = 0.05;
originalTerm = 360;
termRemaining = 360;
speed = 100;
delay = 14;

Settle      = datenum('1-Jan-2011');
IssueDate   = datenum('1-Jan-2011');
Maturity    = addtodate(IssueDate, 360, 'month');

Шаг 2. Вычислите базовый поток наличности пула.

[CFlowAmounts, CFlowDates, ~, ~, ~, UnitPrincipal, UnitInterest, ...
UnitPrepayment] = mbscfamounts(Settle, Maturity, IssueDate, grossrate, ...
coupon, delay, speed, []);

Шаг 3. Вычислите предварительные оплаты.

principalPayments = UnitPrincipal * principal;
netInterest = UnitInterest * principal;
prepayments = UnitPrepayment * principal;
dates = CFlowDates' + delay;

Шаг 4. Сгенерируйте график для лежания в основе платежей MBS.

area([principalPayments'+prepayments', netInterest'])
title('Underlying MBS Payments');
legend('Principal Payments (incl. Prepayments)', 'Interest Payments')

Шаг 5. Вычислите расписание PAC.

pacSpeed = [80 300];
[balanceSchedule, pacInitBalance] = ...
cmosched(principal, grossrate, originalTerm, termRemaining, ...
pacSpeed, []);

Шаг 6. Сгенерируйте график для основного расписания баланса PAC.

figure;
area([pacInitBalance'; balanceSchedule'])
title('PAC Principal Balance Schedule');
legend('Principal Balance Schedule');

Шаг 7. Вычислите поток наличности PAC.

pacTranchePrincipals = [pacInitBalance; principal-pacInitBalance];
pacTrancheCoupons = [0.05; 0.05];
[pacBalances, pacPrincipals, pacInterests] = ...
cmoschedcf(principalPayments+prepayments, ...
pacTranchePrincipals, pacTrancheCoupons, balanceSchedule);

Шаг 8. Сгенерируйте график для частей PAC CMO.

Сгенерируйте график для частей PAC CMO:

figure;
area([pacPrincipals' pacInterests']);
title('PAC CMO (PAC and Support Tranches)');
legend('PAC Principal Payments', 'Support Principal Payments', ...
'PAC Interest Payments', 'Support Interest Payments');

Шаг 9. Создайте последовательный CMO из связи PAC.

Части CMO, A, B, C, и D

seqTranchePrincipals = ...
[20000000; 20000000; 10000000; pacInitBalance-50000000];
seqTrancheCoupons = [0.05; 0.05; 0.05; 0.05];

Шаг 10. Вычислите потоки наличности для каждой части.

[seqBalances, seqPrincipals, seqInterests] = ...
cmoseqcf(pacPrincipals(1, :), seqTranchePrincipals, ...
seqTrancheCoupons, false);

Шаг 11. Сгенерируйте график для последовательного PAC CMO.

Сгенерируйте график для последовательного PAC CMO:

figure
area([seqPrincipals' pacPrincipals(2, :)' pacInterests']);
title('Sequential PAC CMO and Support Tranches');
legend('Sequential PAC Principals (A)', 'Sequential PAC Principals (B)', ...
'Sequential PAC Principals (C)', 'Sequential PAC Principals (D)', ...
'Support Principal Payments', 'PAC Interest Payments', ...
'Support Interest Payments');

Шаг 12. Создайте дисконтную кривую.

CurveSettle = datenum('1-Jan-2011');
ZeroRates = [0.01 0.03 0.10 0.19 0.45 0.81 1.76 2.50 3.18 4.09 4.38]'/100;
CurveTimes = [1/12 3/12 6/12 1 2 3 5 7 10 20 30]';
CurveDates = daysadd(CurveSettle, 360 * CurveTimes, 1);
zeroCurve = intenvset('Rates', ZeroRates, 'StartDates', CurveSettle, ...
'EndDates', CurveDates);

Шаг 13. Оцените потоки наличности CMO.

Поток наличности для последовательного принципала PAC часть вычисляется с помощью функций потока наличности cfbyzero, cfyield, cfprice и cfspread.

cflows = seqPrincipals(1, :)+seqInterests(1, :);
cfdates = dates(2:end)';
price1 = cfbyzero(zeroCurve, cflows, cfdates, Settle, 4)
price1 = 2.2109e+07
yield = cfyield(cflows, cfdates, price1, Settle, 'Basis', 4)
yield = 0.0090
price2 = cfprice(cflows, cfdates, yield, Settle, 'Basis', 4)
price2 = 2.2109e+07
spread = cfspread(zeroCurve, price2, cflows, cfdates, Settle, 'Basis', 4)
spread = 8.5711e-13
WAL = sum(cflows .* yearfrac(Settle, cfdates, 4)) / sum(cflows)
WAL = 2.5408

Средневзвешенная жизнь (WAL) для последовательного принципала PAC часть составляет 2,54 года.

Смотрите также

| | | | | | | |

Связанные примеры

Больше о