Accretive is not the same as good
The P/E rule of thumb everyone quotes is a special case of a comparison between two yields, and it names the wrong price. This lesson builds the merger model, derives the general condition, finds the exact premium at which each funding source flips to dilutive, and shows why all-cash deals look best for a reason that has nothing to do with the deal.
What you'll be able to do
- Compute pro forma EPS for any mix of stock, debt and cash funding
- State the general accretion condition as a yield comparison, and derive the P/E rule from it
- Locate the break-even premium for a given funding mix, and explain what moves it
- Say precisely what EPS accretion does not measure, without dismissing the question
Before this: the-three-statements-as-one-system
There is a rule of thumb every candidate brings to a merger-model question, and interviewers ask for it by name — sometimes with the hint attached: "tell me the rule for whether an acquisition will be accretive or dilutive (hint: P/E ratio)."
The rule: in an all-stock deal with no synergies, the deal is accretive if the target's P/E is lower than the acquirer's. A company at 20x buying one at 15x is accretive. At 20x buying 25x, dilutive.
The rule is true. It is also a special case of something more general, and as usually stated it names the wrong price. Both of those matter, because the follow-up question is always "and what if we paid in cash?" or "and what if we paid a 60% premium?" — at which point the rule of thumb has run out and you need the thing underneath it.
A full worked accretion/dilution walkthrough, including the cash-versus-stock-versus-debt comparison this lesson generalises. Watch it before the model below if you have never built one; watch it after if you have, because the sequence of the arithmetic is what you will be graded on.
The general condition
Buying a company is buying an earnings stream, and paying for it costs something. EPS goes up when
the earnings you bought, per dollar spent, exceed the after-tax cost of the dollars you spent.
That is the whole of it. Both sides are yields, so it is a comparison of two percentages, and each funding source has its own cost:
| Funding | After-tax annual cost per dollar spent |
|---|---|
| New stock | The acquirer's own earnings yield, 1 / P/E — issuing shares dilutes existing earnings across more of them |
| New debt | interest rate × (1 − tax rate) — interest is deductible |
| Balance-sheet cash | foregone interest × (1 − tax rate) — the cash was earning something, and now isn't |
The stock row is where the rule of thumb comes from. If funding is all stock, the cost is the acquirer's earnings yield, so the condition becomes earnings yield bought > acquirer's earnings yield — and inverting both sides, P/E paid < acquirer's P/E.
Running it
// A merger model, and then the thing the merger model is secretly computing.
//
// The famous rule of thumb -- "accretive if the acquirer's P/E is higher than
// the target's" -- is not a rule. It is one special case of a comparison
// between two yields, and this cell derives the general form, then finds the
// exact price at which each funding source flips from accretion to dilution.
// Where the closed form and the full model disagree, one of them is wrong; they
// are checked against each other below.
const TAX = 0.25;
const ACQ = { netIncome: 500, shares: 250, price: 40 }; // EPS 2.00, P/E 20.0x
const TGT = { netIncome: 120, shares: 75, price: 20 }; // EPS 1.60, P/E 12.5x on market
const PREMIUM = 0.20; // offer at a 20% premium to the target's market price
const DEBT_RATE = 0.060; // pre-tax coupon on acquisition debt
const CASH_RATE = 0.030; // what the acquirer's balance-sheet cash earns today
const SYNERGY = 0; // pre-tax cost synergies, run-rate
const acqEps = ACQ.netIncome / ACQ.shares;
const acqPe = ACQ.price / acqEps;
const tgtEps = TGT.netIncome / TGT.shares;
const tgtPe = TGT.price / tgtEps;
const offerPrice = TGT.price * (1 + PREMIUM);
const purchase = offerPrice * TGT.shares; // equity purchase price
const offerPe = purchase / TGT.netIncome; // P/E paid, not P/E quoted
/**
* Pro forma EPS for an arbitrary funding mix. Weights are fractions of the
* equity purchase price; they must sum to 1.
*/
function proForma({ stock = 0, debt = 0, cash = 0 }, price = offerPrice, synergy = SYNERGY) {
const consideration = price * TGT.shares;
const newShares = (consideration * stock) / ACQ.price;
const newDebt = consideration * debt;
const cashUsed = consideration * cash;
const netIncome =
ACQ.netIncome +
TGT.netIncome +
synergy * (1 - TAX) - // synergies are pre-tax, so tax them
newDebt * DEBT_RATE * (1 - TAX) - // interest on new debt
cashUsed * CASH_RATE * (1 - TAX); // interest the spent cash no longer earns
const shares = ACQ.shares + newShares;
const eps = netIncome / shares;
return { eps, netIncome, shares, newShares, accretion: eps / acqEps - 1 };
}
/**
* The general condition, in one line. A deal is accretive when the earnings you
* buy, per dollar spent, exceed the after-tax cost of the dollars you spent.
*/
function costOfFunding({ stock = 0, debt = 0, cash = 0 }) {
return (
stock * (1 / acqPe) + // issuing equity costs its earnings yield
debt * DEBT_RATE * (1 - TAX) +
cash * CASH_RATE * (1 - TAX)
);
}
const MIXES = [
["all stock", { stock: 1 }],
["all new debt", { debt: 1 }],
["all balance-sheet cash", { cash: 1 }],
["50 cash / 50 stock", { cash: 0.5, stock: 0.5 }],
["60 debt / 40 stock", { debt: 0.6, stock: 0.4 }],
];
console.log("standalone");
console.log(" acquirer EPS " + acqEps.toFixed(2) + " price " + ACQ.price.toFixed(2) +
" P/E " + acqPe.toFixed(1) + "x earnings yield " +
((1 / acqPe) * 100).toFixed(2) + "%");
console.log(" target EPS " + tgtEps.toFixed(2) + " price " + TGT.price.toFixed(2) +
" P/E " + tgtPe.toFixed(1) + "x");
console.log(" offer " + offerPrice.toFixed(2) + " per share (" +
(PREMIUM * 100).toFixed(0) + "% premium) -> purchase price " +
purchase.toFixed(0) + ", P/E PAID " + offerPe.toFixed(1) + "x");
console.log(" earnings bought per dollar spent: " + TGT.netIncome + " / " + purchase.toFixed(0) +
" = " + ((TGT.netIncome / purchase) * 100).toFixed(2) + "%");
console.log("");
console.log("funding mix new shares pro forma EPS accretion cost of funding predicted");
for (const [name, mix] of MIXES) {
const r = proForma(mix);
const cost = costOfFunding(mix);
const yieldBought = (TGT.netIncome + SYNERGY * (1 - TAX)) / purchase;
console.log(
" " + name.padEnd(24),
r.newShares.toFixed(1).padStart(9),
r.eps.toFixed(4).padStart(15),
((r.accretion >= 0 ? "+" : "") + (r.accretion * 100).toFixed(2) + "%").padStart(11),
((cost * 100).toFixed(2) + "%").padStart(17),
(yieldBought > cost ? "accretive" : "dilutive").padStart(11)
);
}
console.log("");
console.log("The last two columns never disagree with the third, and that is the");
console.log("whole point: EPS accretion is a comparison between the earnings yield");
console.log("you bought (" + ((TGT.netIncome / purchase) * 100).toFixed(2) +
"%) and the after-tax cost of what you spent.");
console.log("");
// ── Where the rule of thumb comes from, and the word it gets wrong ─────────
console.log("the P/E rule of thumb, and the price it is measured at");
console.log(" All-stock funding costs the acquirer's earnings yield, 1/" +
acqPe.toFixed(1) + " = " + ((1 / acqPe) * 100).toFixed(2) + "%.");
console.log(" So all-stock is accretive exactly when P/E PAID < acquirer P/E.");
console.log(" Here: paid " + offerPe.toFixed(1) + "x < " + acqPe.toFixed(1) +
"x, so accretive -- with " + ((acqPe / offerPe - 1) * 100).toFixed(0) +
"% of headroom left in the premium.");
console.log("");
/** Bisect for the offer price at which a mix goes exactly EPS-neutral. */
function breakEvenPrice(mix, synergy = SYNERGY) {
let lo = TGT.price, hi = TGT.price * 20;
for (let i = 0; i < 200; i++) {
const mid = (lo + hi) / 2;
if (proForma(mix, mid, synergy).accretion > 0) lo = mid; else hi = mid;
}
return (lo + hi) / 2;
}
console.log("break-even offer price, i.e. the premium at which accretion runs out");
console.log(" funding mix price premium P/E paid closed form");
for (const [name, mix] of MIXES) {
const p = breakEvenPrice(mix);
const paid = (p * TGT.shares) / TGT.netIncome;
// Closed form: yield bought = cost of funding -> purchase = NI / cost.
const closed = TGT.netIncome / costOfFunding(mix) / TGT.shares;
console.log(
" " + name.padEnd(24),
p.toFixed(2).padStart(8),
((p / TGT.price - 1) * 100).toFixed(0).padStart(7) + "%",
paid.toFixed(1).padStart(10) + "x",
closed.toFixed(2).padStart(11) + (Math.abs(closed - p) < 0.01 ? " ok" : " MISMATCH")
);
}
console.log("");
console.log("Read the all-stock row: it goes neutral at a P/E paid of exactly " +
acqPe.toFixed(1) + "x,");
console.log("the acquirer's own multiple. That is the rule of thumb falling out of");
console.log("the algebra -- and note it is the multiple PAID, not the target's");
console.log("quoted " + tgtPe.toFixed(1) + "x. A candidate who compares against the quoted");
console.log("multiple has no way to tell you where the line is at all.");
console.log("");
// ── Synergies move the line, and so does the funding you happen to own ─────
console.log("with pre-tax run-rate synergies, break-even premium moves:");
console.log(" synergies all stock all debt all cash");
for (const syn of [0, 20, 40, 60]) {
const cells = [{ stock: 1 }, { debt: 1 }, { cash: 1 }].map((m) => {
const p = breakEvenPrice(m, syn);
return (((p / TGT.price - 1) * 100).toFixed(0) + "%").padStart(11);
});
console.log(" " + (syn + " ").padStart(9) + " " + cells.join(" "));
}
console.log("");
console.log("Two things to notice, and they point in opposite directions.");
console.log("");
const cashBe = breakEvenPrice({ cash: 1 });
const stockBe = breakEvenPrice({ stock: 1 });
console.log("1. Cash tolerates a " + ((cashBe / TGT.price - 1) * 100).toFixed(0) +
"% premium versus stock's " + ((stockBe / TGT.price - 1) * 100).toFixed(0) + "%.");
console.log(" Cash looks best precisely BECAUSE it earns the least (" +
(CASH_RATE * 100).toFixed(1) + "% pre-tax). You");
console.log(" are being scored for spending your cheapest money, which is not the");
console.log(" same as buying the asset at a sensible price.");
const synBe = breakEvenPrice({ stock: 1 }, 20);
console.log("2. Synergies raise the tolerable premium fast: 20 of pre-tax savings");
console.log(" moves the all-stock line from " + ((stockBe / TGT.price - 1) * 100).toFixed(0) +
"% to " + ((synBe / TGT.price - 1) * 100).toFixed(0) + "%. And synergies are the");
console.log(" least verifiable number in the model, so any deal can be made");
console.log(" accretive on a slide by finding one more round of them.");
console.log("");
console.log("Which is why \"is it accretive?\" is a screening question, not a verdict.");
console.log("EPS is an accounting output: it ignores the cash spent, the risk added,");
console.log("and whether the price paid was below what the business is worth. A deal");
console.log("can be accretive and still destroy value, and the way to say so in a");
console.log("room is to give the accretion number first and then the reason it is");
console.log("not sufficient.");
# A merger model, and then the thing the merger model is secretly computing.
#
# The famous rule of thumb -- "accretive if the acquirer's P/E is higher than
# the target's" -- is not a rule. It is one special case of a comparison
# between two yields, and this cell derives the general form, then finds the
# exact price at which each funding source flips from accretion to dilution.
# Where the closed form and the full model disagree, one of them is wrong; they
# are checked against each other below.
TAX = 0.25
ACQ = {"net_income": 500, "shares": 250, "price": 40} # EPS 2.00, P/E 20.0x
TGT = {"net_income": 120, "shares": 75, "price": 20} # EPS 1.60, P/E 12.5x on market
PREMIUM = 0.20 # offer at a 20% premium to the target's market price
DEBT_RATE = 0.060 # pre-tax coupon on acquisition debt
CASH_RATE = 0.030 # what the acquirer's balance-sheet cash earns today
SYNERGY = 0 # pre-tax cost synergies, run-rate
acq_eps = ACQ["net_income"] / ACQ["shares"]
acq_pe = ACQ["price"] / acq_eps
tgt_eps = TGT["net_income"] / TGT["shares"]
tgt_pe = TGT["price"] / tgt_eps
offer_price = TGT["price"] * (1 + PREMIUM)
purchase = offer_price * TGT["shares"] # equity purchase price
offer_pe = purchase / TGT["net_income"] # P/E paid, not P/E quoted
def pro_forma(mix, price=None, synergy=SYNERGY):
"""Pro forma EPS for an arbitrary funding mix. Weights are fractions of the
equity purchase price; they must sum to 1. JavaScript destructures the mix
with defaults in the signature; Python reads it with `dict.get`, which says
the same thing one line down."""
if price is None:
price = offer_price
stock, debt, cash = mix.get("stock", 0), mix.get("debt", 0), mix.get("cash", 0)
consideration = price * TGT["shares"]
new_shares = (consideration * stock) / ACQ["price"]
new_debt = consideration * debt
cash_used = consideration * cash
net_income = (
ACQ["net_income"]
+ TGT["net_income"]
+ synergy * (1 - TAX) # synergies are pre-tax, so tax them
- new_debt * DEBT_RATE * (1 - TAX) # interest on new debt
- cash_used * CASH_RATE * (1 - TAX) # interest the spent cash no longer earns
)
shares = ACQ["shares"] + new_shares
eps = net_income / shares
return {"eps": eps, "net_income": net_income, "shares": shares,
"new_shares": new_shares, "accretion": eps / acq_eps - 1}
def cost_of_funding(mix):
"""The general condition, in one line. A deal is accretive when the earnings
you buy, per dollar spent, exceed the after-tax cost of the dollars you spent."""
return (
mix.get("stock", 0) * (1 / acq_pe) # issuing equity costs its earnings yield
+ mix.get("debt", 0) * DEBT_RATE * (1 - TAX)
+ mix.get("cash", 0) * CASH_RATE * (1 - TAX)
)
MIXES = [
("all stock", {"stock": 1}),
("all new debt", {"debt": 1}),
("all balance-sheet cash", {"cash": 1}),
("50 cash / 50 stock", {"cash": 0.5, "stock": 0.5}),
("60 debt / 40 stock", {"debt": 0.6, "stock": 0.4}),
]
print("standalone")
print(" acquirer EPS " + f"{acq_eps:.2f}" + " price " + f"{ACQ['price']:.2f}" +
" P/E " + f"{acq_pe:.1f}" + "x earnings yield " +
f"{(1 / acq_pe) * 100:.2f}" + "%")
print(" target EPS " + f"{tgt_eps:.2f}" + " price " + f"{TGT['price']:.2f}" +
" P/E " + f"{tgt_pe:.1f}" + "x")
print(" offer " + f"{offer_price:.2f}" + " per share (" +
f"{PREMIUM * 100:.0f}" + "% premium) -> purchase price " +
f"{purchase:.0f}" + ", P/E PAID " + f"{offer_pe:.1f}" + "x")
print(" earnings bought per dollar spent: " + str(TGT["net_income"]) + " / " + f"{purchase:.0f}" +
" = " + f"{(TGT['net_income'] / purchase) * 100:.2f}" + "%")
print("")
print("funding mix new shares pro forma EPS accretion cost of funding predicted")
for name, mix in MIXES:
r = pro_forma(mix)
cost = cost_of_funding(mix)
yield_bought = (TGT["net_income"] + SYNERGY * (1 - TAX)) / purchase
print(
" " + name.ljust(24),
f"{r['new_shares']:.1f}".rjust(9),
f"{r['eps']:.4f}".rjust(15),
(("+" if r["accretion"] >= 0 else "") + f"{r['accretion'] * 100:.2f}" + "%").rjust(11),
(f"{cost * 100:.2f}" + "%").rjust(17),
("accretive" if yield_bought > cost else "dilutive").rjust(11),
)
print("")
print("The last two columns never disagree with the third, and that is the")
print("whole point: EPS accretion is a comparison between the earnings yield")
print("you bought (" + f"{(TGT['net_income'] / purchase) * 100:.2f}" +
"%) and the after-tax cost of what you spent.")
print("")
# -- Where the rule of thumb comes from, and the word it gets wrong ---------
print("the P/E rule of thumb, and the price it is measured at")
print(" All-stock funding costs the acquirer's earnings yield, 1/" +
f"{acq_pe:.1f}" + " = " + f"{(1 / acq_pe) * 100:.2f}" + "%.")
print(" So all-stock is accretive exactly when P/E PAID < acquirer P/E.")
print(" Here: paid " + f"{offer_pe:.1f}" + "x < " + f"{acq_pe:.1f}" +
"x, so accretive -- with " + f"{(acq_pe / offer_pe - 1) * 100:.0f}" +
"% of headroom left in the premium.")
print("")
def break_even_price(mix, synergy=SYNERGY):
"""Bisect for the offer price at which a mix goes exactly EPS-neutral."""
lo, hi = TGT["price"], TGT["price"] * 20
for _ in range(200):
mid = (lo + hi) / 2
if pro_forma(mix, mid, synergy)["accretion"] > 0:
lo = mid
else:
hi = mid
return (lo + hi) / 2
print("break-even offer price, i.e. the premium at which accretion runs out")
print(" funding mix price premium P/E paid closed form")
for name, mix in MIXES:
p = break_even_price(mix)
paid = (p * TGT["shares"]) / TGT["net_income"]
# Closed form: yield bought = cost of funding -> purchase = NI / cost.
closed = TGT["net_income"] / cost_of_funding(mix) / TGT["shares"]
print(
" " + name.ljust(24),
f"{p:.2f}".rjust(8),
f"{(p / TGT['price'] - 1) * 100:.0f}".rjust(7) + "%",
f"{paid:.1f}".rjust(10) + "x",
f"{closed:.2f}".rjust(11) + (" ok" if abs(closed - p) < 0.01 else " MISMATCH"),
)
print("")
print("Read the all-stock row: it goes neutral at a P/E paid of exactly " +
f"{acq_pe:.1f}" + "x,")
print("the acquirer's own multiple. That is the rule of thumb falling out of")
print("the algebra -- and note it is the multiple PAID, not the target's")
print("quoted " + f"{tgt_pe:.1f}" + "x. A candidate who compares against the quoted")
print("multiple has no way to tell you where the line is at all.")
print("")
# -- Synergies move the line, and so does the funding you happen to own -----
print("with pre-tax run-rate synergies, break-even premium moves:")
print(" synergies all stock all debt all cash")
for syn in [0, 20, 40, 60]:
cells = []
for m in [{"stock": 1}, {"debt": 1}, {"cash": 1}]:
p = break_even_price(m, syn)
cells.append((f"{(p / TGT['price'] - 1) * 100:.0f}" + "%").rjust(11))
print(" " + f"{syn} ".rjust(9) + " " + " ".join(cells))
print("")
print("Two things to notice, and they point in opposite directions.")
print("")
cash_be = break_even_price({"cash": 1})
stock_be = break_even_price({"stock": 1})
print("1. Cash tolerates a " + f"{(cash_be / TGT['price'] - 1) * 100:.0f}" +
"% premium versus stock's " + f"{(stock_be / TGT['price'] - 1) * 100:.0f}" + "%.")
print(" Cash looks best precisely BECAUSE it earns the least (" +
f"{CASH_RATE * 100:.1f}" + "% pre-tax). You")
print(" are being scored for spending your cheapest money, which is not the")
print(" same as buying the asset at a sensible price.")
syn_be = break_even_price({"stock": 1}, 20)
print("2. Synergies raise the tolerable premium fast: 20 of pre-tax savings")
print(" moves the all-stock line from " + f"{(stock_be / TGT['price'] - 1) * 100:.0f}" +
"% to " + f"{(syn_be / TGT['price'] - 1) * 100:.0f}" + "%. And synergies are the")
print(" least verifiable number in the model, so any deal can be made")
print(" accretive on a slide by finding one more round of them.")
print("")
print('Which is why "is it accretive?" is a screening question, not a verdict.')
print("EPS is an accounting output: it ignores the cash spent, the risk added,")
print("and whether the price paid was below what the business is worth. A deal")
print("can be accretive and still destroy value, and the way to say so in a")
print("room is to give the accretion number first and then the reason it is")
print("not sufficient.")
standalone
acquirer EPS 2.00 price 40.00 P/E 20.0x earnings yield 5.00%
target EPS 1.60 price 20.00 P/E 12.5x
offer 24.00 per share (20% premium) -> purchase price 1800, P/E PAID 15.0x
earnings bought per dollar spent: 120 / 1800 = 6.67%
funding mix new shares pro forma EPS accretion cost of funding predicted
all stock 45.0 2.1017 +5.08% 5.00% accretive
all new debt 0.0 2.1560 +7.80% 4.50% accretive
all balance-sheet cash 0.0 2.3180 +15.90% 2.25% accretive
50 cash / 50 stock 22.5 2.2009 +10.05% 3.63% accretive
60 debt / 40 stock 18.0 2.1321 +6.60% 4.70% accretive
The last two columns never disagree with the third, and that is the
whole point: EPS accretion is a comparison between the earnings yield
you bought (6.67%) and the after-tax cost of what you spent.
the P/E rule of thumb, and the price it is measured at
All-stock funding costs the acquirer's earnings yield, 1/20.0 = 5.00%.
So all-stock is accretive exactly when P/E PAID < acquirer P/E.
Here: paid 15.0x < 20.0x, so accretive -- with 33% of headroom left in the premium.
break-even offer price, i.e. the premium at which accretion runs out
funding mix price premium P/E paid closed form
all stock 32.00 60% 20.0x 32.00 ok
all new debt 35.56 78% 22.2x 35.56 ok
all balance-sheet cash 71.11 256% 44.4x 71.11 ok
50 cash / 50 stock 44.14 121% 27.6x 44.14 ok
60 debt / 40 stock 34.04 70% 21.3x 34.04 ok
Read the all-stock row: it goes neutral at a P/E paid of exactly 20.0x,
the acquirer's own multiple. That is the rule of thumb falling out of
the algebra -- and note it is the multiple PAID, not the target's
quoted 12.5x. A candidate who compares against the quoted
multiple has no way to tell you where the line is at all.
with pre-tax run-rate synergies, break-even premium moves:
synergies all stock all debt all cash
0 60% 78% 256%
20 80% 100% 300%
40 100% 122% 344%
60 120% 144% 389%
Two things to notice, and they point in opposite directions.
1. Cash tolerates a 256% premium versus stock's 60%.
Cash looks best precisely BECAUSE it earns the least (3.0% pre-tax). You
are being scored for spending your cheapest money, which is not the
same as buying the asset at a sensible price.
2. Synergies raise the tolerable premium fast: 20 of pre-tax savings
moves the all-stock line from 60% to 80%. And synergies are the
least verifiable number in the model, so any deal can be made
accretive on a slide by finding one more round of them.
Which is why "is it accretive?" is a screening question, not a verdict.
EPS is an accounting output: it ignores the cash spent, the risk added,
and whether the price paid was below what the business is worth. A deal
can be accretive and still destroy value, and the way to say so in a
room is to give the accretion number first and then the reason it is
not sufficient.
Reading the output
The last two columns never disagree with the third. Every row's accretion sign matches the prediction from the yield comparison, and it does so for mixes as well as pure funding. That agreement is the evidence that the full pro-forma model and the one-line condition are the same statement. You can now answer "what if it were 60% debt and 40% stock?" in your head — blend the costs, 4.70%, compare to the 6.67% you bought, accretive — without building anything.
The rule of thumb falls out of the algebra. The all-stock break-even lands at a paid multiple of exactly 20.0x, the acquirer's own. That is not a coincidence to be memorised; it is what the condition reduces to when the funding cost is the acquirer's earnings yield.
And it happens at a 60% premium, not a 20% one. The target trades at 12.5x. The deal is accretive all the way up to a paid multiple of 20x — a 60% premium, three times the offer on the table. If you had applied the rule of thumb to the quoted 12.5x you would have had no way to know where that line was. This is the practical payoff of the correction: the rule tells you the sign, the general condition tells you the distance to the edge.
The two things that move the line, and why only one is honest
Funding cost. All-cash tolerates a 256% premium before it turns dilutive, versus 60% for all-stock. That is a spectacular-looking result and it is almost entirely an artefact: cash looks best because it earns the least. At 3% pre-tax, sitting cash is the cheapest funding on the balance sheet, so spending it barely dents net income. The model is rewarding you for using your cheapest money — a statement about your balance sheet, not about whether the price was right.
Synergies. Twenty of pre-tax cost savings moves the all-stock break-even premium from 60% to 80%. Forty moves it to 100%. Cost synergies in real deals commonly run 5%–15% of the target's cost base, and revenue synergies are conventionally haircut hard because they depend on customers behaving as predicted. Which means: any deal can be made accretive on a slide by finding one more round of synergies, and the synergy number is the least verifiable input in the model.
What accretion does not measure
The rule of thumb also breaks in ways worth naming explicitly. It holds only for all-stock deals with no synergies; introduce debt financing, cash, transaction costs or synergies and it stops being a reliable predictor — which is exactly why the general condition is the thing to carry.
More fundamentally, EPS accretion is an accounting output, and it is silent on:
- Cash. An all-cash deal that empties the balance sheet is maximally accretive and may leave the company unable to fund its own capital plan.
- Risk. Levering up to buy something is accretive at today's rates and is a different company afterwards. EPS does not carry a risk adjustment.
- Price. Nothing in the calculation asks whether the business is worth what you paid. That is a DCF question, and the previous lesson is where it gets answered.
- Time. Deals are frequently dilutive in year 1 — from transaction costs, integration spend and synergies that phase in — and accretive by year 3. A single-year answer misses the trajectory that the deal was actually justified on.
The complementary analyses to name if asked what you would look at instead: a DCF on the target standalone and with synergies, the deal IRR, and return on invested capital against the acquirer's cost of capital. Those measure value; accretion measures the accounting.
What to change and re-run
- Set
PREMIUM = 0.60and watch all-stock go exactly EPS-neutral while the other mixes stay accretive. This is the rule of thumb at its boundary, and seeing it land on zero is more convincing than being told it does. - Set
CASH_RATE = 0.05— a higher-rate environment. Cash's advantage over debt narrows sharply, because the interest you give up rises. The ranking of funding sources is not a fact about funding sources; it is a fact about the rate environment. - Set
DEBT_RATE = 0.09and re-check the debt row. Above the target's earnings yield on the price paid, debt-funded acquisition turns dilutive on its own, no premium required.
The rest of this track goes to the models these two lessons set up: the LBO, where the same funding arithmetic determines a return rather than an EPS; comparable companies and precedent transactions, where the multiples used as cross-checks here come from; and the stock pitch, where you have to produce a view rather than defend one.