Back

Structuring a Securitization from a Loan Tape — Reproducibly

From a $600mm consumer tape to a priced, stress-tested capital stack

SE

Shariff Elkordy

July 2026

In structured credit, a number you can't reproduce is worth nothing. You can't put it in a term sheet, hand it to a counterparty, or defend it to a rating agency if you can't rebuild it and get the same answer tomorrow. That's the bar — and it's a high one for AI, because a language model's native output is plausible, not reproducible. Ask one to run the cash flows on a securitization and it will write confident, well-formatted code and hand you a number. But without a cashflow engine underneath, that number is a well-dressed guess.

Graam is built to clear the bar. It's a code-writing analyst — you describe the work in plain language, it writes and runs the code — but the code it writes composes a library of deterministic, tested financial primitives: a rating-agency credit-enhancement sizer, a cashflow engine, a bond-waterfall model, pricing analytics. The model decides what to do and in what order; the primitives do the math. Same inputs, same outputs, every time — and every step visible, from the tape to the term sheet.

That's the whole idea: the flexibility of a conversation, on top of numbers a desk can actually stand behind. Here it is end to end, on a synthetic $600mm consumer-loan tape, worked the way a structurer actually works — one stage at a time, each building on the last. The full notebook is live and rerunnable here.

Loan tapeYour questionGraamCode writerwrites Python to your intentCashflow enginePerformance dataRating methodologiesPriced dealstress-testedreproducible — it rerunsProvenance & anti-fabricationevery figure traces to a source, or it's refusedWAC 20.4% ← the tapeF-1 100% writedown ← waterfall4.212% coupon ← stated, labeled
Amber writes the code; teal are the deterministic primitives it can only compose. Every figure traces to a source, or it's refused.

1. The process, before the data

Before touching the tape, I asked Graam to lay out its structuring pipeline — pool description, CE sizing, tranche sizing, coupons, excess spread, assembly, projection, waterfall, pricing, sensitivity, term sheet — and to name the deterministic primitive behind each stage. Not "AI will figure it out," but a specific tool that runs at each step and the typed output it produces. That's the contract: you can see, in advance, exactly what will compute each number.

2. Stratify the tape

40,793 loans, $600mm original balance. By tier:

TierBalance shareLoan countWACWA FICO
Tier 119.1%7,60213.0%724
Tier 212.6%5,12116.9%705
Tier 312.5%5,01119.1%691
Tier 412.8%5,29221.1%676
Tier 518.3%7,53223.5%661
Tier 67.5%3,09725.4%644
Tier 717.3%7,13826.2%626

A 677 WA FICO, 20.4% WAC consumer book — a clean risk gradient from prime (Tier 1: 724 FICO, 13% coupon) to deep subprime (Tier 7: 626 FICO, 26% coupon), with roughly a quarter of the pool below 650. The collateral read takes two lines to summarize and is exact to the tape.

3. Structure it — to the methodology

This is where a general analysis tool stops and a structuring engine begins. I gave Graam the rating-agency CE ladder and coupon schedule and asked it to build the stack on this collateral: A-1 money-market senior, A-2 AAA at 64.63% CE, down through B (AA-) 36.58%, C (A-) 30.68%, D (BBB-) 26.58%, E (BB-) 9.03%, F-1 7.33%, F-2 4.03% — with 2.30% initial overcollateralization and a 0.50% reserve. It sized each tranche to the ladder and persisted a real, machine-readable deal model:

A-1
A-2
B
E
senior · AAAfirst loss · NR / O·C
The $560mm pool split into the eight rated tranches, sized to the stated CE ladder — widths are share of pool. Exact balances, CE, and coupons below.
ClassRatingBalanceCECoupon
A-1AAA · MM$132.0M64.63%4.212%
A-2AAA$66.0M64.63%4.516%
BAA-$157.0M36.58%4.924%
CA-$33.0M30.68%5.037%
DBBB-$23.0M26.58%5.291%
EBB-$98.3M9.03%8.473%
F-1B$9.5M7.33%10.832%
F-2NR$18.5M4.03%12.000%

Plus 2.30% initial O/C and a 0.50% ($2.8M) reserve. The coupons come back exactly as specified — A-1 4.212%, F-2 12.000%, and every rung in between. A stated term flows through to the model rather than being "approximately" reconstructed, and that fidelity is the difference between a term sheet and a draft. Graam also disclosed, on its own, that the engine sized overcollateralization at 3.53% against the 2.30% I'd stated, and held the CE ladder to my numbers — the kind of "here's where my sizing and your input diverge" note you need from a model and never get from a black box.

4. Price it

Base case — a 3.5% conditional default rate consistent with the issuer's own performance history, ~90% severity, a 10% consumer prepay speed. Graam projects the collateral once, distributes cash through the actual waterfall, and prices every bond in a single analytics pass:

ClassRatingCouponYieldWAL (yrs)
A-1AAA4.212%4.25%0.6
A-2AAA4.516%4.56%0.6
BAA-4.924%4.98%1.6
CA-5.037%5.09%2.2
DBBB-5.291%5.35%2.4
EBB-8.473%8.62%3.2
F-1B10.832%11.08%4.3
F-2NR12.000%first-loss — impaired4.7

Not an approximation of a waterfall — the waterfall, on the deal it just built. And notice the last row: at a base loss of ~5.5% cumulative net loss, F-2's 4.03% attachment is already breached, so the engine reports the first-loss piece as impaired rather than quietly pricing it to par. It tells you the uncomfortable thing.

5. Stress it

The question a deterministic engine exists to answer: push cumulative net loss toward and beyond the agency's 15.72% worst case, and see which bonds break. Graam raised the default rate until cumulative net loss hit 15.74% and ran it through the same structure:

AAA · AA- · A- · BBB- — 0% base / 0% stress · untouched
E BB-
base 0%
stress 38%
F-1 B
base 0%
stress 100%
F-2 NR
base 46%
stress 100%
Everything BBB- and up stays whole. The subordinates absorb the loss, in order — F-1 and F-2 fully written down, E beginning to break. Full per-tranche table below.
ClassRatingBase writedownStress writedown
A-1 / A-2AAA0%0%
BAA-0%0%
CA-0%0%
DBBB-0%0%
EBB-0%0.4%
F-1B0%100%
F-2NR46%100%

The losses cascade exactly where the structure sends them. At 15.74% CNL, F-1 and F-2 are fully written down and E (BB-) begins to break — while everything from BBB- up (D, C, B, and both AAA seniors) stays whole. The residual and the F-tranches absorb the loss first, in order, before it reaches a rated bond. You can trace the exact dollar of loss to the exact tranche that takes it — because there is a real waterfall doing the accounting, not a narrative describing one.

6. The term sheet

Everything above, assembled into a one-page summary — the tranche table, the base-versus-stress read on the subordinates, and the line that matters to a buyer: where excess spread and the 0.50% reserve absorb losses ahead of the bonds.

7. Why it holds up

Every figure traces to a primitive call or the tape. Nothing in the chain is a paraphrase. And the deal serializes to a machine-readable model that the open-source cashflow engine reruns to the identical cash flows — so "reproducible" isn't a claim, it's a file you can hand someone and say: run it yourself.

The flexibility is what makes it usable. The determinism is what makes it trustworthy. In this business you need both — and most of the time you're asked to choose. The full notebook that produced every figure here is live and rerunnable.
Structuring a Securitization from a Loan Tape — Reproducibly — Graam