The crisis thresholds define the boundary between normal and elevated credit risk. When the spread exceeds \(S_c\), we consider the banking sector to be in a “crisis” state for that currency:
USD 95th percentile: ~10.73% — This means historically, the USD spread exceeded 10.73% in only 5% of months. These were concentrated in the early sample period (2013–2015) when lending rates were still elevated.
KHR 95th percentile: ~23.94% — The KHR threshold is much higher at ~24%, reflecting the extreme KHR spreads observed in 2013–2017 before the structural compression.
Key Consideration: Because the KHR threshold is based on full-sample percentiles that include the pre-compression era (when spreads were >20%), it is a very high bar for the post-2018 period when spreads hover at 5–7%. This means KHR crisis probabilities will be very low in the recent period — not because KHR credit risk has disappeared, but because the definition of “crisis” is anchored to historical extremes. The robustness analysis in Notebook 08 tests sensitivity to different threshold choices.
2. Crisis Probability Time Series
Using the OU transition density, the crisis probability at time \(t\) is:
The crisis probability \(P(S_{t+1} > S_c | S_t)\) measures the likelihood that next month’s spread will breach the crisis threshold, given the current spread level and the OU dynamics.
How It Works Intuitively: - When the current spread \(S_t\) is well below the threshold \(S_c\), the conditional mean \(m(t)\) is far below \(S_c\), and the probability of breaching it is low. - When \(S_t\) is near or above\(S_c\), the conditional mean may be near \(S_c\), making the probability of continued crisis high. - The probability depends not just on the current level but also on volatility (σ) and mean reversion speed (κ) — higher σ makes threshold exceedances more likely, while higher κ pulls the spread back more quickly.
Key Observation: Both currencies will show time-varying crisis probabilities that spike during periods of elevated spreads (early sample for both, and any stress events) and fall to near-zero during the post-2018 compressed-spread regime.
# ─── FIGURE 6: Crisis Probability Over Time ──────────────────────────────────fig, ax = plt.subplots(figsize=(14, 6))ax.plot(dates, P_usd, color='#1565C0', linewidth=1.3, label='USD Crisis Probability', alpha=0.9)ax.plot(dates, P_khr, color='#C62828', linewidth=1.3, label='KHR Crisis Probability', alpha=0.9)ax.axvspan(pd.Timestamp('2020-01-01'), pd.Timestamp('2021-12-31'), alpha=0.12, color='grey', label='COVID-19 Period')events = [ ('2020-03-01', 'COVID-19', 0.85), ('2022-03-01', 'Fed Hikes', 0.85), ('2024-09-01', 'Fed Cuts', 0.85),]for date, label, ypos in events: ax.annotate(label, xy=(pd.Timestamp(date), ypos), fontsize=8, ha='center', bbox=dict(boxstyle='round,pad=0.2', facecolor='lightyellow', edgecolor='grey', alpha=0.7))ax.set_xlabel('Date')ax.set_ylabel('Crisis Probability P(S > S_c)')ax.set_title('Figure 6: Crisis Probability Over Time (95th Percentile Threshold)', fontweight='bold', fontsize=13)ax.legend(loc='upper right')ax.grid(True, alpha=0.3)ax.set_ylim(-0.02, 1.02)ax.xaxis.set_major_locator(mdates.YearLocator())ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))plt.xticks(rotation=45)plt.tight_layout()plt.savefig('../figures/fig6_crisis_probability.png', dpi=300, bbox_inches='tight')plt.show()print('Saved: fig6_crisis_probability.png')
Saved: fig6_crisis_probability.png
Interpretation — Figure 6: Crisis Probability Time Series
Figure 6 is the first core output of the CRI framework, showing the conditional probability of crisis at each month:
USD Crisis Probability: - Peaks in 2013–2015 when spreads were near their historical highs (9–11%), reaching probabilities of ~30–50%. This corresponds to the early period when Cambodia’s banking sector was less competitive. - Falls to near-zero after 2017 as spreads compressed below 7%. By 2020–2025, the probability of breaching 10.73% is essentially zero — the USD market is operating in a structurally lower-spread regime.
KHR Crisis Probability: - Shows a more dramatic swing: extremely high probabilities (50–80%) in 2013–2017 when KHR spreads were 15–27%, reflecting the genuine credit risk in the immature riel lending market. - Rapid decline to zero after 2018 as spreads compressed below 8%. The threshold of ~24% became unreachable in the new regime.
Important Caveat: The near-zero crisis probabilities in the recent period do not mean credit risk has vanished — they mean the historical definition of crisis (spreads > 95th percentile of the full sample) is no longer relevant post-compression. This motivates using rolling window crisis thresholds (Notebook 07) and exploring alternative thresholds (Notebook 08).
COVID Period: Neither currency shows a significant crisis probability spike during COVID-19, because the NBC’s loan restructuring program prevented spread widening — an important policy success, but one that may have masked underlying credit deterioration.
The CRI combines two dimensions: structural risk (captured by normalized volatility σ) and conditional risk (captured by crisis probability). Each is weighted equally.
The CRI combines two complementary dimensions of credit risk:
Normalized σ component (50% weight): This captures the structural volatility of each currency’s spread — a time-invariant measure reflecting how inherently unstable the segment is. Since KHR σ (6.18) > USD σ (3.66), the KHR segment has a permanently higher floor in its CRI. This component acts as a structural risk premium for the riel.
Crisis probability component (50% weight): This captures time-varying risk — how close the current spread is to crisis levels. This component drives the CRI to fluctuate with market conditions.
CRI Composition: - For USD: The σ component contributes a fixed ~0.20 at each date. The crisis probability component ranges from ~0 (recently) to ~0.25 (2013–2015). Total CRI ranges from ~0.20 (floor) to ~0.45 (maximum). - For KHR: The σ component contributes a higher fixed ~0.33. The probability component ranges from ~0 (recently) to ~0.40 (2013–2016). Total CRI ranges from ~0.33 (floor) to ~0.73 (maximum).
Key Insight: Even when crisis probabilities are zero in the recent period, the KHR CRI remains above the USD CRI because of its higher structural volatility — the riel segment carries an irreducible risk premium embedded in the σ parameter.
Interpretation — Figure 7: Currency-Specific CRI Time Series
Figure 7 is the central figure of the paper — the Credit Risk Index for each currency over the full sample:
Three Distinct Phases:
2013–2017 — HIGH RISK (CRI > 0.6 for KHR): The KHR CRI operated in the “HIGH” risk zone, peaking near 0.7. This reflects both the elevated crisis probability (spreads near the threshold) and the high structural volatility. The USD CRI peaked in the “MODERATE” zone (~0.4). This was a period of genuine dual-currency credit risk asymmetry — borrowers in KHR faced significantly worse credit conditions.
2018–2019 — TRANSITION: Both CRIs declined sharply as spreads compressed. The KHR CRI fell into the “MODERATE” zone, converging toward the USD CRI. This period captures the structural improvement in Cambodia’s banking sector.
2020–2025 — LOW-TO-MODERATE RISK: Both CRIs stabilized at low levels. The KHR CRI (~0.33) remains above USD (~0.20) purely due to its higher structural volatility — the crisis probability component has fallen to zero for both currencies. The risk zone labels (LOW/MODERATE/HIGH) show that the current CRI level for KHR sits near the LOW-MODERATE boundary.
COVID Non-Event: The striking finding here is that COVID-19 (shaded area) produced no visible spike in either CRI. This is because the NBC’s restructuring program prevented spread widening. However, this may represent an underestimation of true risk during COVID — the CRI captured the observed spread dynamics, not the latent credit deterioration masked by regulatory forbearance.
The system CRI aggregates the two currency-specific CRIs using a weighted average. The choice of weights matters because it determines whether the composite index captures the experience of the typical borrower or the overall system vulnerability.
Three Weighting Schemes:
Loan-Share (80/20) — Primary specification: Reflects the actual composition of Cambodia’s banking sector, where approximately 80% of lending is denominated in USD. This weights the system CRI toward USD dynamics, which represent the majority of credit exposure. This is the most policy-relevant measure because it captures risk as experienced by the typical borrower.
Equal (50/50) — Sensitivity check: Gives equal importance to both currencies. This produces a higher system CRI (pulled up by the KHR component) and is useful for assessing whether the KHR segment is being “diluted” in the 80/20 specification.
KHR-Heavy (20/80) — De-dollarization scenario: Represents a hypothetical future where KHR lending dominates. If NBC’s de-dollarization goals are achieved, this weighting becomes relevant. It shows that a KHR-dominant banking sector would face higher system-wide credit risk due to the riel’s inherently more volatile spread dynamics.
Figure 8 reveals how weighting choices affect the systemic risk assessment:
In the Early Period (2013–2017): The three system CRI lines fan out significantly. The KHR-heavy (20/80) specification peaks near 0.65, while the loan-share (80/20) specification peaks near only 0.35. The weight choice matters enormously when the two currencies diverge — an analyst using 80/20 weights would conclude the system was at moderate risk, while 20/80 weights would suggest high risk.
In the Recent Period (2020–2025): All three system CRI lines converge to a narrow band around 0.20–0.30. This convergence reflects two things: (1) both currency CRIs have fallen to similar levels, so the weights matter less; (2) the crisis probability component has gone to zero, leaving only the structural σ difference to separate the lines.
Faded individual CRIs (dashed): The individual USD and KHR CRIs are shown as faded dashed lines for reference. In the early period, the KHR CRI (red dashed) sits far above the system CRI under 80/20 weighting — this means the riel segment’s risk is substantially diluted in the 80/20 composite. If one is concerned about KHR borrowers specifically, the aggregate system CRI may be misleadingly reassuring.
Policy Implication: As Cambodia de-dollarizes and KHR lending grows, the system CRI will naturally shift from the 80/20 line toward the 50/50 or even 20/80 line. If KHR spreads retain their higher structural volatility, this could mean the system-level credit risk increases even as the economy transitions away from dollar dependence — an important cautionary finding.
═══════════════════════════════════════════════════════════
TABLE 3: CRI Summary Statistics
═══════════════════════════════════════════════════════════
CRI_USD CRI_KHR CRI_System
Metric
Mean 0.2135 0.3569 0.2422
Max 0.4231 0.7708 0.4339
Min 0.1973 0.3333 0.2245
Std 0.0438 0.0635 0.0412
═══════════════════════════════════════════════════════════
Saved: cri_results.csv
Interpretation — Table 3: CRI Summary Statistics
The summary statistics quantify the full story:
CRI_KHR > CRI_USD on all metrics — higher mean, higher max, and higher standard deviation. This confirms the riel segment carries more credit risk across every dimension.
The max CRI_KHR (~0.7) vs max CRI_USD (~0.5) indicates that the KHR segment experienced genuinely elevated risk during 2013–2016, while the USD segment never reached similarly alarming levels.
The CRI_System (80/20 weighting) tracks closer to the USD CRI, confirming that the loan-share weighting significantly dilutes the KHR signal.
The full time series is saved to cri_results.csv for use in the stress testing (Notebook 05) and COVID analysis (Notebook 06).