Credit Risk Modeling Approaches › Reduced-Form Models: Intensity-Based Approach
Quantitative FinanceAll chapters Credit Risk Modeling Approaches › Reduced-Form Models: Intensity-Based ApproachOne section · Sections in this chapter3 / 6 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Reduced-form models take a fundamentally different approach from structural models. Rather than deriving default from balance sheet dynamics and capital structure, they model default as a random event governed by a hazard rate (or default intensity). Default occurs exogenously, without explicit modeling of economic mechanisms. Instead of asking why the firm defaults, reduced-form models focus on when: estimating the instantaneous default probability at any moment given that the firm has survived to that time.
This approach offers several practical advantages. First, it's easier to calibrate to market prices since the hazard rate connects directly to observable credit spreads. Second, the framework handles multiple credit events naturally (including rating downgrades and restructurings), not just binary default. Third, it doesn't require unobservable asset values, making implementation more straightforward.
The Hazard Rate Framework
The mathematical foundation of reduced-form models rests on the concept of a hazard rate, which originates from survival analysis in statistics and actuarial science. The default time is the first time a default-triggering event occurs. The survival probability to time is the likelihood that the obligor remains solvent through time :
where:
- : probability of surviving (not defaulting) until time
- : random default time
- : probability that default occurs after time
The survival probability function captures the declining likelihood of remaining solvent as time progresses. It starts at (the firm is solvent today) and decreases toward zero as the time horizon extends (eventually all firms default or cease to exist). The rate at which this probability declines at any moment is governed by the hazard rate.
The hazard rate (or default intensity) represents the instantaneous probability of default given survival to time :
where:
- : hazard rate (default intensity) at time
- : random default time
- : current time
- : small time increment
- : conditional probability of defaulting in the interval , given survival to time
- The limit as gives the instantaneous default rate
The hazard rate is the conditional rate of default for a firm that has survived until time .
The hazard rate has an intuitive interpretation as the instantaneous default probability per unit time: if the hazard rate is 5% per year, it means that at any moment, a firm that has survived faces approximately a 5% chance of defaulting over the next year. This probability is conditional on survival: it applies only to firms that haven't already defaulted.
The survival probability relates to the hazard rate through the exponential of the cumulative hazard. To see why, note that the survival probability must satisfy because the rate of decrease in survival probability equals the hazard rate times the probability of having survived so far. This differential equation simply states that the rate at which firms leave the surviving population equals the hazard rate times the population size. Solving this differential equation with initial condition gives:
where:
- : survival probability to time
- : hazard rate (default intensity) at time
- : integration variable representing time from 0 to
- : cumulative hazard, the total default risk accumulated from time 0 to
- : exponential function
- The exponential function converts cumulative hazard to survival probability through the relationship
- This relationship follows from solving the differential equation with initial condition
The integral represents the cumulative hazard, capturing the total default risk accumulated from time 0 to time . The exponential transformation converts this accumulated risk into a survival probability. Higher cumulative hazard means lower survival probability, with the exponential ensuring the probability remains between 0 and 1.
For a constant hazard rate , this simplifies to:
where the integral becomes simply , giving exponential decay in survival probability. This exponential decay is the hallmark of the constant hazard model: the survival probability decreases at a rate proportional to itself.
The cumulative default probability is:
where:
- : probability of defaulting by time
- : random default time
- : survival probability with constant hazard
- : complement gives cumulative default probability
Connection to Poisson Processes
The constant hazard rate model implies default arrives as a Poisson process with intensity . This connection provides deep insight into reduced-form model mechanics. The Poisson process describes events that occur randomly over time with a constant average rate, and the exponential distribution characterizes the waiting time until the first such event.
The key property of the Poisson process is the memoryless property. Given that a firm has survived to time , the probability distribution of remaining time to default is the same as if we started fresh at time zero. This may seem counterintuitive (shouldn't older firms be closer to default?), but it captures the idea that conditional on survival, the firm faces the same ongoing default intensity. The waiting time until default follows an exponential distribution with mean , so a firm with a 2% annual hazard rate has an expected time to default of 50 years, though actual default could occur much sooner or later due to the high variance of exponential distributions.
import numpy as np
class ReducedFormModel:
"""
Reduced-form credit risk model with hazard rates.
"""
def __init__(self, hazard_rates, times):
"""
Parameters
----------
hazard_rates : array-like
Hazard rates for each time period
times : array-like
Time points (in years)
"""
self.hazard_rates = np.array(hazard_rates)
self.times = np.array(times)
def survival_probability(self, t):
"""Survival probability to time t."""
if t <= 0:
return 1.0
# Integrate hazard rate using piecewise constant
integral = 0
prev_t = 0
for period_end, hazard_rate in zip(self.times, self.hazard_rates):
interval_end = min(t, period_end)
integral += hazard_rate * max(interval_end - prev_t, 0)
if t <= period_end:
break
prev_t = period_end
if t > self.times[-1]:
integral += self.hazard_rates[-1] * (t - self.times[-1])
return np.exp(-integral)
def default_probability(self, t):
"""Cumulative default probability to time t."""
return 1 - self.survival_probability(t)
def marginal_default_probability(self, t1, t2):
"""Probability of default between t1 and t2."""
return self.survival_probability(t1) - self.survival_probability(t2)

The survival probability declines from 100% to 70.8% over 10 years, while cumulative default probability rises from 0% to 29.2%. The upward-sloping hazard-rate term structure, starting at 2% annually and rising to 4%, reflects the common empirical pattern that credit uncertainty increases with maturity. The continuous curves change slope at years 1, 2, 3, and 5 as the piecewise-constant hazard rate steps upward.
Calibrating to CDS Spreads
The primary advantage of reduced-form models is their ability to be calibrated directly to market data. As we discussed in Part II Chapter 13 on credit default swaps, CDS spreads reflect the market's assessment of default risk. The CDS market provides a direct window into market-implied default probabilities, making reduced-form models highly practical for trading and risk management applications.
For a CDS with spread and recovery rate , no-arbitrage pricing requires that the present value of premium payments (premium leg) equals the present value of protection payments (protection leg). This equilibrium condition reflects the fact that a fairly priced CDS has zero initial value: neither party pays upfront because the expected benefits equal the expected costs. This equilibrium allows us to back out the implied hazard rate from observable CDS spreads.
The premium leg represents the periodic payments made by the protection buyer.
where:
- : CDS spread (annualized premium rate paid by protection buyer)
- : number of premium payment periods
- : index for payment periods, running from 1 to
- : length of payment period in years
- : time of the -th payment
- : survival probability to time (premium only paid if no default has occurred)
- : discount factor to time , equal to for continuous discounting
- The sum captures expected present value of all premium payments
The summation reflects that premiums are only paid if the reference entity has not defaulted. Each term multiplies the premium rate by the payment period length, the probability of survival to that date, and the appropriate discount factor. The survival probability weighting removes premiums scheduled after default: if default occurs before payment date , that premium is never paid.
where:
- : recovery rate (fraction of notional recovered upon default)
- : loss given default (fraction not recovered)
- : CDS maturity
- : hazard rate (default intensity) at time
- : survival probability to time
- : discount factor for payment at time
- : probability of default occurring in the infinitesimal interval
- The integral sums expected present value of protection payments across all possible default times from 0 to
where is the discount factor to time . The protection leg integral captures the expected payout to the protection buyer. Default can occur at any time between now and maturity, and when it does, the protection seller pays times the notional. The integrand represents the probability density of defaulting at exactly time : the hazard rate times the probability of having survived to that point.
For a flat hazard rate , we can derive an approximate relationship between CDS spread and hazard rate. Under the assumptions that discount rates are small and survival probabilities do not vary too much over the CDS tenor.
Similarly, the protection leg becomes:
Setting these equal (no-arbitrage condition):
Canceling from both sides gives:
where:
- : CDS spread (annualized premium rate)
- : constant hazard rate (default intensity per year)
- : recovery rate
- : loss given default (LGD)
- The approximation holds when discount rates and survival probabilities are relatively stable over the CDS tenor
This relationship shows that CDS spreads compensate for two components of credit risk: the probability of default () and the severity of loss when default occurs (). The approximation becomes increasingly accurate for shorter maturities and lower hazard rates where discounting effects are minimal.
Solving for the hazard rate provides a direct link between observable CDS spreads and default intensity:
where:
- : implied hazard rate (annual default intensity)
- : observed CDS spread
- : assumed recovery rate
- The formula shows that CDS spreads reflect both default risk () and loss severity ()
This inversion provides a direct estimate of market-implied default intensity from a CDS spread under the flat-hazard approximation, making the reduced-form model straightforward to calibrate. The hazard rate interpretation also helps explain why CDS spreads differ across credits: investment-grade companies have low spreads because their hazard rates are low, while distressed companies have high spreads because their default intensities are high.
def hazard_rate_from_cds(cds_spread, recovery_rate=0.4):
"""
Estimate hazard rate from CDS spread.
Parameters
----------
cds_spread : float
CDS spread in decimal (e.g., 0.02 for 200 bps)
recovery_rate : float
Expected recovery rate (default 40%)
Returns
-------
float
Estimated hazard rate
"""
return cds_spread / (1 - recovery_rate)
def cds_spread_from_hazard(hazard_rate, recovery_rate=0.4):
"""Calculate CDS spread from hazard rate."""
return hazard_rate * (1 - recovery_rate)
# Example: Convert CDS spreads to hazard rates
cds_spreads_bps = np.array([50, 100, 200, 500, 1000]) # Basis points
cds_spreads = cds_spreads_bps / 10000 # Convert to decimal
recovery = 0.40
hazard_rates_implied = [hazard_rate_from_cds(s, recovery) for s in cds_spreads]
annual_default_probs = [1 - np.exp(-h) for h in hazard_rates_implied]CDS Spread to Default Probability Mapping (Recovery = 40%)
============================================================
CDS Spread (bps) Hazard Rate (%) 1-Year PD (%) 5-Year Survival (%)
50 0.83 0.83 95.92
100 1.67 1.65 92.00
200 3.33 3.28 84.65
500 8.33 8.00 65.92
1000 16.67 15.35 43.46The table reveals the relationship between CDS spreads and default risk across the credit spectrum. A 200 basis point CDS spread implies a hazard rate of 3.33% and annual default probability of 3.27%, with 5-year survival probability of 84.5%. For investment-grade credits (50-100 bps spreads), the mapping is approximately linear because the exponential function is nearly linear for small arguments. However, for distressed credits with spreads of 1000 bps, the hazard rate reaches 16.67% annually, leading to only 43.35% probability of surviving 5 years. At these high spread levels, the approximation becomes less accurate due to the nonlinear relationship between hazard rates and survival probabilities, and practitioners often use more sophisticated models with term structure effects.

The visualization reveals how recovery rate assumptions affect hazard rate inference. For a given CDS spread, a lower recovery rate implies a lower hazard rate because the expected loss per default is higher. At 500 bps, assuming 30% recovery yields an implied hazard rate of approximately 7.1%, while assuming 50% recovery yields approximately 10%. This sensitivity highlights the importance of accurate recovery rate assumptions when calibrating reduced-form models, as the same CDS spread can imply substantially different default probabilities depending on the assumed recovery.
Stochastic Intensity Models
For more realistic dynamics, the hazard rate itself can be modeled as a stochastic process. Rather than assuming a constant default intensity, we allow it to fluctuate over time in response to changing economic conditions. A firm's credit quality varies with business cycles, competitive pressures, management decisions, and countless other factors. Capturing this time variation requires modeling the hazard rate as a random process.
A common specification is the Cox-Ingersoll-Ross (CIR) process, which ensures the hazard rate remains positive and mean-reverts to a long-term level:
where:
- : hazard rate (default intensity) at time
- : infinitesimal change in the hazard rate over time
- : speed of mean reversion (how quickly returns to its long-term level )
- : long-term mean level of the hazard rate
- : volatility parameter controlling the magnitude of random fluctuations
- : standard Brownian motion driving the random shocks
- : infinitesimal time increment
- : infinitesimal Brownian increment
- : mean reversion term that pulls toward when and pushes it down when
- : square root diffusion term that ensures the hazard rate remains non-negative (volatility scales with the level)
The CIR specification has several desirable properties that make it well-suited for modeling credit risk. The square root diffusion ensures non-negativity: as approaches zero, the volatility shrinks proportionally, making it mathematically impossible for the process to go negative. This is essential since a negative default probability has no economic meaning. The mean reversion term pulls the hazard rate toward its long-term mean , capturing the empirical observation that credit quality tends to revert over economic cycles. When , the drift is positive (credit quality deteriorates toward normal), and when , the drift is negative (credit quality improves from distressed levels). This mean-reverting behavior reflects the idea that extremely good or extremely bad credit conditions are temporary states that tend to normalize over time.
import numpy as np
def simulate_cir_hazard(lambda0, kappa, theta, sigma, T, n_steps, n_paths):
"""
Simulate CIR hazard rate paths.
Parameters
----------
lambda0 : float
Initial hazard rate
kappa : float
Mean reversion speed
theta : float
Long-term mean hazard rate
sigma : float
Volatility of hazard rate
T : float
Time horizon
n_steps : int
Number of time steps
n_paths : int
Number of simulation paths
Returns
-------
times : array
Time grid
paths : array
Simulated hazard rate paths (n_steps+1, n_paths)
"""
dt = T / n_steps
times = np.linspace(0, T, n_steps + 1)
paths = np.zeros((n_steps + 1, n_paths))
paths[0] = lambda0
np.random.seed(42)
for i in range(n_steps):
z = np.random.standard_normal(n_paths)
# Euler discretization with reflection to keep positive
paths[i + 1] = (
paths[i]
+ kappa * (theta - paths[i]) * dt
+ sigma * np.sqrt(np.maximum(paths[i], 0)) * np.sqrt(dt) * z
)
paths[i + 1] = np.maximum(paths[i + 1], 0) # Ensure non-negative
return times, paths
The simulated paths start at 3% hazard rate and exhibit clear mean reversion toward the 5% long-term level specified by theta. Individual paths show substantial volatility, with hazard rates ranging from near 0% to over 12% across scenarios, while the emphasized mean path converges steadily from the initial 3% toward 5% over the 5-year horizon. The mean reversion speed of 0.5 pulls paths back toward the long-term mean at a moderate rate, preventing extreme persistent deviations while allowing meaningful short-term fluctuations. The fan-like spread of paths illustrates the uncertainty inherent in future credit conditions. This stochastic intensity framework forms the basis for pricing credit derivatives with time-varying default risk, capturing the reality that credit spreads and default probabilities evolve randomly over time.