{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Mortgage" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "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.5, server:0.31.2\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.5\u001b[0m\u001b[1;32m, server:\u001b[0m\u001b[1;32m0.31\u001b[0m\u001b[1;32m.\u001b[0m\u001b[1;32m2\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from absbox import API,EnginePath\n", "\n", "localAPI = API(EnginePath.DEV,lang='english',check=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### No Stress" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "m = [\"Mortgage\"\n", " ,{\"originBalance\": 12000.0\n", " ,\"originRate\": [\"fix\",0.045]\n", " ,\"originTerm\": 30\n", " ,\"freq\": \"Monthly\"\n", " ,\"type\": \"Level\"\n", " ,\"originDate\": \"2021-02-01\"}\n", " ,{\"currentBalance\": 10000.0\n", " ,\"currentRate\": 0.075\n", " ,\"remainTerm\": 20\n", " ,\"status\": \"Current\"}]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### (\"Mortgage\", `Default`,`Prepayment`,`Recovery`,`Extra`)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.0000000.075NoneNone0.0000000
2022-01-019529.05470.9562.5000000.075NoneNone470.9500000
2022-02-019055.14473.9159.5500000.075NoneNone944.8600000
2022-03-018578.28476.8656.5900000.075NoneNone1421.7200000
2022-04-018098.43479.8553.6100000.075NoneNone1901.5700000
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0 0 0 \n", "2022-01-01 9529.05 470.95 62.50 0 0 0 \n", "2022-02-01 9055.14 473.91 59.55 0 0 0 \n", "2022-03-01 8578.28 476.86 56.59 0 0 0 \n", "2022-04-01 8098.43 479.85 53.61 0 0 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0 0.075 None None 0.00 0 \n", "2022-01-01 0 0.075 None None 470.95 0 \n", "2022-02-01 0 0.075 None None 944.86 0 \n", "2022-03-01 0 0.075 None None 1421.72 0 \n", "2022-04-01 0 0.075 None None 1901.57 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0 0 0 \n", "2022-01-01 0 0 0 0 \n", "2022-02-01 0 0 0 0 \n", "2022-03-01 0 0 0 0 \n", "2022-04-01 0 0 0 0 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", None, None, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Default Assumption\n", "\n", "`{\"CDR\": x}` -> using constant annualized default rate" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.0000.0000.000.075NoneNone0.00000.0000.00
2022-01-019496.06469.3362.28034.61034.610.075NoneNone469.330034.61034.61
2022-02-018992.57470.6359.14032.86032.860.075NoneNone939.960067.47067.47
2022-03-018492.37472.0956.02028.11028.110.075NoneNone1412.050095.58095.58
2022-04-017989.58473.4052.89029.39029.390.075NoneNone1885.4500124.970124.97
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0 0.00 0 \n", "2022-01-01 9496.06 469.33 62.28 0 34.61 0 \n", "2022-02-01 8992.57 470.63 59.14 0 32.86 0 \n", "2022-03-01 8492.37 472.09 56.02 0 28.11 0 \n", "2022-04-01 7989.58 473.40 52.89 0 29.39 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0.00 0.075 None None 0.00 0 \n", "2022-01-01 34.61 0.075 None None 469.33 0 \n", "2022-02-01 32.86 0.075 None None 939.96 0 \n", "2022-03-01 28.11 0.075 None None 1412.05 0 \n", "2022-04-01 29.39 0.075 None None 1885.45 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0.00 0 0.00 \n", "2022-01-01 0 34.61 0 34.61 \n", "2022-02-01 0 67.47 0 67.47 \n", "2022-03-01 0 95.58 0 95.58 \n", "2022-04-01 0 124.97 0 124.97 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", {\"CDR\":0.04}, None, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{\"CDR\":[x1,x2,x3]}` -> using a curve, starting from date which determined from `remainTerms`" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.0000.0000.000.075NoneNone0.00000.0000.00
2022-01-019520.91470.5662.4408.5308.530.075NoneNone470.56008.5308.53
2022-02-019031.90472.6959.40016.32016.320.075NoneNone943.250024.85024.85
2022-03-018536.30474.5356.31021.07021.070.075NoneNone1417.780045.92045.92
2022-04-018058.81477.4953.3500.0000.000.075NoneNone1895.270045.92045.92
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0 0.00 0 \n", "2022-01-01 9520.91 470.56 62.44 0 8.53 0 \n", "2022-02-01 9031.90 472.69 59.40 0 16.32 0 \n", "2022-03-01 8536.30 474.53 56.31 0 21.07 0 \n", "2022-04-01 8058.81 477.49 53.35 0 0.00 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0.00 0.075 None None 0.00 0 \n", "2022-01-01 8.53 0.075 None None 470.56 0 \n", "2022-02-01 16.32 0.075 None None 943.25 0 \n", "2022-03-01 21.07 0.075 None None 1417.78 0 \n", "2022-04-01 0.00 0.075 None None 1895.27 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0.00 0 0.00 \n", "2022-01-01 0 8.53 0 8.53 \n", "2022-02-01 0 24.85 0 24.85 \n", "2022-03-01 0 45.92 0 45.92 \n", "2022-04-01 0 45.92 0 45.92 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", {\"CDR\":[0.01,0.02,0.03,0.0]}, None, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{\"DefaultByAmt\":(\"totalDefaultAmt\",[x1,x2,x3...])`: allocate default balance in cashflow projection" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.0000000.075NoneNone0.0000000
2022-01-019481.39468.6162.180500500.075NoneNone468.610050050
2022-02-018986.10470.2959.100250250.075NoneNone938.900075075
2022-03-018489.19471.9156.000250250.075NoneNone1410.81001000100
2022-04-018014.33474.8653.0500000.075NoneNone1885.67001000100
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0 0 0 \n", "2022-01-01 9481.39 468.61 62.18 0 50 0 \n", "2022-02-01 8986.10 470.29 59.10 0 25 0 \n", "2022-03-01 8489.19 471.91 56.00 0 25 0 \n", "2022-04-01 8014.33 474.86 53.05 0 0 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0 0.075 None None 0.00 0 \n", "2022-01-01 50 0.075 None None 468.61 0 \n", "2022-02-01 25 0.075 None None 938.90 0 \n", "2022-03-01 25 0.075 None None 1410.81 0 \n", "2022-04-01 0 0.075 None None 1885.67 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0 0 0 \n", "2022-01-01 0 50 0 50 \n", "2022-02-01 0 75 0 75 \n", "2022-03-01 0 100 0 100 \n", "2022-04-01 0 100 0 100 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", {\"ByAmount\":(100,[0.5,0.25,0.25])}, None, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Prepayment Assumption" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.000.000000.075NoneNone0.000.000000
2022-01-019520.91470.5662.448.530000.075NoneNone470.568.530000
2022-02-019039.70473.0959.458.120000.075NoneNone943.6516.650000
2022-03-018557.05475.6956.456.960000.075NoneNone1419.3423.610000
2022-04-018071.50478.2553.437.300000.075NoneNone1897.5930.910000
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0.00 0 0 \n", "2022-01-01 9520.91 470.56 62.44 8.53 0 0 \n", "2022-02-01 9039.70 473.09 59.45 8.12 0 0 \n", "2022-03-01 8557.05 475.69 56.45 6.96 0 0 \n", "2022-04-01 8071.50 478.25 53.43 7.30 0 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0 0.075 None None 0.00 0.00 \n", "2022-01-01 0 0.075 None None 470.56 8.53 \n", "2022-02-01 0 0.075 None None 943.65 16.65 \n", "2022-03-01 0 0.075 None None 1419.34 23.61 \n", "2022-04-01 0 0.075 None None 1897.59 30.91 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0 0 0 \n", "2022-01-01 0 0 0 0 \n", "2022-02-01 0 0 0 0 \n", "2022-03-01 0 0 0 0 \n", "2022-04-01 0 0 0 0 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", None, {\"CPR\":0.01}, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2021-12-0110000.000.000.000.000000.075NoneNone0.000.000000
2022-01-019520.91470.5662.448.530000.075NoneNone470.568.530000
2022-02-019047.41473.5059.500.000000.075NoneNone944.068.530000
2022-03-018557.68475.7256.4514.010000.075NoneNone1419.7822.540000
2022-04-018058.12477.4653.3422.100000.075NoneNone1897.2444.640000
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery \\\n", "Date \n", "2021-12-01 10000.00 0.00 0.00 0.00 0 0 \n", "2022-01-01 9520.91 470.56 62.44 8.53 0 0 \n", "2022-02-01 9047.41 473.50 59.50 0.00 0 0 \n", "2022-03-01 8557.68 475.72 56.45 14.01 0 0 \n", "2022-04-01 8058.12 477.46 53.34 22.10 0 0 \n", "\n", " Loss WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2021-12-01 0 0.075 None None 0.00 0.00 \n", "2022-01-01 0 0.075 None None 470.56 8.53 \n", "2022-02-01 0 0.075 None None 944.06 8.53 \n", "2022-03-01 0 0.075 None None 1419.78 22.54 \n", "2022-04-01 0 0.075 None None 1897.24 44.64 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2021-12-01 0 0 0 0 \n", "2022-01-01 0 0 0 0 \n", "2022-02-01 0 0 0 0 \n", "2022-03-01 0 0 0 0 \n", "2022-04-01 0 0 0 0 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", None, {\"CPR\":[0.01,0,0.02,0.03]}, None, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Recovery/Loss Assumption" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recovery by Lag" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2023-01-013603.11502.0225.6503.501.303.050.075NoneNone6319.870077.0220.8548.77
2023-02-013095.32504.7222.5003.071.142.660.075NoneNone6824.590080.0921.9951.43
2023-03-012585.45507.4919.3302.381.052.450.075NoneNone7332.080082.4723.0453.88
2023-04-012073.02510.2316.1402.200.922.140.075NoneNone7842.310084.6723.9656.02
2023-05-011558.31513.0012.9401.710.711.660.075NoneNone8355.310086.3824.6757.68
2023-06-011041.23515.769.7301.320.661.540.075NoneNone8871.070087.7025.3359.22
2023-07-01521.81518.576.5000.850.511.190.075NoneNone9389.640088.5525.8460.41
2023-08-010.00521.373.2500.440.390.920.075NoneNone9911.010088.9926.2361.33
2023-09-010.000.000.0000.000.250.590.000NoneNone9911.010088.9926.4861.92
2023-10-010.000.000.0000.000.130.300.000NoneNone9911.010088.9926.6162.22
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery Loss \\\n", "Date \n", "2023-01-01 3603.11 502.02 25.65 0 3.50 1.30 3.05 \n", "2023-02-01 3095.32 504.72 22.50 0 3.07 1.14 2.66 \n", "2023-03-01 2585.45 507.49 19.33 0 2.38 1.05 2.45 \n", "2023-04-01 2073.02 510.23 16.14 0 2.20 0.92 2.14 \n", "2023-05-01 1558.31 513.00 12.94 0 1.71 0.71 1.66 \n", "2023-06-01 1041.23 515.76 9.73 0 1.32 0.66 1.54 \n", "2023-07-01 521.81 518.57 6.50 0 0.85 0.51 1.19 \n", "2023-08-01 0.00 521.37 3.25 0 0.44 0.39 0.92 \n", "2023-09-01 0.00 0.00 0.00 0 0.00 0.25 0.59 \n", "2023-10-01 0.00 0.00 0.00 0 0.00 0.13 0.30 \n", "\n", " WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2023-01-01 0.075 None None 6319.87 0 \n", "2023-02-01 0.075 None None 6824.59 0 \n", "2023-03-01 0.075 None None 7332.08 0 \n", "2023-04-01 0.075 None None 7842.31 0 \n", "2023-05-01 0.075 None None 8355.31 0 \n", "2023-06-01 0.075 None None 8871.07 0 \n", "2023-07-01 0.075 None None 9389.64 0 \n", "2023-08-01 0.075 None None 9911.01 0 \n", "2023-09-01 0.000 None None 9911.01 0 \n", "2023-10-01 0.000 None None 9911.01 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2023-01-01 0 77.02 20.85 48.77 \n", "2023-02-01 0 80.09 21.99 51.43 \n", "2023-03-01 0 82.47 23.04 53.88 \n", "2023-04-01 0 84.67 23.96 56.02 \n", "2023-05-01 0 86.38 24.67 57.68 \n", "2023-06-01 0 87.70 25.33 59.22 \n", "2023-07-01 0 88.55 25.84 60.41 \n", "2023-08-01 0 88.99 26.23 61.33 \n", "2023-09-01 0 88.99 26.48 61.92 \n", "2023-10-01 0 88.99 26.61 62.22 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", {\"CDR\":0.01}, None, {\"Rate\":0.3,\"Lag\":2}, None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "\n", "r[0].tail(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recovery Timing" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BalancePrincipalInterestPrepaymentDefaultRecoveryLossWACBorrowerNumPrepayPenaltyCumPrincipalCumPrepayCumDelinqCumDefaultCumRecoveryCumLoss
Date
2023-01-013603.11502.0225.6503.501.123.050.075NoneNone6319.870077.0222.0948.77
2023-02-013095.32504.7222.5003.071.002.660.075NoneNone6824.590080.0923.0951.43
2023-03-012585.45507.4919.3302.380.842.450.075NoneNone7332.080082.4723.9353.88
2023-04-012073.02510.2316.1402.200.732.140.075NoneNone7842.310084.6724.6656.02
2023-05-011558.31513.0012.9401.710.581.660.075NoneNone8355.310086.3825.2457.68
2023-06-011041.23515.769.7301.320.471.540.075NoneNone8871.070087.7025.7159.22
2023-07-01521.81518.576.5000.850.331.190.075NoneNone9389.640088.5526.0460.41
2023-08-010.00521.373.2500.440.210.920.075NoneNone9911.010088.9926.2561.33
2023-09-010.000.000.0000.000.090.590.000NoneNone9911.010088.9926.3461.92
2023-10-010.000.000.0000.000.030.300.000NoneNone9911.010088.9926.3762.22
\n", "
" ], "text/plain": [ " Balance Principal Interest Prepayment Default Recovery Loss \\\n", "Date \n", "2023-01-01 3603.11 502.02 25.65 0 3.50 1.12 3.05 \n", "2023-02-01 3095.32 504.72 22.50 0 3.07 1.00 2.66 \n", "2023-03-01 2585.45 507.49 19.33 0 2.38 0.84 2.45 \n", "2023-04-01 2073.02 510.23 16.14 0 2.20 0.73 2.14 \n", "2023-05-01 1558.31 513.00 12.94 0 1.71 0.58 1.66 \n", "2023-06-01 1041.23 515.76 9.73 0 1.32 0.47 1.54 \n", "2023-07-01 521.81 518.57 6.50 0 0.85 0.33 1.19 \n", "2023-08-01 0.00 521.37 3.25 0 0.44 0.21 0.92 \n", "2023-09-01 0.00 0.00 0.00 0 0.00 0.09 0.59 \n", "2023-10-01 0.00 0.00 0.00 0 0.00 0.03 0.30 \n", "\n", " WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n", "Date \n", "2023-01-01 0.075 None None 6319.87 0 \n", "2023-02-01 0.075 None None 6824.59 0 \n", "2023-03-01 0.075 None None 7332.08 0 \n", "2023-04-01 0.075 None None 7842.31 0 \n", "2023-05-01 0.075 None None 8355.31 0 \n", "2023-06-01 0.075 None None 8871.07 0 \n", "2023-07-01 0.075 None None 9389.64 0 \n", "2023-08-01 0.075 None None 9911.01 0 \n", "2023-09-01 0.000 None None 9911.01 0 \n", "2023-10-01 0.000 None None 9911.01 0 \n", "\n", " CumDelinq CumDefault CumRecovery CumLoss \n", "Date \n", "2023-01-01 0 77.02 22.09 48.77 \n", "2023-02-01 0 80.09 23.09 51.43 \n", "2023-03-01 0 82.47 23.93 53.88 \n", "2023-04-01 0 84.67 24.66 56.02 \n", "2023-05-01 0 86.38 25.24 57.68 \n", "2023-06-01 0 87.70 25.71 59.22 \n", "2023-07-01 0 88.55 26.04 60.41 \n", "2023-08-01 0 88.99 26.25 61.33 \n", "2023-09-01 0 88.99 26.34 61.92 \n", "2023-10-01 0 88.99 26.37 62.22 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = localAPI.runAsset(\"2020-01-02\"\n", " ,[m]\n", " ,poolAssump=(\"Pool\"\n", " ,(\"Mortgage\", {\"CDR\":0.01}\n", " , None\n", " , {\"Rate\":0.3,\"Timing\":[0.5,0.25,0.25]}\n", " , None)\n", " ,None\n", " ,None)\n", " ,read=True)\n", "r[0].tail(10)" ] } ], "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.2" }, "tags": [ "scroll-output" ] }, "nbformat": 4, "nbformat_minor": 4 }