Solve the two-equation Merton system numerically from observable equity value and equity volatility to recover asset value, asset volatility, distance to default and risk-neutral PD
For a publicly traded firm the asset value \(V_0\) and asset volatility \(\sigma_V\) are not directly observable, but the equity value \(E_0\) and equity return volatility \(\sigma_E\) usually are. Merton’s model provides two equations linking the four quantities (Christoffersen 2012, chap. 12; Hull 2023, chap. 17):
where \(d_1 = [\ln(V_0/D) + (r + \sigma_V^2/2)T] / (\sigma_V\sqrt{T})\) and \(d_2 = d_1 - \sigma_V\sqrt{T}\). The second equation follows from Itô’s lemma applied to \(E(V, t)\) and captures the fact that equity is a leveraged claim on assets.
The system is nonlinear but well behaved. Any root-finding routine works — we solve it in the browser with a damped Newton iteration so that the results update as you move the sliders.
normalCDF = x => {const a1 =0.254829592, a2 =-0.284496736, a3 =1.421413741const a4 =-1.453152027, a5 =1.061405429, p =0.3275911const sign = x <0?-1:1const z =Math.abs(x) /Math.sqrt(2)const t =1.0/ (1.0+ p * z)const y =1- (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t *Math.exp(-z * z)return0.5* (1+ sign * y)}
fmt = (x, d) => x ===undefined||isNaN(x) ?"N/A": x.toFixed(d)
Pick a firm with a known capital structure. Equity volatility above 60% with moderate leverage usually implies an asset volatility well below it — equity amplifies asset moves by roughly \(V_0 / E_0\). Crank \(\sigma_E\) up to 100% and watch the implied PD rise sharply. Reduce \(E_0\) toward zero to enter the “near-bankruptcy” region: leverage explodes, \(V_0 \to D\,e^{-rT}\) from above, and \(\sigma_V/\sigma_E \to 0\) (a very leveraged equity claim gets a lot of volatility from a small amount of asset volatility). Conversely, raise \(E_0\) well above \(D\): leverage falls toward 1, \(\Phi(d_1) \to 1\), and \(\sigma_V/\sigma_E \to 1\) — the unlevered limit.
How the equity-to-asset volatility ratio moves with leverage
miRatio = {// Sweep leverage = V0/E0 with other params fixed. Leverage is highly nonlinear// in E0 (small E0 → huge leverage), so we space E0 geometrically to get// uniform coverage along the leverage axis.const rows = []const D = miD, T = miT, r = miR, sE = miSigmaEconst E0_min =Math.max(0.02, miE0 /50)const E0_max =Math.max(miE0 *5, D *2)const N =120const logLo =Math.log(E0_min), logHi =Math.log(E0_max)for (let i =0; i < N; i++) {const e =Math.exp(logLo + (logHi - logLo) * i / (N -1))const s =mertonSolve(e, sE, D, T, r)if (s.converged) { rows.push({E0: e,leverage: s.V0/ e,sigmaV: s.sigmaV,ratio: s.sigmaV/ sE,PD: s.PD }) } }return rows.sort((a, b) => a.leverage- b.leverage)}
html`<p style="color:#666;font-size:0.85rem;">The ratio σ_V / σ_E shrinks with leverage because equity amplifies asset moves. A highly leveraged firm with 50% equity volatility can have asset volatility in the teens. PD rises sharply as leverage rises — the Merton model's central message.</p>`
Note
A sanity check. Christoffersen’s worked example takes \(E_0 = 3\), \(\sigma_E = 0.80\), \(D = 10\), \(T = 1\), \(r = 0.05\) and finds \(V_0 \approx 12.40\), \(\sigma_V \approx 0.2123\), PD \(\approx 12.7\%\). Plug those inputs into the sliders to verify the solver reproduces that result.
References
Christoffersen, Peter F. 2012. Elements of Financial Risk Management. 2nd ed. Academic Press.
Hull, John. 2023. Risk Management and Financial Institutions. 6th ed. John Wiley & Sons.