---
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

1. 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.
2. 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.
3. 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?
4. 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.
5. 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

1. 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.
2. Default exit multiple equals entry multiple. Multiple expansion goes
   in sensitivity, never in the base case, unless the user explicitly
   asks for it.
3. 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.
4. Interest is charged on beginning balances by design (no circularity).
   Say so when handing the model to someone who will rebuild it in Excel.
5. 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.
6. Worked examples live in `references/worked-case.md`; point users
   there before re-deriving anything by hand.
