Создайте 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')

Figure contains an axes. The axes with title Underlying MBS Payments contains 2 objects of type area. These objects represent 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');

Figure contains an axes. The axes with title PAC Principal Balance Schedule contains an object of type area. This object represents Principal Balance Schedule.

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

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

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

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

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

Figure contains an axes. The axes with title PAC CMO (PAC and Support Tranches) contains 4 objects of type area. These objects represent 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. Сгенерируйте график для последовательного CMO PAC.

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

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');

Figure contains an axes. The axes with title Sequential PAC CMO and Support Tranches contains 7 objects of type area. These objects represent 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.

Денежный поток для последовательного транша основной суммы A 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 = 5.5084e-12
WAL = sum(cflows .* yearfrac(Settle, cfdates, 4)) / sum(cflows)
WAL = 2.5408

Средневзвешенный срок службы (WAL) для последовательного основного транша A PAC составляет 2,54 года.

См. также

| | | | | | | |

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

Подробнее о