1. Modigliani-Miller Proposition I & II (Without Taxes)
In frictionless capital markets without corporate taxes or bankruptcy costs:
- MM Proposition I (Irrelevance): Firm value is determined solely by real cash flows, independent of capital structure ($V_L = V_U$).
- MM Proposition II (Cost of Equity Leverage): Cost of equity $r_E$ scales linearly with debt-to-equity ratio $\frac{D}{E}$:
Where $r_0$ is the unlevered cost of capital and $r_D$ is the cost of debt.
2. Trade-Off Theory: Corporate Taxes & Financial Distress
Introducing corporate tax rate $t_C$ creates interest tax shields ($V_L = V_U + t_C D$). However, excessive debt increases expected bankruptcy distress costs $PV(\text{Distress})$. The static Trade-Off Optimal Capital Structure balances:
$$V_L = V_U + t_C D - PV(\text{Financial Distress Costs})$$3. Python MM Levered Cost of Equity Simulator
import numpy as np
def compute_mm_levered_wacc(r0=0.10, rD=0.05, tax=0.25, debt_ratios=[0.0, 0.2, 0.4, 0.6]):
"""
Simulate levered cost of equity rE and WACC under MM Proposition II with corporate tax.
"""
results = []
for d_over_v in debt_ratios:
e_over_v = 1.0 - d_over_v
d_over_e = d_over_v / e_over_v if e_over_v > 0 else np.inf
# Levered cost of equity with tax shield
rE = r0 + (d_over_e * (1.0 - tax) * (r0 - rD))
wacc = (e_over_v * rE) + (d_over_v * rD * (1.0 - tax))
results.append((int(d_over_v*100), round(rE*100, 2), round(wacc*100, 2)))
return results
if __name__ == "__main__":
schedule = compute_mm_levered_wacc()
print("Debt % | Levered Cost of Equity rE (%) | WACC (%)")
for row in schedule:
print(f" {row[0]:3d}% | {row[1]:5.2f}% | {row[2]:5.2f}%")