exponenta event banner

Создание 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. Создайте график для траншей 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');

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 года.

См. также

| | | | | | | |

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

Подробнее