{
"cells": [
{
"cell_type": "markdown",
"id": "a5688603",
"metadata": {},
"source": [
"### Three ways to run deal "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2e646c1c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
Connecting engine server -> https://absbox.org/api/dev\n",
"\n"
],
"text/plain": [
"Connecting engine server -> \u001b[4;94mhttps://absbox.org/api/dev\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/xiaoyu/repo/AbsBox/lib/python3.13/site-packages/urllib3/connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host 'absbox.org'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/html": [
"✅Connected, local lib:0.46.5, server:0.50.1\n",
"\n"
],
"text/plain": [
"✅Connected, local li\u001b[1;92mb:0\u001b[0m.\u001b[1;36m46.5\u001b[0m, server:\u001b[1;36m0.50\u001b[0m.\u001b[1;36m1\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",
"id": "64b56f59",
"metadata": {},
"source": [
"#### Single Run"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "6db2f452",
"metadata": {},
"outputs": [],
"source": [
"from absbox import examples"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c7dc2e51",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/xiaoyu/repo/AbsBox/lib/python3.13/site-packages/urllib3/connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host 'absbox.org'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n",
" warnings.warn(\n"
]
}
],
"source": [
"myAssumption = (\"Pool\",(\"Mortgage\",{\"CDR\":0.01},None,None,None)\n",
" ,None\n",
" ,None)\n",
"\n",
"\n",
"r = localAPI.run(examples.test01\n",
" ,poolAssump=myAssumption\n",
" ,read=True)"
]
},
{
"cell_type": "markdown",
"id": "751051de",
"metadata": {},
"source": [
"the result `r` returned by API function `run()`."
]
},
{
"cell_type": "markdown",
"id": "ea339b21",
"metadata": {},
"source": [
"#### Scenario Sensitivity Run"
]
},
{
"cell_type": "markdown",
"id": "1a0b8986",
"metadata": {},
"source": [
"User can build a pool performance map and call the API function `runByScenarios`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7f24f33a",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/xiaoyu/repo/AbsBox/lib/python3.13/site-packages/urllib3/connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host 'absbox.org'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n",
" warnings.warn(\n"
]
}
],
"source": [
"myAssumption = (\"Pool\",(\"Mortgage\",{\"CDR\":0.01},None,None,None)\n",
" ,None\n",
" ,None)\n",
"\n",
"myAssumption2 = (\"Pool\",(\"Mortgage\",None,{\"CPR\":0.01},None,None)\n",
" ,None\n",
" ,None)\n",
"\n",
"r = localAPI.runByScenarios(examples.test01\n",
" ,poolAssump={\"00\":myAssumption\n",
" ,\"stressed\":myAssumption2}\n",
" ,read=True)"
]
},
{
"cell_type": "markdown",
"id": "a1e0e565",
"metadata": {},
"source": [
"The result `r` is a dict whose keys came fromt he pool assumpiton map"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ee85d1e1",
"metadata": {
"scrolled": true
},
"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",
" | 2021-04-01 | \n",
" 1989.69 | \n",
" 206.84 | \n",
" 28.60 | \n",
" 0 | \n",
" 3.47 | \n",
" 0 | \n",
" 3.47 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 206.84 | \n",
" 0 | \n",
" 0 | \n",
" 3.47 | \n",
" 0 | \n",
" 3.47 | \n",
"
\n",
" \n",
" | 2021-05-01 | \n",
" 1883.73 | \n",
" 104.32 | \n",
" 13.25 | \n",
" 0 | \n",
" 1.64 | \n",
" 0 | \n",
" 1.64 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 311.16 | \n",
" 0 | \n",
" 0 | \n",
" 5.11 | \n",
" 0 | \n",
" 5.11 | \n",
"
\n",
" \n",
" | 2021-06-01 | \n",
" 1777.20 | \n",
" 104.93 | \n",
" 12.54 | \n",
" 0 | \n",
" 1.60 | \n",
" 0 | \n",
" 1.60 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 416.09 | \n",
" 0 | \n",
" 0 | \n",
" 6.71 | \n",
" 0 | \n",
" 6.71 | \n",
"
\n",
" \n",
" | 2021-07-01 | \n",
" 1670.20 | \n",
" 105.54 | \n",
" 11.83 | \n",
" 0 | \n",
" 1.46 | \n",
" 0 | \n",
" 1.46 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 521.63 | \n",
" 0 | \n",
" 0 | \n",
" 8.17 | \n",
" 0 | \n",
" 8.17 | \n",
"
\n",
" \n",
" | 2021-08-01 | \n",
" 1562.63 | \n",
" 106.15 | \n",
" 11.12 | \n",
" 0 | \n",
" 1.42 | \n",
" 0 | \n",
" 1.42 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 627.78 | \n",
" 0 | \n",
" 0 | \n",
" 9.59 | \n",
" 0 | \n",
" 9.59 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Balance Principal Interest Prepayment Default Recovery Loss \\\n",
"Date \n",
"2021-04-01 1989.69 206.84 28.60 0 3.47 0 3.47 \n",
"2021-05-01 1883.73 104.32 13.25 0 1.64 0 1.64 \n",
"2021-06-01 1777.20 104.93 12.54 0 1.60 0 1.60 \n",
"2021-07-01 1670.20 105.54 11.83 0 1.46 0 1.46 \n",
"2021-08-01 1562.63 106.15 11.12 0 1.42 0 1.42 \n",
"\n",
" WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n",
"Date \n",
"2021-04-01 0.08 None None 206.84 0 \n",
"2021-05-01 0.08 None None 311.16 0 \n",
"2021-06-01 0.08 None None 416.09 0 \n",
"2021-07-01 0.08 None None 521.63 0 \n",
"2021-08-01 0.08 None None 627.78 0 \n",
"\n",
" CumDelinq CumDefault CumRecovery CumLoss \n",
"Date \n",
"2021-04-01 0 3.47 0 3.47 \n",
"2021-05-01 0 5.11 0 5.11 \n",
"2021-06-01 0 6.71 0 6.71 \n",
"2021-07-01 0 8.17 0 8.17 \n",
"2021-08-01 0 9.59 0 9.59 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r['00']['pool']['flow']['PoolConsol'].head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a532517d",
"metadata": {
"scrolled": true
},
"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",
" | 2021-04-01 | \n",
" 1989.69 | \n",
" 206.84 | \n",
" 28.60 | \n",
" 3.47 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 206.84 | \n",
" 3.47 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2021-05-01 | \n",
" 1883.73 | \n",
" 104.32 | \n",
" 13.25 | \n",
" 1.64 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 311.16 | \n",
" 5.11 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2021-06-01 | \n",
" 1777.20 | \n",
" 104.93 | \n",
" 12.54 | \n",
" 1.60 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 416.09 | \n",
" 6.71 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2021-07-01 | \n",
" 1670.20 | \n",
" 105.54 | \n",
" 11.83 | \n",
" 1.46 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 521.63 | \n",
" 8.17 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" | 2021-08-01 | \n",
" 1562.63 | \n",
" 106.15 | \n",
" 11.12 | \n",
" 1.42 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.08 | \n",
" None | \n",
" None | \n",
" 627.78 | \n",
" 9.59 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Balance Principal Interest Prepayment Default Recovery Loss \\\n",
"Date \n",
"2021-04-01 1989.69 206.84 28.60 3.47 0 0 0 \n",
"2021-05-01 1883.73 104.32 13.25 1.64 0 0 0 \n",
"2021-06-01 1777.20 104.93 12.54 1.60 0 0 0 \n",
"2021-07-01 1670.20 105.54 11.83 1.46 0 0 0 \n",
"2021-08-01 1562.63 106.15 11.12 1.42 0 0 0 \n",
"\n",
" WAC BorrowerNum PrepayPenalty CumPrincipal CumPrepay \\\n",
"Date \n",
"2021-04-01 0.08 None None 206.84 3.47 \n",
"2021-05-01 0.08 None None 311.16 5.11 \n",
"2021-06-01 0.08 None None 416.09 6.71 \n",
"2021-07-01 0.08 None None 521.63 8.17 \n",
"2021-08-01 0.08 None None 627.78 9.59 \n",
"\n",
" CumDelinq CumDefault CumRecovery CumLoss \n",
"Date \n",
"2021-04-01 0 0 0 0 \n",
"2021-05-01 0 0 0 0 \n",
"2021-06-01 0 0 0 0 \n",
"2021-07-01 0 0 0 0 \n",
"2021-08-01 0 0 0 0 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r['stressed']['pool']['flow']['PoolConsol'].head()"
]
},
{
"cell_type": "markdown",
"id": "0541be7b",
"metadata": {},
"source": [
"#### Structure Senstivity Run"
]
},
{
"cell_type": "markdown",
"id": "36ca75d9",
"metadata": {},
"source": [
"To run mulitple deals with same pool/deal run assumption , user can call `runStructs()` from the API.\n",
"\n",
"The function will return the result as a map."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "6cb13e03",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/xiaoyu/repo/AbsBox/lib/python3.13/site-packages/urllib3/connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host 'absbox.org'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n",
" warnings.warn(\n"
]
}
],
"source": [
"r = localAPI.runStructs({\"A\":examples.test01\n",
" ,\"B\":examples.test02}\n",
" ,read=True)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "d82d915b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" balance | \n",
" interest | \n",
" principal | \n",
" rate | \n",
" cash | \n",
" intDue | \n",
" intOverInt | \n",
" factor | \n",
" memo | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2021-06-20 | \n",
" 543.90 | \n",
" 15.34 | \n",
" 456.10 | \n",
" 0.07 | \n",
" 471.44 | \n",
" 0 | \n",
" 0 | \n",
" 0.54390 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-07-20 | \n",
" 429.17 | \n",
" 3.12 | \n",
" 114.73 | \n",
" 0.07 | \n",
" 117.85 | \n",
" 0 | \n",
" 0 | \n",
" 0.42917 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-08-20 | \n",
" 313.86 | \n",
" 2.55 | \n",
" 115.31 | \n",
" 0.07 | \n",
" 117.86 | \n",
" 0 | \n",
" 0 | \n",
" 0.31386 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-09-20 | \n",
" 197.87 | \n",
" 1.86 | \n",
" 115.99 | \n",
" 0.07 | \n",
" 117.85 | \n",
" 0 | \n",
" 0 | \n",
" 0.19787 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-10-20 | \n",
" 81.15 | \n",
" 1.13 | \n",
" 116.72 | \n",
" 0.07 | \n",
" 117.85 | \n",
" 0 | \n",
" 0 | \n",
" 0.08115 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" balance interest principal rate cash intDue intOverInt \\\n",
"date \n",
"2021-06-20 543.90 15.34 456.10 0.07 471.44 0 0 \n",
"2021-07-20 429.17 3.12 114.73 0.07 117.85 0 0 \n",
"2021-08-20 313.86 2.55 115.31 0.07 117.86 0 0 \n",
"2021-09-20 197.87 1.86 115.99 0.07 117.85 0 0 \n",
"2021-10-20 81.15 1.13 116.72 0.07 117.85 0 0 \n",
"\n",
" factor memo \n",
"date \n",
"2021-06-20 0.54390 [, ] \n",
"2021-07-20 0.42917 [, ] \n",
"2021-08-20 0.31386 [, ] \n",
"2021-09-20 0.19787 [, ] \n",
"2021-10-20 0.08115 [, ] "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r['A']['bonds']['A1'].head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "376360fe",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" balance | \n",
" interest | \n",
" principal | \n",
" rate | \n",
" cash | \n",
" intDue | \n",
" intOverInt | \n",
" factor | \n",
" memo | \n",
"
\n",
" \n",
" | date | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | 2021-06-20 | \n",
" 340.83 | \n",
" 12.27 | \n",
" 459.17 | \n",
" 0.07 | \n",
" 471.44 | \n",
" 0 | \n",
" 0 | \n",
" 0.34083 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-07-20 | \n",
" 224.94 | \n",
" 1.96 | \n",
" 115.89 | \n",
" 0.07 | \n",
" 117.85 | \n",
" 0 | \n",
" 0 | \n",
" 0.22494 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-08-20 | \n",
" 108.41 | \n",
" 1.33 | \n",
" 116.53 | \n",
" 0.07 | \n",
" 117.86 | \n",
" 0 | \n",
" 0 | \n",
" 0.10841 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
" | 2021-09-20 | \n",
" 0.00 | \n",
" 0.64 | \n",
" 108.41 | \n",
" 0.07 | \n",
" 109.05 | \n",
" 0 | \n",
" 0 | \n",
" 0.00000 | \n",
" [<PayInt:A1>, <PayPrin:A1>] | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" balance interest principal rate cash intDue intOverInt \\\n",
"date \n",
"2021-06-20 340.83 12.27 459.17 0.07 471.44 0 0 \n",
"2021-07-20 224.94 1.96 115.89 0.07 117.85 0 0 \n",
"2021-08-20 108.41 1.33 116.53 0.07 117.86 0 0 \n",
"2021-09-20 0.00 0.64 108.41 0.07 109.05 0 0 \n",
"\n",
" factor memo \n",
"date \n",
"2021-06-20 0.34083 [, ] \n",
"2021-07-20 0.22494 [, ] \n",
"2021-08-20 0.10841 [, ] \n",
"2021-09-20 0.00000 [, ] "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r['B']['bonds']['A1'].head()"
]
}
],
"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.13.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}