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.
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:
| Tier | Balance share | Loan count | WAC | WA FICO |
|---|---|---|---|---|
| Tier 1 | 19.1% | 7,602 | 13.0% | 724 |
| Tier 2 | 12.6% | 5,121 | 16.9% | 705 |
| Tier 3 | 12.5% | 5,011 | 19.1% | 691 |
| Tier 4 | 12.8% | 5,292 | 21.1% | 676 |
| Tier 5 | 18.3% | 7,532 | 23.5% | 661 |
| Tier 6 | 7.5% | 3,097 | 25.4% | 644 |
| Tier 7 | 17.3% | 7,138 | 26.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:
| Class | Rating | Balance | CE | Coupon |
|---|---|---|---|---|
| A-1 | AAA · MM | $132.0M | 64.63% | 4.212% |
| A-2 | AAA | $66.0M | 64.63% | 4.516% |
| B | AA- | $157.0M | 36.58% | 4.924% |
| C | A- | $33.0M | 30.68% | 5.037% |
| D | BBB- | $23.0M | 26.58% | 5.291% |
| E | BB- | $98.3M | 9.03% | 8.473% |
| F-1 | B | $9.5M | 7.33% | 10.832% |
| F-2 | NR | $18.5M | 4.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:
| Class | Rating | Coupon | Yield | WAL (yrs) |
|---|---|---|---|---|
| A-1 | AAA | 4.212% | 4.25% | 0.6 |
| A-2 | AAA | 4.516% | 4.56% | 0.6 |
| B | AA- | 4.924% | 4.98% | 1.6 |
| C | A- | 5.037% | 5.09% | 2.2 |
| D | BBB- | 5.291% | 5.35% | 2.4 |
| E | BB- | 8.473% | 8.62% | 3.2 |
| F-1 | B | 10.832% | 11.08% | 4.3 |
| F-2 | NR | 12.000% | first-loss — impaired | 4.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:
| Class | Rating | Base writedown | Stress writedown |
|---|---|---|---|
| A-1 / A-2 | AAA | 0% | 0% |
| B | AA- | 0% | 0% |
| C | A- | 0% | 0% |
| D | BBB- | 0% | 0% |
| E | BB- | 0% | 0.4% |
| F-1 | B | 0% | 100% |
| F-2 | NR | 46% | 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.