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}$:
$$r_E = r_0 + \frac{D}{E} (r_0 - r_D)$$

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}%")