Interactive exploration of how hazard rates determine cumulative default probability and the link between the two, including the common cumulative vs. conditional pitfall
The hazard rate (or default intensity) \(\lambda(t)\) is the instantaneous conditional probability of default given survival up to time \(t\)(Hull 2023, chap. 17; Christoffersen 2012, chap. 12):
\[
\Pr(t < \tau \leq t + \Delta t \mid \tau > t) \;\approx\; \lambda(t)\,\Delta t
\]
Let \(V(t) = \Pr(\tau > t)\) denote the survival probability to time \(t\) and \(Q(t) = 1 - V(t)\) the cumulative default probability. Taking \(\Delta t \to 0\) gives \(dV/dt = -\lambda(t) V(t)\), which integrates to:
Cumulative vs. conditional. The unconditional default probability during year \(k\) is \(Q(k) - Q(k-1)\). The conditional probability of defaulting in year \(k\) given survival to year \(k-1\) is \([Q(k)-Q(k-1)]/[1-Q(k-1)]\). Dividing the cumulative figure \(Q(k)\) by the survival probability is a common error.
fmt = (x, d) => x ===undefined||isNaN(x) ?"N/A": x.toFixed(d)
pctFmt = (x, d =2) => (x *100).toFixed(d) +"%"
Two views of the same object
The hazard rate \(\bar\lambda\) and the cumulative default probability \(Q(T)\) over a horizon \(T\) are two ways of describing the same survival process. Move either slider to see how they are tied.
Tip
How to experiment
Start with a flat \(\bar\lambda\) in “Specify hazard rate” mode and watch \(Q(T)\) climb. Switch to “Specify Q(T)” mode, move \(Q(10)\) to 28.3% (CCC/C 1-year rate), and notice that as \(T\) varies the implied \(\bar\lambda\) stays high even if you are reading off a 10-year window. Then switch to the two-piece mode and introduce an elevated early hazard followed by a lower mature-firm hazard — the shape of \(Q(t)\) that emerges matches the speculative-grade pattern Hull describes.
html`<p style="color:#666;font-size:0.85rem;">Cumulative default probability <span style="color:#d62728;font-weight:700;">Q(t)</span> and survival probability <span style="color:#2f71d5;font-weight:700;">V(t) = 1 − Q(t)</span>. The dashed rule marks the horizon T. At T, Q(${hrT}) = ${pctFmt(hrBuild.QatT,2)} and the implied average hazard rate is λ̄ = ${pctFmt(hrBuild.lamAvg,3)} per year.</p>`
html`<p style="color:#666;font-size:0.85rem;">The instantaneous hazard rate profile. In the two-piece mode, a drop at t* generates the downward-sloping cumulative hazard that characterises speculative-grade bonds that survive the critical early period.</p>`
{const rows = hrConditionalconst rowHtml = rows.map(r =>`<tr><td>${r.year}</td><td>${pctFmt(r.Qk,3)}</td><td>${pctFmt(r.inc,3)}</td><td>${pctFmt(1- r.Qprev,3)}</td><td style="color:#e67e22;font-weight:700;">${pctFmt(r.cond,3)}</td></tr>` ).join("")returnhtml`<table class="table" style="width:100%;"><thead><tr> <th>Year k</th> <th>Q(k)</th> <th>Q(k) − Q(k−1)</th> <th>V(k−1)</th> <th>Conditional λ<sub>k</sub></th></tr></thead><tbody>${rowHtml}</tbody></table><p style="color:#666;font-size:0.85rem;">The conditional probability of defaulting in year k equals the incremental default probability divided by the survival probability at the start of year k. For a flat hazard, this conditional probability is constant across years.</p>`}
{const r = hrBuildreturnhtml`<div style="margin-top:10px;padding:12px 16px;border-radius:8px;background:#f5f7fa;"><strong>Summary at T = ${hrT} years</strong><br/>Q(T) = <span style="color:#d62728;font-weight:700;">${pctFmt(r.QatT,3)}</span>,V(T) = <span style="color:#2f71d5;font-weight:700;">${pctFmt(r.VatT,3)}</span>,average hazard λ̄ = <span style="color:#2e7d32;font-weight:700;">${pctFmt(r.lamAvg,3)}</span> per year.</div>`}
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.