- NEW:
FirstLoss
as new endpoint, which will stress onDefault
assumption till 0.01 loss on input tranche. - NEW: New prepayment /default assumption via
byTerm
, which vector curves are being applied via term of the assets.
- NEW:
Multi-thread
on pool cashflow projection - NEW: Expose
convexity
on bond/asset - NEW: Add new prepayment assumption
PSA
for Monthly mortgage - NEW: Add new prepayment/default vector assumption based on asset origin term
- NEW: add custom fee flow by
BondPaidPeriod
PoolCollectedPeriod
index
- ENHANCE: refactor
calcPmt
to boost 15x performance for mortgage cashflow projection. - NEW: add
ScheduleByIndex
for bonds - FIX:
fundWith
shall increase the bond balance - ENHANCE: refactor Z-spread calc logic with numeric.root.finder
- NEW:
Multi Interest Bond
which used to model in bond withstep up
feature ( sub ordinated interest) in European - NEW: new assumption ,which used to funding existing bond.
- NEW: new query
totalFunding
for bond,which records all funding amount of bond. - NEW: new query
AmountRequiredForIRR
for bond,which return the amount to be paid out make bond met the target IRR. - NEW: in
Rate Swap
, the notional can be set byFormula
- ENHANCE: when account is being used as a source for
support
, it has option to book ledger with bothcredit
anddebit
direction. - FIX:
payPrinBySeq
was not paying out principal.
- NEW: new formula
totalFunded
for bond with extra funding amount - NEW: new deal run assumption
FundBond
, which records a time series funding amount for a single bond. - ENHANCE: When booking account from
support
action, now user can book onCredit
orDebit
side - FIX:
payPrinBySeq
was not working
- ENHANCE: Ensure
limit
always return positive ,otherwise engine will throw error - NEW: add new action
changeStatus
in waterfall, with optionalPre
as condition to trigger the status change
- NEW: new formula
ledgerBalanceBy
, which return eitherCredit
orDebit
balance of a ledger - FIX: step-up coupon bond which has a floater index will increase forever
- ENHANCE: refactor on
PDL
book type.
- NEW: break changes on API ,now the engine is able to throw out error message instead of just hanging.
- NEW: new Call options assumption ,which specifies
dates
to be tested - ENHANCE: transform financial report to a
Tree
from aTable
- NEW: Expose bond factor formula for single bond
- FIX: Enable balanceSheet support for multiple pools
- FIX: Include logs from clean up waterfall
- FIX: Include logs from trigger/actions
- ENHANCE: query borrower number by Pool Id
- ENHANCE: query current pool balance by Pool Id
- NEW: Expose combo sensitivity endpoint,
- NEW: Expose single clear ledger function
- NEW: Expose
writeoffBySeq
which write a list of bonds by sequence. - NEW: Add new assumption curve with padding last value to rest
- NEW: Expose extra Stress on ppy/def curve, use can impose time-series based stress on prepayment and default.
- NEW: Expose
transferMultiple
, with one action transfer multiple account to single account - ENHANCE: Expose pricing for bond groups
- ENHANCE: Instead of liquidating all pools but users now have the option to select pool to liquidate
- FIX: Revolve buy when building balance
- FIX: avoid duplicate run waterfall in call
- ENHANCE: Expose pricing function with options of
include
ornot include
accrued interest. - NEW: Ballon Mortgage
- NEW: Expose Assumption: defaultAtEnd with rates
- NEW: Expose revolving buy asset from multiple pools
- NEW: Expose which waterfall is run at each payment date
- FIX: correct
runPool
cashflow order and add UT
- FIX: enable compound formula on
weighted average
formula.
- FIX: enable
annualized rate fee type
with formulabondbalance
onbondGroup
- NEW: new assumption
issue bond
which allow funding by issuing new bonds during cashflow projection. - NEW: new asset class
projectScheduleFlow
which can be divided projected cashflow with fix portion and float portions. The interest from the float portion will be affected by interest rate assumption. - ENHANCE: enable formula
bondRate
/bondWaRate
onbondGroup
- FIX:
formula
will returninf
if adivide
with zero instead of just throw exception - FIX:
financial reports
was failing because it can't access tointerest due
on bond group. - FIX: enable formula query on
bond groups
- FIX:
limit
onpayFee
was not working withduePct
- ENHANCE: expose
transaction statement
fortriggers
- NEW: enable
trigger
to run waterfallactions
- FIX: the
result log
used to be doubled each pool collection period - FIX:
payPrinResidual
will use all cash from account regardless principal due of bonds, which may caused negative balance of bonds( cash of account > principal due of bond)
- BREAK : add
bondGroup
, which group bonds and pay with prorata/sequential/by coupon rate/by maturity/by start date - BREAK : add
begin balance
/accure interest
/as of date
for cashflow frame - BREAK : add
interest arrears
interest over interest
on bond cashflow - NEW: add
interest over interest
settings on bonds and exposeinterest over interest
interest due
flow - ENHANCE: add tabular representation of cashflow frame
- FIX: fix rolling default rate query
- NEW: add
weekday <n>
in the date pattern - ENHANCE: expose
weekly
/biweekly
inPeriod
- NEW: now allow new
first N period without Fee
feature to model cashflow of typeInstallment
- FIX: negative pool balance for (revolving pool asset >= 2)
- ENHANCE: enable all
Combination Type
formula (via patching dates) - ENHANCE: add capability to query txn in (Fee/Bond/Account) via a
comment
- ENHANCE: deal will return how it was ended in projection
- NEW: Formula:
originalBondBalance
,BondDuePrin
- NEW: Waterfall Action:
CalcBondPrin
,PayPrinWithDue
- ENHANCE: fix Formula:
PoolFactor
- NEW: Enable
*
between formulas - FIX: Unlimit Liquidity Provider has wrong available balance
- ENHANCE: Enable pricing on asset via a constant rate/rate curve; add
duration
for asset pricing (curve only)
- ENHANCE: Pool run: enhance multip-scenario run and mulitple-assets type run
- ENHANCE: Enable revovling on
Receivable
- ENHANCE: add
RecoveryByDays
toReceivable
,which describes recovery cash received after default. - FIX: Fix single asset run on
lease
- FIX: Failed to include cumulative stats on revolving buy assets
- FIX: Multi-asset run was failure due to including schedule cashflow run.
- ENHANCE: upgrade stack resolver from
lts-18.22
tolts-22.6
- NEW: Now docker image ship with
Apple silicon
chip ! Happy hacking Mac users !
- FIX: patch recoveries for
Mortgage
type cashflow - NEW: add new asset class
Receivable
which represent ainvoice factored
,trading receivable
- NEW:
DefaultAtEnd
assumption, which assumes asset default at last payment(ForReceivable
)
- NEW:
fundWith
which will increate the balance of bond and deposit cash to account. - NEW:
writeOff
which will write off balance of bond via a formula - NEW: a new predicate
passMaturity
which True if bonds has passed their expected maturity/pay off date. - NEW:
Not
as composite boolean test. - NEW: add new
OAS
pricing assumption, which return OAS spread given input scenarios.
- NEW: add
NO_FirstN
as type ofMortgage
which implies no payment for first N period and interest due will be capitalized. - NEW: add
IO_FirstN
as type ofMortgage
which implies no principal payment for first N period. - NEW: add
Make Whole
Feature, which allow user to set a ,,<WAL/Spread> Table. The bond will be componsate with PV from spread determined by WAL remaining.
- NEW: add
resec deal
, which allow to use bonds as underlying assets and allow user to set assumption on underlying deals.
- NEW: add
payIntBySeq
which pay interest to bonds sequentially with optional limit - NEW: add condition to "ExtraSupport" ,which support only available if a is satisfied
- NEW: add
Nothing
to trigger effects - NEW: add
payFeeBySeq
to which pay a list of fees sequentially with optional limit - NEW: add a fee type which due amount is X per pool collection period
- NEW: add a fee type which is a lookup table with look up value from a formula
- NEW: add override feature
rate
andbalance
tocalcDueInt
action in waterfall. - NEW: multiple pool support !! now engine support multiple pools in a deal with mixed assets.
- NEW: add query on
present value on schedule pool cashflow
, which enableYield Maitenance Overcollaterisaztion
supports
- NEW: new asset class
FixAsset
type , which yield cashflow given acapacity
and assumption calledutilization rate curve
. The new asset type is applicable to Hotel booking/EV Charge station/Solar Panel/Wind Power type. - NEW: new rate hedge instrument
RateCap
which yield cash ifrateCurve
is higher than astrike rate
- NEW: add
accruedInterest
field in pool stats, which will be deducted from pool cash flow - NEW: add
payPrinBySeq
in waterfall action, now user can pay prin bond via a simple list. - NEW: add an assumption
fireTrigger
which mannualy fire a trigger at point of projection - NEW: add pool collection type
totalCash
will aggregate all pool cash field - NEW:
payInt
now accept alimit
which constrain how much interset to be paid via aformula
- NEW: add
bookBy
a ledger viaformula
- NEW: add
I_P
toMortgage
type ,which modelsBuy To Let
type mortgage( interest only and principal at last period) - ENHANCE: include
Lens
and code clean up - BREAK: refactor
StepUp
out ofinterest
part of bond.
- ENHANCE: expose cumulative stats on pool cashflow returned by
runDeal
- NEW: add
default by amount
assumption, which enable user to set atotal amount of default
alongside with a vector. - ENHANCE: misc refactors
- BREAK: cashflow now with
Cumulative Stats
( cumulative default/delinq/loss/prepayment/principal/recovery) - NEW: expose
inspect
in waterfall action to observe variables during a waterfall execution - NEW:
stepup
now accpet apre
instead of adate
to switch rate - ENHANCE: auto patch
issuance balance
forPreClosing
Deal - ENHANCE: implement
pre-run check
andpost-run check
- IssuanceBalance check :
Ongoing Deal
shall have a IssuanceBalance value in Pool - Interest Rate check : index required by deal should be found in assumption
- Waterfall action check : actions in waterfall ( source/target) should exist in deal object
- IssuanceBalance check :
- FIX: fix bug on
prepay penalty
when usingstepDown
- FIX: fix project cashflow for
Loan
- ENHANCE: in the revolving buy , now buy amount is no longer a multipler of revolving assets face value
- FIX: now revolving asset may have remtain term == original term
- ENHANCE: require a new status when defining a deal in
preClosing
stage - FIX: fix a bug when reading financial report logs
- NEW: include a
default
/delinq
/loss
status map when projecting cashflow - NEW: implement
haircut
as extra stress projectingmortgage
- ENHANCE: include
called
deal status, which will be set when deal was triggered with a clean up call assumption - ENHANCE: expose
runAsset
endpoint - ENHANCE: expose formula query on
deal status
as well astrigger status
- ENHANCE: add
rampUp
deal status - FIX: adjust bond reset date from
cutoff date
toclosing date
- BREAK: seperate
performance assumption
- BREAK: add
delinquency
projection on mortgage as well as schedule mortgage cashflow
- ENHANCE: now user can include boolean/int/balance/rate type query in
inspect
field
- BREAK: move
Trigger
fromlist
into amap
with a name - ENHANCE: add
CumulatiePoolDefaultedRateTill
to query default rate as of collection period N , then support query last one,last two default rates in the past as a rolling basis.. - ENHANCE: add
queryBool
with test logic ofany
or
which will test all predicates or any predicates are/is satisfied. With new included aforementioned formula above, the engine can have a predicate likelast 2 period cumulative defaulte rates are all lower than 5%
,any last 2 period cumulative defaulte rates is higher than 5%
- ENHANCE: add
LedgerTxnAmt
, allow user to query transaction amount for a ledger bycomment
- ENHANCE: expose
Abs
in formula , which will get absolute value of another formula
- BREAK: refactor
payInt
andpayFee
which includesextraSupport
from either anotheraccount
orliquidation provider
, with option to bookPDL draw
on ledger - NEW: expose
Cumulative Net Loss
Cumulative Net Loss Ratio
Bond Rate
Bond Weight Average Rate
in formula - NEW: expose
Avg
in formula ,which can calculate average value from a list of deal stats. - NEW: expose
RefRate
in bond , now bond can be setup interest rate which reference to a value of deal , could be like 100% of Pool WAC coupon , or average of bond rate of bonds etc. - ENHANCE: add
liquidity provider
interest swap
tobalance sheet repot
- ENHANCE: add new bool query
is_most_senior_bond
- ENHANCE: add new balance query
PoolCurCollection
returns target pool source balance in last collected period - ENHANCE: refactor account transfer by
target reserve amount
- ENHANCE: add
reserve account excess/gap
to formula - ENHANCE: refactor bond
step up
coupon by date ,which pertains to Euro deals - ENHANCE: add comments to souce code and prepare to release to
Hackage
- NEW: Add
Step Up By Date
/Cap
/Floor
coupon type for bond - NEW: Add
Prepay Penalty
attribute onMortgage
, penalty types includes:rate0
beforeterm N
andrate1
afterterm N
- Fixed amount in lifetime or before
term N
- Fixed pct in life time or bfore
term N
- Sliding from
rate0
by step ofrate1
- Ladder type like first
12
periods with Pct ofRate0
, next12
periods with Pct ofRate1
- ENHANCE: refactor
liquidity provider
- include a maybe
valid date
of the agreement - include floater index
- include a maybe
- ENHANCE: add
calcAndPay
action for fee - ENHANCE: expose new assumption on expense projection
- ENHANCE: include a new
NO_IE
type to generate dates vector - FIX: Fix missing periods of
recurr
type of fee
- NEW : add a new expense type:
TargetBalanceFee
, which due amount =<formula 1> - <formula 2>
- ENHANCE: add query total txn amount for account/bond/expense with optional
comment
as a filter - ENHANCE: expoese query on
cumulative pool
onrecoveries
principal
interest
prepayment
- ENHANCE: expoese query on
beg balance
on pool
- ENHANCE: trancate payments records for bond with 0 balance and 0 due interest/due pricipal
- ENHANCE: expose query on
cumulative pool recoveries
- ENHANCE: expose
factor
in query - ENHANCE: ensure principal payment is cap via bond oustanding balance
- FIX: update PDL Ledger balance after
bookBy
action
- FIX: fix pricing error if bond flow size is 0
- BREAK : seperate
payInt
action andaccrueInt
action - ENHANCE: optimize
Z-spread
calculation - ENHANCE: re arrange
deal.hs
, break down code logic into seperate files. - NEW: include
ledgers
to accomodatePDL
feature (Principal Deficiency Ledger) - ENHANCE: expose
rounding
ondeal stats
, which rounds interest rate change by a factor of fix amount ,or pay principal on balance by a factor of fix amount. - ENAHNCE: expose
runDate
endpoint as sandbox for user to play with<datePattern>
- NEW : add
floorAndCap
formula to set upper or lower bound of formula value - NEW : add formula based fee rate for
pct
andannual
type of fee
- NEW : Project cashflow for a list of asset, with performance assumption
- ENHANCE : Add
limit
for revolving buy action - ENHANCE : Add
default
waterfall - NEW : Add "IF-ELSE" in waterfall action
- NEW "Major" : expose revolving assumption !
- NEW :
Pre
now support comparing with abalance
type formula ,not limited to a balance number
- NEW: expose
exclude dates
andoffset by days
- NEW: expose trigger status in
Inspect
- NEW: expose
BalanceSheet Report
andCashflow Report
, user can query them via set flags in assumption - BREAK: normalized some account comments to be analysed when compling
Cashflow Report
- NEW: expose bond with
Step-Up coupon
feature - BREAK:using
DatePattern
to annotate reset date for floater bonds - FIX: data query in the trigger
- FIX: Fix cashflow projection logic for
Installment
- Include
DefaultedRecovery
assumption for defaulted assets.
- Introduce new asset :
AdjustRateMortgage
with assumption:- init period,first reset cap, periodic reset cap,lifetime cap, lifetime floor
- Docker hub will host each stable releases of Hastructure