Skip to content

Commit 77d5810

Browse files
committed
add IRR nb & regression
1 parent efcb8bf commit 77d5810

File tree

4 files changed

+1165
-2
lines changed

4 files changed

+1165
-2
lines changed

absbox/tests/regression/deals.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,49 @@
9898
,None
9999
,None
100100
,"Amortizing"
101+
)
102+
103+
Irr01 = Generic(
104+
"IRR Case"
105+
,{"cutoff":"2021-03-01","closing":"2021-04-01","firstPay":"2021-06-20"
106+
,"payFreq":["DayOfMonth",20],"poolFreq":"MonthFirst","stated":"2030-01-01"}
107+
,{'assets':[["Mortgage"
108+
,{"originBalance":2200,"originRate":["fix",0.045],"originTerm":20
109+
,"freq":"Monthly","type":"Level","originDate":"2021-02-01"}
110+
,{"currentBalance":2200
111+
,"currentRate":0.08
112+
,"remainTerm":20
113+
,"status":"current"}]]}
114+
,(("acc01",{"balance":0}),)
115+
,(("A1",{"balance":1000
116+
,"rate":0.07
117+
,"originBalance":1000
118+
,"originRate":0.07
119+
,"startDate":"2021-04-01"
120+
,"rateType":{"Fixed":0.08}
121+
,"bondType":{"Sequential":None}})
122+
,("B",{"balance":1000
123+
,"rate":0.0
124+
,"originBalance":1000
125+
,"originRate":0.07
126+
,"startDate":"2021-04-01"
127+
,"rateType":{"Fixed":0.00}
128+
,"bondType":{"Equity":None}
129+
}))
130+
,tuple()
131+
,{"amortizing":[
132+
["accrueAndPayInt","acc01",["A1"]]
133+
,["payPrin","acc01",["A1"]]
134+
,["payPrin","acc01",["B"]]
135+
,["payIntResidual","acc01","B"]
136+
]}
137+
,[["CollectedInterest","acc01"]
138+
,["CollectedPrincipal","acc01"]
139+
,["CollectedPrepayment","acc01"]
140+
,["CollectedRecoveries","acc01"]]
141+
,None
142+
,None
143+
,None
144+
,None
145+
,("PreClosing","Amortizing")
101146
)

absbox/tests/regression/main.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,40 @@ def test_first_loss(setup_api):
192192
,None)
193193
,read=True
194194
)
195-
closeTo(r0['FirstLossResult'][0], 31.60100353659348, r=6)
195+
closeTo(r0['FirstLossResult'][0], 31.60100353659348, r=6)
196+
197+
@pytest.mark.analytics
198+
def test_irr_01(setup_api):
199+
r0 = setup_api.run(Irr01
200+
,poolAssump=("Pool",("Mortgage",{"CDRPadding":[0.01,0.02]},{"CPR":0.02},{"Rate":0.1,"Lag":5},None)
201+
,None
202+
,None)
203+
,runAssump = [("pricing",{"IRR":{"B":("holding",[("2021-04-01",-500)],500)}})]
204+
,read=True
205+
)
206+
#print(">>>", r0)
207+
closeTo(r0['pricing']['summary'].loc["B"].IRR, 0.264238, r=6)
208+
209+
r1 = setup_api.run(Irr01
210+
,poolAssump=("Pool",("Mortgage",{"CDRPadding":[0.01,0.02]},{"CPR":0.02},{"Rate":0.1,"Lag":5},None)
211+
,None
212+
,None)
213+
,runAssump = [("pricing",{"IRR":
214+
{"A1":("holding",[("2021-04-01",-500)],500,"2021-08-19",("byFactor",1.0))}
215+
}
216+
)]
217+
,read=True)
218+
219+
closeTo(r1['pricing']['summary'].loc["A1"].IRR, 0.07196, r=6)
220+
221+
r3 = setup_api.run(Irr01
222+
,poolAssump=("Pool",("Mortgage",{"CDRPadding":[0.01,0.02]},{"CPR":0.02},{"Rate":0.1,"Lag":5},None)
223+
,None
224+
,None)
225+
,runAssump = [("pricing",{"IRR":
226+
{"A1":("buy","2021-08-01",("byFactor",0.99),("byCash",200))}
227+
}
228+
)]
229+
,read=True)
230+
231+
closeTo(r3['pricing']['summary'].loc["A1"].IRR, 0.12248, r=6)

0 commit comments

Comments
 (0)