Main Content

mbspassthrough

Mortgage pool cash flows and balances with prepayment

Description

[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(OriginalBalance,GrossRate,OriginalTerm) calculates mortgage pool cash flows and balances with prepayments.

If a standard (PSA) prepayment is specified, "aging" is applied to standard prepayment vector. Aging is the same amount as the age of the pool (OriginalTerm - TermRemaining).

example

[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(___,TermRemaining,PrepaySpeed,PrepayMatrix) specifies options using one or more optional arguments in addition to the input arguments in the previous syntax.

example

Examples

collapse all

This example shows how to compute the cash flows and balances of a 3-month old mortgage pool with original term of 360 months, assuming a prepayment speed of 100.

OriginalBalance = 100000;
GrossRate = 0.08125;
OriginalTerm = 360;
TermRemaining = 357;
PrepaySpeed = 100;

[Balance, Payment, Principal, Interest, Prepayment] =... 
mbspassthrough(OriginalBalance, GrossRate, OriginalTerm,... 
TermRemaining, PrepaySpeed)
Balance = 357×1
104 ×

    9.9866
    9.9715
    9.9548
    9.9363
    9.9161
    9.8942
    9.8707
    9.8454
    9.8185
    9.7900
    9.7598
    9.7280
    9.6946
    9.6596
    9.6230
      ⋮

Payment = 357×1

  743.9671
  743.4693
  742.8468
  742.0999
  741.2285
  740.2329
  739.1132
  737.8699
  736.5034
  735.0139
  733.4021
  731.6684
  729.8136
  727.8383
  725.7432
      ⋮

Principal = 357×1

   66.8837
   67.2915
   67.6904
   68.0802
   68.4607
   68.8317
   69.1929
   69.5442
   69.8854
   70.2163
   70.5367
   70.8464
   71.1453
   71.4331
   71.7098
      ⋮

Interest = 357×1

  677.0833
  676.1777
  675.1564
  674.0196
  672.7678
  671.4012
  669.9203
  668.3257
  666.6179
  664.7976
  662.8654
  660.8220
  658.6683
  656.4052
  654.0334
      ⋮

Prepayment = 357×1

   66.8676
   83.5494
  100.2000
  116.8108
  133.3731
  149.8785
  166.3183
  182.6840
  198.9672
  215.1593
  231.2520
  247.2369
  263.1058
  278.8505
  294.4628
      ⋮

Input Arguments

collapse all

Original balance value in dollars (balance at the beginning of each TermRemaining), specified as an NMBS-by-1 vector.

Data Types: double

Gross coupon rate (including fees), specified as an NMBS-by-1 vector of decimal values.

Data Types: double

Term of the mortgage in months, specified as an NMBS-by-1 vector.

Data Types: double

(Optional) Number of full months between settlement and maturity, specified as an NMBS-by-1 vector. For this argument, "full months" means not including fractional first term (if there is one).

Data Types: double

(Optional) Speed relative to PSA standard, specified as an NMBS-by-1 vector. The PSA standard is 100.

Note

Set the PrepaySpeed to [] if you input a customized PrepayMatrix.

Data Types: double

(Optional) Customized prepayment vector, specified as a NaN-padded matrix of size max(TermRemaining)-by-NMBS. Each column corresponds to each mortgage-backed security, and each row corresponds to each month after settlement.

Note

Use PrepayMatrix only when PrepaySpeed is unspecified.

Data Types: double

Output Arguments

collapse all

Principal balance at end of month, returned as a TermRemaining-by-1 vectors of end-of-month values.

Total monthly payment, returned as a TermRemaining-by-1 vectors of end-of-month values.

Principal portion of the payment, returned as a TermRemaining-by-1 vectors of end-of-month values.

Interest portion of the payment, returned as a TermRemaining-by-1 vectors of end-of-month values.

Unscheduled principal payment, returned as a TermRemaining-by-1 vectors of end-of-month values.

Version History

Introduced before R2006a