Valuation

Model a buyout financed with debt

valuation_lbo · Reads only · Markdown

A buyout financed with debt, year by year: sources and uses, each debt tranche, the exit, MOIC, IRR and an IRR grid by entry and exit multiple.

Free*

*Free up to 1,000,000 reads a month for the whole account, then $0.50 per 10,000 reads.

An example

If we buy Kuechentechnik Nord at 7 times EBITDA with a bank loan of three times EBITDA, what return do we make when we sell after five years?

Your agent callsvaluation_lboFree*

The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.

With these arguments
{
  "entry_ebitda": 2.6,
  "entry_multiple": 7,
  "fees": 0.4,
  "tax_rate": 0.3,
  "debt": [
    {
      "name": "Senior term loan",
      "ebitda_multiple": 3,
      "rate": 0.065,
      "amortization": 0.6,
      "sweep": true
    }
  ],
  "years": [
    {
      "ebitda": 2.8,
      "depreciation": 0.5,
      "capex": 0.5,
      "nwc_change": 0.1
    },
    {
      "ebitda": 3,
      "depreciation": 0.5,
      "capex": 0.5,
      "nwc_change": 0.1
    },
    {
      "ebitda": 3.3,
      "depreciation": 0.6,
      "capex": 0.6,
      "nwc_change": 0.1
    },
    {
      "ebitda": 3.5,
      "depreciation": 0.6,
      "capex": 0.6,
      "nwc_change": 0.1
    },
    {
      "ebitda": 3.8,
      "depreciation": 0.6,
      "capex": 0.6,
      "nwc_change": 0.1
    }
  ],
  "currency": "EUR"
}
What comes back
{
  "uses": [
    {
      "name": "Enterprise value",
      "amount": 18.2
    },
    {
      "name": "Fees",
      "amount": 0.4
    }
  ],
  "sources": [
    {
      "name": "Senior term loan",
      "amount": 7.8
    },
    {
      "name": "Sponsor equity",
      "amount": 10.8
    }
  ],
  "entry_multiple": 7,
  "years": [
    {
      "year": 1,
      "ebitda": 2.8,
      "interest": 0.51,
      "taxes": 0.54,
      "free_cash_flow": 1.16,
      "repaid": 1.16,
      "debt": 6.64,
      "cash": 0,
      "tranches": [
        {
          "name": "Senior term loan",
          "interest": 0.51,
          "repaid": 1.16,
          "balance": 6.64
        }
      ]
    },
    {
      "year": 2,
      "ebitda": 3,
      "interest": 0.43,
      "taxes": 0.62,
      "free_cash_flow": 1.35,
      "repaid": 1.35,
      "debt": 5.3,
      "cash": 0,
      "tranches": [
        {
          "name": "Senior term loan",
          "interest": 0.43,
          "repaid": 1.35,
          "balance": 5.3
        }
      ]
    }
  ],
  "exit": {
    "year": 5,
    "multiple": 7,
    "enterprise_value": 26.6,
    "debt": 0,
    "cash": 0.06,
    "net_debt": -0.06,
    "equity_value": 26.66
  },
  "equity_invested": 10.8,
  "moic": 2.468583,
  "irr": 0.19809,
  "warnings": [],
  "method": "Interest on each tranche's opening balance; tax on EBITDA - depreciation - interest (never below zero); free cash flow = EBITDA - capex - change in working capital - tax - interest. It pays each tranche's amortization, then sweep tranches in order, and the rest stays as cash. Exit equity = exit multiple x last EBITDA - debt + cash; IRR = MOIC ^ (1 / years) - 1.",
  "sensitivity": {
    "entry_multiple": [
      6.5,
      7
    ],
    "exit_multiple": [
      6.5,
      7
    ],
    "irr": [
      [
        0.211178,
        0.22922
      ],
      [
        0.180505,
        0.19809
      ]
    ]
  },
  "currency": "EUR"
}

Use it when

To see what a buyout financed with debt returns, and how much debt it carries.

What it does

An LBO: sources and uses, each debt tranche's interest, amortization and cash sweep year by year, the cash left, the exit value and equity, MOIC and IRR, and an IRR grid for entry by exit multiple. Interest is on each opening balance; tax is on EBITDA less depreciation and interest.

What comes back

uses, sources (each tranche and the sponsor equity), entry_multiple, years (ebitda, interest, taxes, free_cash_flow, repaid, debt, cash and each tranche), exit (year, multiple, enterprise_value, debt, cash, net_debt, equity_value), equity_invested, moic, irr, warnings, sensitivity (entry_multiple by exit_multiple irr) and method. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
entry_ebitdanumber
entry_multiplenumberAt most 100.
entry_enterprise_valuenumberInstead of entry_ebitda x entry_multiple.
feesnumberAt least 0. Default: 0.
debtarray of objectsUp to 6 items.
debt[].nameRequiredstring1 to 200 characters.
debt[].amountnumberAt least 0.
debt[].ebitda_multiplenumberInstead of amount: times entry EBITDA. 0 to 20.
debt[].rateRequirednumberInterest a year. A decimal: 0.09 is 9%. 0 to 1.
debt[].amortizationnumberRepaid each year. At least 0. Default: 0.
debt[].sweepbooleanSpare cash repays this tranche, in the order given. Default: false.
yearsRequiredarray of objects1 to 15 items.
years[].ebitdaRequirednumber
years[].depreciationnumber
years[].capexnumber
years[].nwc_changenumber
tax_rateRequirednumberTax on profit. A decimal: 0.09 is 9%. 0 to 0.9.
exit_multiplenumberThe entry multiple when left out. At most 100.
sensitivityobject
sensitivity.stepsinteger1 to 3. Default: 1.
sensitivity.stepnumber0.1 to 5. Default: 0.5.
currencystringShown with the figures, e.g. EUR. Nothing is converted. Up to 10 characters.

The call

Over MCP, call valuation_lbo on https://api.conecto.chat/mcp/valuation. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/valuation_lbo \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"entry_ebitda":2.6,"entry_multiple":7,"fees":0.4,"tax_rate":0.3,"debt":[{"name":"Senior term loan","ebitda_multiple":3,"rate":0.065,"amortization":0.6,"sweep":true}],"years":[{"ebitda":2.8,"depreciation":0.5,"capex":0.5,"nwc_change":0.1},{"ebitda":3,"depreciation":0.5,"capex":0.5,"nwc_change":0.1},{"ebitda":3.3,"depreciation":0.6,"capex":0.6,"nwc_change":0.1},{"ebitda":3.5,"depreciation":0.6,"capex":0.6,"nwc_change":0.1},{"ebitda":3.8,"depreciation":0.6,"capex":0.6,"nwc_change":0.1}],"currency":"EUR"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
invalid_input400The debt covers the whole price, a tranche has neither an amount nor an EBITDA multiple, or there is no entry price.Borrow less than the price with fees, or give entry_ebitda with entry_multiple.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md