{
"cells": [
{
"cell_type": "markdown",
"id": "c3b0618a",
"metadata": {},
"source": [
"### How to price Balloon Mortgage"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "79e27982",
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "fff67ebb",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
Connecting engine server -> http://localhost:8081\n",
"\n"
],
"text/plain": [
"\u001b[1;35mConnecting engine server -> \u001b[0m\u001b[1;4;35mhttp://localhost:8081\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"✅Connected, local lib:0.28.7, server:0.28.17\n",
"\n"
],
"text/plain": [
"✅\u001b[1;32mConnected, local li\u001b[0m\u001b[1;32mb:0\u001b[0m\u001b[1;32m.\u001b[0m\u001b[1;32m28.7\u001b[0m\u001b[1;32m, server:\u001b[0m\u001b[1;32m0.28\u001b[0m\u001b[1;32m.\u001b[0m\u001b[1;32m17\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from absbox import API\n",
"\n",
"#localAPI = API(\"http://localhost:8081\",lang='english',check=False)\n",
"localAPI = API(\"https://absbox.org/api/dev\",lang='english',check=False)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "11397515",
"metadata": {},
"outputs": [],
"source": [
"mortgage = [\"Mortgage\"\n",
" ,{\"originBalance\": 12000.0\n",
" ,\"originRate\": [\"fix\",0.045]\n",
" ,\"originTerm\": 60\n",
" ,\"freq\": \"Monthly\"\n",
" ,\"type\": (\"Balloon\",120)\n",
" ,\"originDate\": \"2021-02-01\"}\n",
" ,{\"currentBalance\": 12000.0\n",
" ,\"currentRate\": 0.075\n",
" ,\"remainTerm\": 12\n",
" ,\"status\": \"Current\"}]"
]
},
{
"cell_type": "markdown",
"id": "95cd1e7d",
"metadata": {},
"source": [
"#### Typical Cashflow Profile for Balloon Mortgage\n",
"\n",
"We model the balloon mortgage via change `type` to `(\"Balloon, xxx)`\n",
"\n",
"Then the mortgage will amortized as if it has a term `xxx` and have a final principal repayment at last period"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "465160b5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Balance | \n",
" Principal | \n",
" Interest | \n",
" Prepayment | \n",
" Default | \n",
" Recovery | \n",
" Loss | \n",
" WAC | \n",
" BorrowerNum | \n",
" PrepayPenalty | \n",
" CumPrincipal | \n",
" CumPrepay | \n",
" CumDelinq | \n",
" CumDefault | \n",
" CumRecovery | \n",
" CumLoss | \n",
"
\n",
" \n",
" | Date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2025-02-01 | \n",
" 12000.00 | \n",
" 0.00 | \n",
" 0.00 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 0.00 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-03-01 | \n",
" 11867.52 | \n",
" 132.48 | \n",
" 75.00 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 132.48 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-04-01 | \n",
" 11734.21 | \n",
" 133.31 | \n",
" 74.17 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 265.79 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-05-01 | \n",
" 11600.06 | \n",
" 134.15 | \n",
" 73.33 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 399.94 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-06-01 | \n",
" 11465.08 | \n",
" 134.98 | \n",
" 72.50 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 534.92 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-07-01 | \n",
" 11329.25 | \n",
" 135.83 | \n",
" 71.65 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 670.75 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-08-01 | \n",
" 11192.57 | \n",
" 136.68 | \n",
" 70.80 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 807.43 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-09-01 | \n",
" 11055.04 | \n",
" 137.53 | \n",
" 69.95 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 944.96 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-10-01 | \n",
" 10916.65 | \n",
" 138.39 | \n",
" 69.09 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1083.35 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-11-01 | \n",
" 10777.39 | \n",
" 139.26 | \n",
" 68.22 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1222.61 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2025-12-01 | \n",
" 10637.26 | \n",
" 140.13 | \n",
" 67.35 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1362.74 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2026-01-01 | \n",
" 10496.26 | \n",
" 141.00 | \n",
" 66.48 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1503.74 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2026-02-01 | \n",
" 0.00 | \n",
" 10496.26 | \n",
" 65.60 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 12000.00 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Balance Principal Interest Prepayment Default Recovery \\\n",
"Date \n",
"2025-02-01 12000.00 0.00 0.00 0 0 0 \n",
"2025-03-01 11867.52 132.48 75.00 0 0 0 \n",
"2025-04-01 11734.21 133.31 74.17 0 0 0 \n",
"2025-05-01 11600.06 134.15 73.33 0 0 0 \n",
"2025-06-01 11465.08 134.98 72.50 0 0 0 \n",
"2025-07-01 11329.25 135.83 71.65 0 0 0 \n",
"2025-08-01 11192.57 136.68 70.80 0 0 0 \n",
"2025-09-01 11055.04 137.53 69.95 0 0 0 \n",
"2025-10-01 10916.65 138.39 69.09 0 0 0 \n",
"2025-11-01 10777.39 139.26 68.22 0 0 0 \n",
"2025-12-01 10637.26 140.13 67.35 0 0 0 \n",
"2026-01-01 10496.26 141.00 66.48 0 0 0 \n",
"2026-02-01 0.00 10496.26 65.60 0 0 0 \n",
"\n",
" Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n",
"Date \n",
"2025-02-01 0 0.075 None None 0.00 0 \n",
"2025-03-01 0 0.075 None None 132.48 0 \n",
"2025-04-01 0 0.075 None None 265.79 0 \n",
"2025-05-01 0 0.075 None None 399.94 0 \n",
"2025-06-01 0 0.075 None None 534.92 0 \n",
"2025-07-01 0 0.075 None None 670.75 0 \n",
"2025-08-01 0 0.075 None None 807.43 0 \n",
"2025-09-01 0 0.075 None None 944.96 0 \n",
"2025-10-01 0 0.075 None None 1083.35 0 \n",
"2025-11-01 0 0.075 None None 1222.61 0 \n",
"2025-12-01 0 0.075 None None 1362.74 0 \n",
"2026-01-01 0 0.075 None None 1503.74 0 \n",
"2026-02-01 0 0.075 None None 12000.00 0 \n",
"\n",
" CumDelinq CumDefault CumRecovery CumLoss \n",
"Date \n",
"2025-02-01 0 0 0 0 \n",
"2025-03-01 0 0 0 0 \n",
"2025-04-01 0 0 0 0 \n",
"2025-05-01 0 0 0 0 \n",
"2025-06-01 0 0 0 0 \n",
"2025-07-01 0 0 0 0 \n",
"2025-08-01 0 0 0 0 \n",
"2025-09-01 0 0 0 0 \n",
"2025-10-01 0 0 0 0 \n",
"2025-11-01 0 0 0 0 \n",
"2025-12-01 0 0 0 0 \n",
"2026-01-01 0 0 0 0 \n",
"2026-02-01 0 0 0 0 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = localAPI.runAsset(\"2021-02-01\"\n",
" ,[mortgage]\n",
" ,poolAssump=(\"Pool\"\n",
" ,(\"Mortgage\",None ,None, None, None)\n",
" ,None\n",
" ,None)\n",
" ,read=True)\n",
"p[0]"
]
},
{
"cell_type": "markdown",
"id": "c741020a",
"metadata": {},
"source": [
"#### When \"CDR\" is failing\n",
"\n",
"`CDR` is a constant annualized default rates which apply default amounts on each payment period.\n",
"\n",
"The `CDR` works if the monthly payment are evenly distributed, because the payment obligation remains same during the life time of a mortgage.\n",
"\n",
"\n",
"The issue is, for `Balloon Mortgage` , does the last payment which has a larger portion share same default rate with previous payments ? \n",
"\n",
"Imagine a borrower has obligation of paying:\n",
"\n",
"* 10 dollars per month and 10000 dollars at last payment\n",
"\n",
"The lender shall expect a larger risk at the last payment from the borrower, in other term, a larger default risk. In such case, the `CDR` way may doesn't present a pefect fit."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "2698df3c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Balance | \n",
" Principal | \n",
" Interest | \n",
" Prepayment | \n",
" Default | \n",
" Recovery | \n",
" Loss | \n",
" WAC | \n",
" BorrowerNum | \n",
" PrepayPenalty | \n",
" CumPrincipal | \n",
" CumPrepay | \n",
" CumDelinq | \n",
" CumDefault | \n",
" CumRecovery | \n",
" CumLoss | \n",
"
\n",
" \n",
" | Date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2025-02-01 | \n",
" 12000.00 | \n",
" 0.00 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 0.00 | \n",
" 0 | \n",
" 0 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
"
\n",
" \n",
" | 2025-03-01 | \n",
" 11820.92 | \n",
" 131.96 | \n",
" 74.70 | \n",
" 0 | \n",
" 47.12 | \n",
" 0 | \n",
" 47.12 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 131.96 | \n",
" 0 | \n",
" 0 | \n",
" 47.12 | \n",
" 0 | \n",
" 47.12 | \n",
"
\n",
" \n",
" | 2025-04-01 | \n",
" 11637.33 | \n",
" 132.21 | \n",
" 73.55 | \n",
" 0 | \n",
" 51.38 | \n",
" 0 | \n",
" 51.38 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 264.17 | \n",
" 0 | \n",
" 0 | \n",
" 98.50 | \n",
" 0 | \n",
" 98.50 | \n",
"
\n",
" \n",
" | 2025-05-01 | \n",
" 11455.90 | \n",
" 132.48 | \n",
" 72.42 | \n",
" 0 | \n",
" 48.95 | \n",
" 0 | \n",
" 48.95 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 396.65 | \n",
" 0 | \n",
" 0 | \n",
" 147.45 | \n",
" 0 | \n",
" 147.45 | \n",
"
\n",
" \n",
" | 2025-06-01 | \n",
" 11273.38 | \n",
" 132.73 | \n",
" 71.28 | \n",
" 0 | \n",
" 49.79 | \n",
" 0 | \n",
" 49.79 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 529.38 | \n",
" 0 | \n",
" 0 | \n",
" 197.24 | \n",
" 0 | \n",
" 197.24 | \n",
"
\n",
" \n",
" | 2025-07-01 | \n",
" 11092.97 | \n",
" 132.99 | \n",
" 70.16 | \n",
" 0 | \n",
" 47.42 | \n",
" 0 | \n",
" 47.42 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 662.37 | \n",
" 0 | \n",
" 0 | \n",
" 244.66 | \n",
" 0 | \n",
" 244.66 | \n",
"
\n",
" \n",
" | 2025-08-01 | \n",
" 10911.50 | \n",
" 133.25 | \n",
" 69.02 | \n",
" 0 | \n",
" 48.22 | \n",
" 0 | \n",
" 48.22 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 795.62 | \n",
" 0 | \n",
" 0 | \n",
" 292.88 | \n",
" 0 | \n",
" 292.88 | \n",
"
\n",
" \n",
" | 2025-09-01 | \n",
" 10730.58 | \n",
" 133.49 | \n",
" 67.90 | \n",
" 0 | \n",
" 47.43 | \n",
" 0 | \n",
" 47.43 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 929.11 | \n",
" 0 | \n",
" 0 | \n",
" 340.31 | \n",
" 0 | \n",
" 340.31 | \n",
"
\n",
" \n",
" | 2025-10-01 | \n",
" 10551.68 | \n",
" 133.76 | \n",
" 66.78 | \n",
" 0 | \n",
" 45.14 | \n",
" 0 | \n",
" 45.14 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1062.87 | \n",
" 0 | \n",
" 0 | \n",
" 385.45 | \n",
" 0 | \n",
" 385.45 | \n",
"
\n",
" \n",
" | 2025-11-01 | \n",
" 10371.81 | \n",
" 134.01 | \n",
" 65.66 | \n",
" 0 | \n",
" 45.86 | \n",
" 0 | \n",
" 45.86 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1196.88 | \n",
" 0 | \n",
" 0 | \n",
" 431.31 | \n",
" 0 | \n",
" 431.31 | \n",
"
\n",
" \n",
" | 2025-12-01 | \n",
" 10193.90 | \n",
" 134.28 | \n",
" 64.55 | \n",
" 0 | \n",
" 43.63 | \n",
" 0 | \n",
" 43.63 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1331.16 | \n",
" 0 | \n",
" 0 | \n",
" 474.94 | \n",
" 0 | \n",
" 474.94 | \n",
"
\n",
" \n",
" | 2026-01-01 | \n",
" 10015.06 | \n",
" 134.53 | \n",
" 63.43 | \n",
" 0 | \n",
" 44.31 | \n",
" 0 | \n",
" 44.31 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1465.69 | \n",
" 0 | \n",
" 0 | \n",
" 519.25 | \n",
" 0 | \n",
" 519.25 | \n",
"
\n",
" \n",
" | 2026-02-01 | \n",
" 0.00 | \n",
" 9971.53 | \n",
" 62.32 | \n",
" 0 | \n",
" 43.53 | \n",
" 0 | \n",
" 43.53 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 11437.22 | \n",
" 0 | \n",
" 0 | \n",
" 562.78 | \n",
" 0 | \n",
" 562.78 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Balance Principal Interest Prepayment Default Recovery \\\n",
"Date \n",
"2025-02-01 12000.00 0.00 0.00 0 0.00 0 \n",
"2025-03-01 11820.92 131.96 74.70 0 47.12 0 \n",
"2025-04-01 11637.33 132.21 73.55 0 51.38 0 \n",
"2025-05-01 11455.90 132.48 72.42 0 48.95 0 \n",
"2025-06-01 11273.38 132.73 71.28 0 49.79 0 \n",
"2025-07-01 11092.97 132.99 70.16 0 47.42 0 \n",
"2025-08-01 10911.50 133.25 69.02 0 48.22 0 \n",
"2025-09-01 10730.58 133.49 67.90 0 47.43 0 \n",
"2025-10-01 10551.68 133.76 66.78 0 45.14 0 \n",
"2025-11-01 10371.81 134.01 65.66 0 45.86 0 \n",
"2025-12-01 10193.90 134.28 64.55 0 43.63 0 \n",
"2026-01-01 10015.06 134.53 63.43 0 44.31 0 \n",
"2026-02-01 0.00 9971.53 62.32 0 43.53 0 \n",
"\n",
" Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n",
"Date \n",
"2025-02-01 0.00 0.075 None None 0.00 0 \n",
"2025-03-01 47.12 0.075 None None 131.96 0 \n",
"2025-04-01 51.38 0.075 None None 264.17 0 \n",
"2025-05-01 48.95 0.075 None None 396.65 0 \n",
"2025-06-01 49.79 0.075 None None 529.38 0 \n",
"2025-07-01 47.42 0.075 None None 662.37 0 \n",
"2025-08-01 48.22 0.075 None None 795.62 0 \n",
"2025-09-01 47.43 0.075 None None 929.11 0 \n",
"2025-10-01 45.14 0.075 None None 1062.87 0 \n",
"2025-11-01 45.86 0.075 None None 1196.88 0 \n",
"2025-12-01 43.63 0.075 None None 1331.16 0 \n",
"2026-01-01 44.31 0.075 None None 1465.69 0 \n",
"2026-02-01 43.53 0.075 None None 11437.22 0 \n",
"\n",
" CumDelinq CumDefault CumRecovery CumLoss \n",
"Date \n",
"2025-02-01 0 0.00 0 0.00 \n",
"2025-03-01 0 47.12 0 47.12 \n",
"2025-04-01 0 98.50 0 98.50 \n",
"2025-05-01 0 147.45 0 147.45 \n",
"2025-06-01 0 197.24 0 197.24 \n",
"2025-07-01 0 244.66 0 244.66 \n",
"2025-08-01 0 292.88 0 292.88 \n",
"2025-09-01 0 340.31 0 340.31 \n",
"2025-10-01 0 385.45 0 385.45 \n",
"2025-11-01 0 431.31 0 431.31 \n",
"2025-12-01 0 474.94 0 474.94 \n",
"2026-01-01 0 519.25 0 519.25 \n",
"2026-02-01 0 562.78 0 562.78 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = localAPI.runAsset(\"2021-02-01\"\n",
" ,[mortgage]\n",
" ,poolAssump=(\"Pool\"\n",
" ,(\"Mortgage\",{\"CDR\":0.05} ,None, None, None)\n",
" ,None\n",
" ,None)\n",
" ,read=True)\n",
"p[0]"
]
},
{
"cell_type": "markdown",
"id": "e2a8fc6d",
"metadata": {},
"source": [
"#### Solution from Absbox/Hastructure\n",
"\n",
"\n",
"A new assumption with 2 default rates is introduced by (Hastructure: `0.28.18`,/Absbox: `0.28.14`), \n",
"\n",
"`{\"DefaultAtEndByRate\":(A,B)}`\n",
"\n",
"* `A` : a CDR will be applied for payment periods except last period\n",
" * default rate = days between ( current period , last period), then annualized with CDR\n",
"* `B` : a CDR will be applied for last payment period\n",
" * default rate = days between ( current period , BEGIN period), then annualized with CDR\n",
"\n",
"Now we can expect a larger portion of default in last period which factoring the life time span. ( The longer life of mortgage, the larger default rate)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "5ca97514",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Balance | \n",
" Principal | \n",
" Interest | \n",
" Prepayment | \n",
" Default | \n",
" Recovery | \n",
" Loss | \n",
" WAC | \n",
" BorrowerNum | \n",
" PrepayPenalty | \n",
" CumPrincipal | \n",
" CumPrepay | \n",
" CumDelinq | \n",
" CumDefault | \n",
" CumRecovery | \n",
" CumLoss | \n",
"
\n",
" \n",
" | Date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2025-02-01 | \n",
" 12000.00 | \n",
" 0.00 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 0.00 | \n",
" 0 | \n",
" 0 | \n",
" 0.00 | \n",
" 0 | \n",
" 0.00 | \n",
"
\n",
" \n",
" | 2025-03-01 | \n",
" 11820.92 | \n",
" 131.96 | \n",
" 74.70 | \n",
" 0 | \n",
" 47.12 | \n",
" 0 | \n",
" 47.12 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 131.96 | \n",
" 0 | \n",
" 0 | \n",
" 47.12 | \n",
" 0 | \n",
" 47.12 | \n",
"
\n",
" \n",
" | 2025-04-01 | \n",
" 11637.33 | \n",
" 132.21 | \n",
" 73.55 | \n",
" 0 | \n",
" 51.38 | \n",
" 0 | \n",
" 51.38 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 264.17 | \n",
" 0 | \n",
" 0 | \n",
" 98.50 | \n",
" 0 | \n",
" 98.50 | \n",
"
\n",
" \n",
" | 2025-05-01 | \n",
" 11455.90 | \n",
" 132.48 | \n",
" 72.42 | \n",
" 0 | \n",
" 48.95 | \n",
" 0 | \n",
" 48.95 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 396.65 | \n",
" 0 | \n",
" 0 | \n",
" 147.45 | \n",
" 0 | \n",
" 147.45 | \n",
"
\n",
" \n",
" | 2025-06-01 | \n",
" 11273.38 | \n",
" 132.73 | \n",
" 71.28 | \n",
" 0 | \n",
" 49.79 | \n",
" 0 | \n",
" 49.79 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 529.38 | \n",
" 0 | \n",
" 0 | \n",
" 197.24 | \n",
" 0 | \n",
" 197.24 | \n",
"
\n",
" \n",
" | 2025-07-01 | \n",
" 11092.97 | \n",
" 132.99 | \n",
" 70.16 | \n",
" 0 | \n",
" 47.42 | \n",
" 0 | \n",
" 47.42 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 662.37 | \n",
" 0 | \n",
" 0 | \n",
" 244.66 | \n",
" 0 | \n",
" 244.66 | \n",
"
\n",
" \n",
" | 2025-08-01 | \n",
" 10911.50 | \n",
" 133.25 | \n",
" 69.02 | \n",
" 0 | \n",
" 48.22 | \n",
" 0 | \n",
" 48.22 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 795.62 | \n",
" 0 | \n",
" 0 | \n",
" 292.88 | \n",
" 0 | \n",
" 292.88 | \n",
"
\n",
" \n",
" | 2025-09-01 | \n",
" 10730.58 | \n",
" 133.49 | \n",
" 67.90 | \n",
" 0 | \n",
" 47.43 | \n",
" 0 | \n",
" 47.43 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 929.11 | \n",
" 0 | \n",
" 0 | \n",
" 340.31 | \n",
" 0 | \n",
" 340.31 | \n",
"
\n",
" \n",
" | 2025-10-01 | \n",
" 10551.68 | \n",
" 133.76 | \n",
" 66.78 | \n",
" 0 | \n",
" 45.14 | \n",
" 0 | \n",
" 45.14 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1062.87 | \n",
" 0 | \n",
" 0 | \n",
" 385.45 | \n",
" 0 | \n",
" 385.45 | \n",
"
\n",
" \n",
" | 2025-11-01 | \n",
" 10371.81 | \n",
" 134.01 | \n",
" 65.66 | \n",
" 0 | \n",
" 45.86 | \n",
" 0 | \n",
" 45.86 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1196.88 | \n",
" 0 | \n",
" 0 | \n",
" 431.31 | \n",
" 0 | \n",
" 431.31 | \n",
"
\n",
" \n",
" | 2025-12-01 | \n",
" 10193.90 | \n",
" 134.28 | \n",
" 64.55 | \n",
" 0 | \n",
" 43.63 | \n",
" 0 | \n",
" 43.63 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1331.16 | \n",
" 0 | \n",
" 0 | \n",
" 474.94 | \n",
" 0 | \n",
" 474.94 | \n",
"
\n",
" \n",
" | 2026-01-01 | \n",
" 10015.06 | \n",
" 134.53 | \n",
" 63.43 | \n",
" 0 | \n",
" 44.31 | \n",
" 0 | \n",
" 44.31 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 1465.69 | \n",
" 0 | \n",
" 0 | \n",
" 519.25 | \n",
" 0 | \n",
" 519.25 | \n",
"
\n",
" \n",
" | 2026-02-01 | \n",
" 0.00 | \n",
" 9514.31 | \n",
" 59.46 | \n",
" 0 | \n",
" 500.75 | \n",
" 0 | \n",
" 500.75 | \n",
" 0.075 | \n",
" None | \n",
" None | \n",
" 10980.00 | \n",
" 0 | \n",
" 0 | \n",
" 1020.00 | \n",
" 0 | \n",
" 1020.00 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Balance Principal Interest Prepayment Default Recovery \\\n",
"Date \n",
"2025-02-01 12000.00 0.00 0.00 0 0.00 0 \n",
"2025-03-01 11820.92 131.96 74.70 0 47.12 0 \n",
"2025-04-01 11637.33 132.21 73.55 0 51.38 0 \n",
"2025-05-01 11455.90 132.48 72.42 0 48.95 0 \n",
"2025-06-01 11273.38 132.73 71.28 0 49.79 0 \n",
"2025-07-01 11092.97 132.99 70.16 0 47.42 0 \n",
"2025-08-01 10911.50 133.25 69.02 0 48.22 0 \n",
"2025-09-01 10730.58 133.49 67.90 0 47.43 0 \n",
"2025-10-01 10551.68 133.76 66.78 0 45.14 0 \n",
"2025-11-01 10371.81 134.01 65.66 0 45.86 0 \n",
"2025-12-01 10193.90 134.28 64.55 0 43.63 0 \n",
"2026-01-01 10015.06 134.53 63.43 0 44.31 0 \n",
"2026-02-01 0.00 9514.31 59.46 0 500.75 0 \n",
"\n",
" Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n",
"Date \n",
"2025-02-01 0.00 0.075 None None 0.00 0 \n",
"2025-03-01 47.12 0.075 None None 131.96 0 \n",
"2025-04-01 51.38 0.075 None None 264.17 0 \n",
"2025-05-01 48.95 0.075 None None 396.65 0 \n",
"2025-06-01 49.79 0.075 None None 529.38 0 \n",
"2025-07-01 47.42 0.075 None None 662.37 0 \n",
"2025-08-01 48.22 0.075 None None 795.62 0 \n",
"2025-09-01 47.43 0.075 None None 929.11 0 \n",
"2025-10-01 45.14 0.075 None None 1062.87 0 \n",
"2025-11-01 45.86 0.075 None None 1196.88 0 \n",
"2025-12-01 43.63 0.075 None None 1331.16 0 \n",
"2026-01-01 44.31 0.075 None None 1465.69 0 \n",
"2026-02-01 500.75 0.075 None None 10980.00 0 \n",
"\n",
" CumDelinq CumDefault CumRecovery CumLoss \n",
"Date \n",
"2025-02-01 0 0.00 0 0.00 \n",
"2025-03-01 0 47.12 0 47.12 \n",
"2025-04-01 0 98.50 0 98.50 \n",
"2025-05-01 0 147.45 0 147.45 \n",
"2025-06-01 0 197.24 0 197.24 \n",
"2025-07-01 0 244.66 0 244.66 \n",
"2025-08-01 0 292.88 0 292.88 \n",
"2025-09-01 0 340.31 0 340.31 \n",
"2025-10-01 0 385.45 0 385.45 \n",
"2025-11-01 0 431.31 0 431.31 \n",
"2025-12-01 0 474.94 0 474.94 \n",
"2026-01-01 0 519.25 0 519.25 \n",
"2026-02-01 0 1020.00 0 1020.00 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mortgagePoolAssump = (\"Pool\"\n",
" ,(\"Mortgage\",{\"DefaultAtEndByRate\":(0.05,0.05)} ,None, None, None)\n",
" ,None\n",
" ,None)\n",
"\n",
"p = localAPI.runAsset(\"2021-02-01\"\n",
" ,[mortgage]\n",
" ,poolAssump=mortgagePoolAssump\n",
" ,read=True)\n",
"p[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10b3d811",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}