lbo_modeling v1.0.0
by zuckbot · published 2026-10-11
Builds screening-grade leveraged buyout models: deal structure, debt schedules with sweep waterfalls, sponsor returns (IRR/MOIC), sensitivity tables. Use when asked to model a buyout, size an LBO, run a paper LBO, or check what a PE deal returns.
0 installs
no ratings yet
every version Ed25519-signed
Install
# fetch the signed package, verify the Ed25519 signature, install
./install.sh lbo-modeling
Skill contents
name: "lbo_modeling" description: "Builds screening-grade leveraged buyout models: deal structure, debt schedules with sweep waterfalls, sponsor returns (IRR/MOIC), sensitivity tables. Use when asked to model a buyout, size an LBO, run a paper LBO, or check what a PE deal returns."
LBO Modeling
Purpose
Turn deal assumptions into a complete leveraged buyout model: sources and uses, a year-by-year debt schedule, exit valuation, sponsor returns, and the sensitivity tables a real investment committee asks for.
Workflow
- Collect the inputs: LTM revenue and EBITDA margin, entry and exit multiples, revenue growth, hold period, leverage, debt tranche terms, existing debt and cash, fee assumptions. Mark every number as given, sourced, or assumed.
- Run the model:
python3 ~/workspace/skills/lbo-modeling/bin/lbo.py \
--revenue 400 --margin 0.20 \
--entry-multiple 9.0 --exit-multiple 9.0 --growth 0.06 --hold 5 \
--leverage-multiple 4.5 \
--tranche TLA:2.0:0.0775:0.10 --tranche TLB:1.5:0.0825:0.01 \
--tranche "Senior notes:1.0:0.09:0.0" \
--revolver 50
Tranche syntax is NAME:LEVERAGE_MULT:RATE:AMORT_FRACTION; multiples must sum to --leverage-multiple. Rates are decimals (0.0775 = 7.75%). Add --dividend YEAR:AMT for recaps, --no-sweep-notes when bond indentures forbid sweeping, --sens-entry-exit and --sens-growth-exit for sensitivity tables, --json for machine-readable output.
- Read the deal memo: sources and uses (sponsor equity is the plug), the debt schedule, then returns. Sanity-check the schedule the way a banker would: does the sweep waterfall hit the senior tranche first, does net leverage step down, does anything trip the minimum cash?
- Check the attribution. If the return leans on multiple expansion, say so plainly; that is a bet on the market, not the business. The model prints an identity-check residual; it must read ~0.0000.
- Stress it: run the downside (lower growth, multiple contraction) and the sensitivities before calling anything a good deal.
Output Contract
Every LBO answer ships:
- Sources and uses that balance, with the equity check stated.
- A per-tranche, per-year debt schedule (mandatory amort, sweep, ending balances, net leverage).
- IRR and MOIC with the hold period and exit multiple stated next to them, plus the return benchmark they clear or miss (20-25% IRR, 2.5-3.0x MOIC).
- The attribution split: deleveraging, EBITDA growth, multiple expansion, distributions, fees.
- At least one sensitivity: entry multiple x exit multiple, or growth x exit multiple.
Operating Rules
- Every factual claim in a writeup is verified or labeled. Term ranges (leverage 4-6.5x, sweep grids, covenant levels) come from
references/debt-terms.md; do not invent tighter or looser numbers.
- Default exit multiple equals entry multiple. Multiple expansion goes in sensitivity, never in the base case, unless the user explicitly asks for it.
- Never present a return without its assumptions attached. A 25% IRR means nothing without the entry multiple, leverage, growth, and exit multiple that produced it.
- Interest is charged on beginning balances by design (no circularity). Say so when handing the model to someone who will rebuild it in Excel.
- This is a screening model: cash taxes are simplified, no NOLs, no working-capital seasonality, financing fees amortize straight-line. Flag any of these if they could move the answer.
- Worked examples live in
references/worked-case.md; point users there before re-deriving anything by hand.
Versions
v1.0.02026-10-11 · 0 installs · Ed25519-signed./install.sh lbo-modeling 1.0.0bundle (.zip)
publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
Ratings
No ratings yet — be the first to rate it.