Stress-Testing PPP Portfolios — Macro Shocks at Programme Level

Every ministry sums its guarantees down a column as if a crisis drew them one at a time. It draws them all at once — and the correlated tail that sum cannot see is where the programme breaks. The standard tool cannot compute it; this paper ships the one that can.

Author: David Duarte Arancibia, Austral Intelligence Date: June 2026 Audience: Ministries of Finance and debt-management offices in frontier and emerging markets; central-bank financial-stability units; IMF Fiscal Affairs; BIS Financial Stability Institute; multilateral development bank (MDB) guarantee desks; supreme audit institutions Companion software: Austral platform — https://platform.austral-intelligence.com Series position: Paper 9 of the Austral series, and the macro-prudential sequel to The Silent FX Liability (Paper 6), which named the step this paper takes: aggregate the embedded-FX exposure across every contract alongside the explicit guarantees, and price the correlated tail.


Abstract

Correlation, not count, is what breaks a PPP programme — and it is the one number a ministry's contingent-liability register was never built to show. A Ministry of Finance running a public-private partnership (PPP) programme has a number for the expected fiscal cost of its guarantees and a fiscal-commitments-and-contingent-liabilities (FCCL) ceiling to keep that expected cost under. What it almost never has is the number that matters in a crisis: the value-at-risk of the contingent stock under a correlated stress — what the whole portfolio of minimum-revenue guarantees, foreign-exchange (FX) guarantees, debt guarantees, termination exposures and embedded-FX availability legs costs at once when a devaluation and a recession arrive together.

The reason it lacks that number is that contingent-liability stocks are conventionally aggregated in a way that cannot produce it: project exposures are summed additively, with no inter-project correlation, and guarantees are estimated deterministically — the FCCL toolkit is built to answer affordability, not portfolio tail risk. The obvious do-it-yourself alternative — summing each project's standalone tail — makes the same independence error. A common macro shock, by definition, does not diversify away: when the currency falls, the FX guarantee, the dollar-indexed capacity payment and the import-cost side of the toll road's revenue guarantee move together. The portfolio tail is fatter than independence implies, and the gap is exactly where a programme breaks.

This paper builds the missing instrument and ships it on the Austral platform: a correlated portfolio contingent-liability VaR, an Euler/component decomposition that allocates the portfolio tail to the project and the risk factor that drive it (using expected shortfall, which is coherent and sums exactly), a systematic-vs-diversifiable split against a common GDP/FX factor, and a join onto fiscal-rule headroom. The decision payload is a two-gate test: Gate 1 — the expected stock stays under the affordability ceiling (necessary); Gate 2 — the correlated expected shortfall (CVaR) of the stock preserves fiscal-rule headroom (sufficient). Three further readings make it a gate tool, not just a monitor: a marginal-CVaR admission price for the next guarantee (its cost of joining this book, not its standalone tail — two candidates with identical standalone risk can differ 2.8× in marginal cost); a reverse stress that solves for the shock that exhausts the headroom (Portfolio A breaks at a ~29% devaluation, Portfolio B at none); and a tail-dependence check (a Student-t factor) showing the Gaussian tail is robust for the concentrated book — already cap-bound — but understates the diversified one by ~11%.

We demonstrate it on two synthetic portfolios calibrated to real disclosed exposure shapes. Portfolio A — concentrated, six legs, energy/FX-heavy, 2.55% of GDP in exposure — is affordable (expected stock 0.56% of GDP, comfortably under a 1.5% ceiling) and would pass a naive independence tail test (CVaR₉₅ 1.20%), yet its correlated CVaR₉₅ is 2.07% of GDP, breaching a 2.0% headroom: it passes Gate 1 and fails Gate 2, and the fix is a buffer, not pooling. The +0.86%-of-GDP gap between the correlated and the independence tail — the correlation premium (the correlated tail minus the tail an independence assumption would report) — is precisely what additive aggregation misses. Portfolio B — diversified, ten legs, the same aggregate exposure — carries a correlated CVaR₉₅ of only 0.73% and passes both gates: the correlation premium is +0.11%, and correlation, not count, drives portfolio risk — a bigger, well-spread programme can be far safer than a small concentrated one.

The honest limitations are stated up front: the portfolios are synthetic, calibrated to disclosed exposure magnitudes (Chile's DIPRES contingent-liability report and comparators); the betas and the correlation matrix are the modelling contribution, not disclosed data — no ministry publishes a project-by-project correlation, which is part of the point. The policy lead is to book the correlated expected shortfall (CVaR) of the contingent stock, not the sum of independent project guarantees — because the sum is what looks affordable right up until the shock that was never modelled as common.

Keywords: portfolio value-at-risk · contingent liabilities · fiscal commitments · minimum-revenue guarantee · FX guarantee · expected shortfall · component VaR · systematic risk · macro-prudential · PPP programme · Ministry of Finance.

Feedback & discussion. Published openly so that Ministries of Finance, debt-management offices, financial-stability units, MDB guarantee desks, and the academic community can challenge and use it on real programmes. We especially welcome disclosed-exposure datasets to calibrate against.


Contents

  1. The decision problem — the ceiling vs the tail of the stock
  2. The general principle — why a common stress does not diversify away
  3. Build the portfolio — the guarantee legs plus the embedded-FX one
  4. The correlation structure — a single common factor
  5. The macro-shock catalogue
  6. The VaR decomposition — the new instrument
  7. The headline number — Figure 1
  8. Wire to fiscal-rule headroom — the two-gate test
  9. Architecture and reproduce in ten minutes
  10. Worked examples — A and B; plus marginal CVaR at the gate, reverse stress, and tail dependence
  11. Empirical anchor, limitations, and the policy lead
  12. The practitioner's desk     Appendices A–D

1. The decision problem — the ceiling vs the tail of the stock

A Ministry of Finance underwriting a PPP programme accumulates a stock of contingent liabilities: minimum-revenue guarantees on toll roads, FX guarantees on power purchase agreements (PPAs), debt guarantees, termination exposures, and the embedded-FX liabilities that The Silent FX Liability (Paper 6) showed hide inside dollar-indexed availability payments. The FCCL doctrine — operationalised at Stage E of the orchestrated chain (From Gatekeeper to Orchestrator, Paper 3) — gives the ministry an affordability ceiling: keep the expected annual contingent cost under some share of GDP or revenue.

That is necessary and it is not sufficient. The expected cost is the centre of a distribution; what sinks a budget is the tail, and the tail of a portfolio of guarantees is not the sum of the tails of its parts. When a currency devalues in a recession, the FX guarantee pays, the dollar-indexed capacity payment jumps, the toll road's traffic falls and trips its revenue guarantee, and the stressed sponsor's debt guarantee is called — all on the same day. The ministry needs the value-at-risk of the contingent stock under a correlated stress, decomposed to the projects that drive it, and read against the headroom its fiscal rule actually leaves. This paper builds that number. The FCCL affordability tools a ministry already runs answer the expected-cost question well; what they do not produce — by design, being built for affordability rather than portfolio risk — is the correlated tail of the guarantee book, because they aggregate project guarantees additively, as if the draws were independent. That is not an error to correct so much as a layer to add: a macro-prudential portfolio measure that sits on top of the affordability ceiling and prices the one thing a common macro shock guarantees — that the guarantees draw together.

2. The general principle — why a common stress does not diversify away

2.1 The portfolio tail is not the sum of the parts

Index projects \(i=1..N\), simulation paths \(s=1..M\). Each project's discounted contingent-liability loss on path \(s\) is \(L_{i,s}\) (signed so positive = the government pays); the portfolio loss is \(L_s = \sum_i L_{i,s}\). The risk metrics are quantiles of the sum:

\[\mathrm{VaR}_q(L) = q\text{-quantile of } L, \qquad \mathrm{CVaR}_q(L) = \mathbb{E}[\,L \mid L \ge \mathrm{VaR}_q(L)\,],\]

with CVaR (expected shortfall) the coherent tail measure we lean on. The whole question is the joint law of \(\{L_{i,s}\}\). Two errors both understate the tail. Summing each project's standalone VaR ignores any offset; assuming the projects are independent lets idiosyncratic shocks cancel in the tail. Neither is what a macro crisis does. A common factor makes the bad paths line up: the projects that load on the currency all pay in the same scenarios, so the portfolio loss has a fat, systematic tail that independence cannot see.

2.2 A single common factor makes the decomposition clean

Model each project's driver shock with one common factor \(F\) (a standardized recession-and-devaluation severity) and a loading \(\beta_i \in [-1,1]\):

\[z_{i} = \beta_i\,F + \sqrt{1-\beta_i^2}\;\varepsilon_i, \qquad \varepsilon_i \sim \mathcal{N}(0,1)\ \text{independent},\]

which induces the pairwise correlation \(\rho_{ij} = \beta_i\beta_j\) — a rank-one-plus-diagonal structure. This is the clean place to define the split. The \(\beta_i F\) piece is the systematic (non-diversifiable) component; the \(\sqrt{1-\beta_i^2}\,\varepsilon_i\) piece is diversifiable. Energy IPPs (independent power producers) with dollar capacity payments and demand-guaranteed toll roads carry high \(\beta\); a local-currency availability hospital carries near-zero \(\beta\). (The platform also supports a full Cholesky correlation matrix and a multi-factor GDP+FX+rate generalisation; the single factor is the interpretable headline.)

2.3 Prior art — and the gap

The components are standard in credit-portfolio risk: component/Euler VaR (Tasche 2007; Hallerbach 1999; Litterman), expected shortfall and its coherence (Artzner–Delbaen–Eber–Heath 1999; Rockafellar–Uryasev 2000; Acerbi–Tasche 2002), single-factor systematic models (Vasicek; Gordy 2003; the Basel asymptotic-single-risk-factor model). The three readings of §10 are equally standard tools — the gate's marginal-CVaR price is the Euler allocation read forward (marginal/incremental VaR, Jorion); reverse stress testing is routine supervisory practice (Basel); and the Student-t factor is the canonical tail-dependence alternative to the Gaussian copula (McNeil–Frey–Embrechts). What is missing — for the components and the three readings alike — is their application to a PPP contingent-liability portfolio. Conventional FCCL aggregation sums project contingent liabilities additively and estimates guarantees deterministically — no inter-project correlation and no portfolio VaR — because it is built to answer affordability, not portfolio tail risk. (Even the Austral platform's own generic risk/var_overlay.py sums risks independently per iteration — the foil, not the instrument.) A correlation-aware tail measure of a guarantee book is not, however, unprecedented: the World Bank Treasury's guarantee credit-risk guidance gives the sub-additive portfolio-unexpected-loss formula explicitly, and Colombia's DGCPTN computes the unexpected loss of its debt-guarantee book through the Basel IRB single-factor model at the 99.9th percentile (Bachmair 2016, Box 20)1. What those stop short of — and what Bachmair (2016) explicitly scopes out, addressing "individual obligations, not portfolios of obligations" and excluding PPP minimum-revenue guarantees (only Sweden had begun portfolio work) — is a coherent correlated portfolio expected shortfall, decomposed to the project (Euler/component), across the full PPP instrument set: minimum-revenue, FX, debt, termination, and the embedded-FX leg. That, on a live engine — together with the systematic/diversifiable split — is what this paper supplies; the prior practice computes a VaR-type unexpected loss for debt guarantees alone, with no coherent CVaR and no component decomposition.

3. Build the portfolio — the guarantee legs plus the embedded-FX one

The platform's portfolio engine already runs a correlated Monte Carlo across the four explicit guarantee engines — minimum-revenue (MRG), FX, debt and termination — threading a shared correlated shock into each so the paths are aligned, and each engine returns a signed per-path net loss. This paper adds the fifth leg: the embedded-FX liability from Paper 6 — the open currency position inside a dollar-indexed availability payment — folded into the portfolio as an extra per-path loss column driven by the same common factor (an FX loading on \(F\)), so that the silent liability is stressed jointly with the explicit guarantees rather than off to one side. That fold-in is the concrete realisation of the aggregation step Paper 6 named.

4. The correlation structure

The headline model is the single common factor of §2.2, with per-sector betas the planner sets (and the engine returns the realized correlation as a diagnostic). The betas are the load-bearing modelling input and are treated as such: they are not disclosed by any ministry (the paper's §11 is explicit that they are assumed, not estimated), and the worked examples report their sensitivity. The full Cholesky and the multi-factor GDP+FX+rate generators are available for robustness; the single factor keeps the systematic/diversifiable identity interpretable. One caveat the headline factor carries is that it is Gaussian, which has zero tail dependence — the legs do not all blow together in the extreme; §10.5 replaces it with a Student-t factor to price that model risk, and finds the Gaussian tail robust for the concentrated book but understated for the diversified one.

5. The macro-shock catalogue

The platform ships a catalogue of historical macro-stress scenarios — the Asian 1997, Tequila 1994, Turkish-lira 2018 and Sri-Lanka 2022 devaluations among them — that shift GDP, inflation and FX into the engines. The headline stress is a named historical analogue: a correlated recession-and-devaluation draw of the magnitude of the Turkish-lira-2018 or Asian-1997 episodes. The point of anchoring the stress to a real, datable episode is the same as in the rest of the series: the planner can defend the size of the shock by pointing at when it last happened.

6. The VaR decomposition — the new instrument

This is the new code asset (ppp_core.guarantees.var_decomposition), a pure post-processor over the per-path loss matrix the engine now exposes.

All of these come with bootstrap standard errors, and the component decomposition sums to the portfolio total by construction — the discipline that makes a per-project tail number defensible to an audit institution.

7. The headline number

The result is one number a finance minister can act on. Portfolio A's correlated 95% expected shortfall is 2.07% of GDP — nearly double the 1.20% an independence assumption reports — and that difference, not the expected cost, is what breaches the fiscal-rule headroom. Figure 1 shows it, and where it sits.

Figure 1 — The two-gate test and the ComponentCVaR breakdown. Left: for each portfolio, the expected stock (green), the CVaR₉₅ an *independence* assumption would report (blue), and the *correlated* CVaR₉₅ (red), against the affordability ceiling (dashed) and the fiscal-rule headroom (solid). Portfolio A's correlated CVaR breaches the headroom — Gate 2 fails — while its expected stock and its independence CVaR do not. Right: A's ComponentCVaR₉₅ by project; the energy/FX cluster (red) owns the tail, and 81% of the portfolio-loss variance is systematic.

Figure 1 — The correlated tail breaches headroom where the expected cost and the independence tail do not (left); the energy/FX cluster owns it (right). Generated from the shipped decomposition by make_decomposition_fig.py.

8. Wire to fiscal-rule headroom — the two-gate test

The decomposition becomes a decision when the tail is read against the fiscal rule. The platform's monitor/fiscal_rules evaluates debt-ceiling, structural-balance and golden-rule headroom; the join feeds the stressed portfolio CVaR as an add-on charge and re-evaluates the remaining headroom. The decision rule is two gates:

\[\textbf{Gate 1 (affordability): } \ \mathbb{E}[\text{stock}] \le \text{ceiling} \qquad \textbf{Gate 2 (tail headroom): } \ \mathrm{CVaR}_q[\text{stock}] \le \text{headroom}.\]

Gate 1 is the FCCL ceiling the ministry already runs; Gate 2 is the new, binding test — the expected shortfall of a 1-in-20 correlated stress must not consume the headroom the fiscal rule leaves. (The ceiling and the headroom are illustrative MoF settings here; in use they are the ministry's own FCCL ceiling and the distance to its binding fiscal rule. The robust output is the size of the correlation premium and which cluster owns the tail; whether a given threshold is breached is a function of the ministry's actual headroom.) A programme that passes Gate 1 but fails Gate 2 is affordable on average and unsafe in the tail; the remedy is a contingency buffer or a change of exposure mix, not the false comfort that the guarantees are independent.

9. Architecture and reproduce in ten minutes

The instrument is one pure module (var_decomposition.py) over the existing correlated portfolio engine, which now exposes the per-path loss matrix it already built. The endpoint,

POST /workspaces/{wid}/guarantees/portfolio/simulate    (decompose: true)

returns the portfolio VaR/CVaR plus the decomposition block — per-project ComponentCVaR, the diversification benefit, and the systematic/diversifiable split — over the same correlated run, audit-chained. The decomposition module ships with unit tests that pin the load-bearing additivity (sum_i ComponentCVaR_i == CVaR_q to machine tolerance) and the factor-vs-idiosyncratic separation; the worked examples reproduce from a seeded script (worked_examples.py, seed 42).

10. Worked examples — A (concentrated) and B (diversified)

Two synthetic portfolios, the same 2.55% of GDP in aggregate maximum exposure, calibrated to real disclosed exposure shapes (§11). Money is in % of GDP; the stress is the headline correlated recession-and-devaluation draw. The worked-example loss marginals are a stylized single-factor reduced form, not the full multi-engine guarantee run: they exercise the decomposition and the two-gate logic — the paper's contribution — on calibrated exposures, rather than reconstructing any country's book.

Legs E[stock] CVaR₉₅ (independence) CVaR₉₅ (correlated) Corr. premium Systematic share Gate 1 Gate 2
A — concentrated, FX/GDP-heavy 6 0.56% 1.20% 2.07% +0.86% 81% ✅ pass ❌ fail
B — diversified middle-income 10 0.33% 0.62% 0.73% +0.11% 46% ✅ pass ✅ pass

(Affordability ceiling 1.5% of GDP; fiscal-rule headroom 2.0%. ComponentCVaR sums exactly to the portfolio CVaR in both.)

Portfolio A — affordable, and unsafe. Six legs, energy- and FX-heavy: dollar-capacity-payment thermal IPPs, a dollar-PPA hydro, an MRG toll road, a dollar-indexed availability hospital (the embedded-FX leg), a power debt guarantee. Its expected contingent stock is 0.56% of GDP — well under a 1.5% ceiling, so Gate 1 passes. A ministry summing its guarantees as independent would compute a CVaR₉₅ of 1.20% and conclude there is headroom. But the legs load on the same currency-and-recession factor — given the assumed betas, 81% of the portfolio-loss variance is systematic — so the correlated CVaR₉₅ is 2.07% of GDP, against the illustrative 2.0% headroom: Gate 2 fails where Gate 1 passed. The +0.86%-of-GDP difference between the correlated tail and the independence tail is the silent error in additive aggregation, and the component decomposition says exactly where it lives: the three energy IPPs alone account for the bulk of the tail (Figure 1, right). The remedy is a buffer sized to the correlated tail, or a de-concentration of the FX cluster — not pooling, which does nothing against a common shock.

Portfolio B — bigger, and safer. Ten legs across transport, water, social and energy, the same aggregate exposure but mostly local-currency and lower-beta. Its correlated CVaR₉₅ is 0.73% of GDP — both gates pass — the correlation premium over independence is only +0.11% (against A's +0.86%), and the distinct sub-additivity diversification credit (the sum of standalone tails minus the portfolio tail) is large, because the idiosyncratic shocks genuinely diversify (systematic share 46%). B carries more projects than A on the same notional, yet is far safer: correlation, not count, drives portfolio risk. The contrast is the policy lesson — concentration in a common factor, not the number of guarantees, is what a ministry must watch.

10.3 Marginal CVaR at the gate — the price of the next guarantee

The decomposition prices the book the ministry holds; the gate must price the one it is about to add. Bring two candidate guarantees to Portfolio A's gate, identical in exposure (0.40% of GDP), mean and volatility — hence identical standalone tails — differing only in their common-factor loading: Candidate H, a fourth USD-capacity IPP (\(\beta=0.90\)), and Candidate L, a local-currency availability project (\(\beta=0.05\)).

Candidate (added to Portfolio A) Exposure Standalone CVaR₉₅ Marginal CVaR₉₅ Marginal ÷ standalone
H — 4th USD IPP (\(\beta\) 0.90) 0.40% 0.36% 0.33% 0.91
L — LCY availability (\(\beta\) 0.05) 0.40% 0.36% 0.12% 0.33

Same exposure, same standalone risk — and H's marginal cost of admission is 2.8× L's (0.33% vs 0.12% of GDP). A gate that prices a guarantee on its standalone tail charges these two projects the same; a gate that prices the marginal tail charges H nearly three times more, because H stacks on the currency cluster that already owns A's tail (it earns almost no diversification credit — ratio 0.91), while L genuinely diversifies it (ratio 0.33). The marginal CVaR is the risk-based admission price: book it as the project's buffer, or sequence the low-\(\beta\) project in and hold the high-\(\beta\) one until the cluster is thinned. This is the portfolio instrument turned into a gate rule — the contingent-liability cost of a project is conditional on the book it joins, not a property of the project alone.

10.4 Reverse stress — how rare a stress breaks the book

The two-gate test fixes a stress and reads the tail; reverse stress fixes the headroom and solves for the stress. Portfolio A's 2.0%-of-GDP headroom is reached by a pure common-factor draw of ≈1.95σ — an illustrative ~29% devaluation, a ~1-in-40 draw on the factor — and, once idiosyncratic dispersion is added, the expected shortfall reaches the headroom at about the 1-in-16 level (consistent with A failing the 1-in-20 Gate 2). Portfolio B's headroom is not reachable by the common factor at all: even an extreme systematic draw leaves its stock under 2.0%, and its CVaR stays below the headroom across the simulated range (out to ~1-in-2000). The minister-facing line: a roughly 30% devaluation exhausts the concentrated book's buffer; no plausible common shock exhausts the diversified one. (The devaluation figure is an illustrative mapping of the factor's severity, calibrated to the headline stress; the robust output is the contrast and the ~2σ severity.)

10.5 Tail dependence — where the copula choice bites

The single common factor of §4 is Gaussian, and a Gaussian factor has zero asymptotic tail dependence (Embrechts–McNeil–Straumann; Furman et al. 2016 prove the lower tail-dependence coefficient \(\lambda_L=0\) for the bivariate Gaussian copula at any \(\rho<1\)) — in the extreme it does not make the legs all blow together, the very assumption later blamed for understating joint losses in 2008 (Salmon 2009). We test the model risk by replacing it with a Student-t factor (a shared chi-square mixing that injects tail dependence while preserving the rank-one correlation and unit driver variance; \(\nu\to\infty\) recovers Gaussian).

Portfolio Gaussian CVaR₉₅ Student-t (\(\nu\)=5) Student-t (\(\nu\)=4)
A — concentrated 2.07% 2.07% 2.04%
B — diversified 0.73% 0.81% (+11%) 0.83% (+13%)

The effect is asymmetric, and instructive. The diversified book B's tail fattens materially under tail dependence (+11–13%), because its per-leg losses sit below their exposure caps and can move further together in the extreme. The concentrated book A barely moves (its ±0.03% wobble across \(\nu\) is within Monte-Carlo noise — the Gaussian and t runs draw independent paths — so read it as flat, not as a decrease): in a crisis its guarantees are already high, many near their exposure ceilings, so its tail is pinned by the legs' exposure caps, not the copula — the cap binds before tail dependence can. Two lessons follow. First, the headline A = 2.07% is robust to the copula (the Gaussian number is not flattering A). Second — counter-intuitively — copula model-risk is largest for the diversified book, exactly where a planner might assume it is safe; B's comfortable Gaussian pass (0.73% vs 2.0%) has less margin than it looks, though it still clears the gate. Neither gate verdict flips; what changes is the honesty about which number carries model risk.

11. Empirical anchor, limitations, and the policy lead

Anchor (calibrated, not estimated). The portfolios are calibrated to real disclosed exposure magnitudes — Chile's DIPRES Informe de Pasivos Contingentes reports per-project minimum-income-guarantee maximum exposures and an aggregate contingent-liability stock, and (notably) already runs a stochastic traffic simulation that reports a 95% tail within the road guarantees — while aggregating the total contingent stock as a simple sum across categories with no cross-category correlation and no joint FX/rate distribution: the exact silo this paper extends across. Comparators (Peru's MEF, South Africa's Treasury, Korea's PIMAC) corroborate the exposure shapes. What is disclosed and citable are the notionals and maximum exposures; the betas, the correlation matrix, and the joint shock paths are the paper's modelling contribution, labelled as calibrated, not disclosed — no ministry publishes a project-by-project correlation, which is part of why this number is missing.

Limitations, stated plainly. (1) The portfolios are synthetic; the headline numbers are a demonstration of the instrument on calibrated exposures, not a forecast for any country. (2) The betas and the correlation matrix are assumed, not estimated — there is no public concession-level loss panel to fit them — so the worked examples report sensitivity, and the policy conclusion (Gate 2 binds for concentrated FX/GDP portfolios) is qualitative-robust rather than a point estimate. (3) The single common factor is a simplification; the multi-factor and full-Cholesky generators are the robustness path. (4) Component VaR is noisy and band-sensitive — ComponentCVaR (coherent, machine-exact) is the load-bearing output and the only one shown in the headline. (5) The embedded-FX leg is demonstrated on a calibrated leg, since no public source isolates an FX-guarantee leg's loss stream. (6) The marginal CVaR of §10.3 is a property of the pair (candidate × the book it joins) and of the candidate's assumed beta — it is conditional on the current portfolio, by design, not a transferable project attribute. (7) The reverse-stress devaluation figure (§10.4) is an illustrative mapping of the common factor's severity to an FX move, calibrated to the headline stress; the robust outputs are the ~2σ severity and the A-vs-B contrast, not the precise percentage. (8) The Student-t factor of §10.5 combines fatter marginals with tail dependence and rescales to unit variance to keep the volatility calibration comparable; the concentrated book's flat response is the exposure cap binding, not evidence that copula choice is generally innocuous — it is not, as the diversified book shows.

The policy lead. Book the correlated expected shortfall (CVaR) of the contingent stock, not the sum of independent project guarantees, and run the two-gate test before the programme grows: provision the affordability ceiling and a buffer sized to the correlated tail, watch the systematic share rather than the project count, and de-concentrate the common-factor cluster (here, the FX-linked energy legs) rather than trusting that more guarantees mean more diversification. The instrument that makes this routine — the correlated MC, the component decomposition, the headroom join — is shipped; the number it produces is the one the ceiling alone never gave.

Sum the guarantees down the column and the book looks affordable — right up until the shock that draws them all at once. Correlation, not count, is what breaks a country. It is also the number no contingent-liability register was built to show.

11.1 Roadmap

(1) Fit the betas and the correlation matrix where a loss or claims panel exists (Korea's PIMAC MRG payout history, Chile's traffic-guarantee draws), turning the assumed correlation into an estimated one. (2) Extend the multi-factor model (GDP + FX + rate) from a robustness note to a calibrated headline where the joint macro paths are available (NGFS scenarios). (3) Wire the chosen buffer back into the Stage-E envelope as a closed loop. (4) Add the time dimension — the path of the contingent VaR across the programme's life, not just the snapshot. (5) Turn the marginal-CVaR gate price (§10.3) into a full pipeline sequencer — order and time new guarantees so the correlated tail stays under the headroom across the programme, the portfolio-level complement to the project gate.

12. The practitioner's desk

The portfolio-stress protocol (seven steps). (1) Assemble the programme's guarantee legs (MRG, FX, debt, termination) and the embedded-FX availability legs from the financial models. (2) Set each leg's common-factor beta from its currency and demand sensitivity (energy/FX high, local-currency availability near-zero) — declared, with the sensitivity run. (3) Run the correlated Monte Carlo with decompose: true at q = 95% (and 99% for the stress committee). (4) Read Gate 1 (expected stock vs the FCCL ceiling) and Gate 2 (correlated CVaR vs fiscal-rule headroom). (5) If Gate 2 fails, read the ComponentCVaR to see which cluster owns the tail, and size a buffer to the correlated CVaR or de-concentrate that cluster. (6) For any new guarantee at the gate, price its marginal CVaR on the current book and charge it as the project's buffer — a low-beta project may be admissible where an identical-exposure high-beta one is not. (7) Archive the audit-chain entry (portfolio VaR/CVaR, the decomposition, the marginal prices, the betas, the shock) for the defence file.

How to defend it. To the minister: two numbers — the 1-in-20 correlated cost of the guarantee book against the fiscal rule, and the reverse-stress reading (the devaluation that would exhaust the buffer). To the financial-stability committee: the systematic share, the component breakdown, and the tail-dependence check, so the concentration and the model risk are visible. To the audit institution: the component decomposition sums exactly to the portfolio tail, the marginal prices and betas are declared and overridable, and the run is reproducible from a seed.


Appendices

Appendix A — Reproducible API call

curl -X POST "$BASE/workspaces/$WID/guarantees/portfolio/simulate" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{ "projects": [ ... MRG / FX / Debt / Termination legs ... ],
        "correlation": { "method": "gdp_factor", "project_betas": { ... } },
        "macro_shock": { "fx_shock": -0.30, "gdp_shock": -0.05 },
        "options": { "num_simulations": 40000, "seed": 42 },
        "decompose": true, "decompose_q": 0.95 }'
# -> { portfolio_summary: {portfolio_var95, portfolio_cvar95, ...},
#      decomposition: { component_cvar: {project: ...}, diversification: {...},
#                       systematic_split: {systematic_share_variance, ...} } }

The two worked portfolios reproduce exactly from worked_examples.py (seed 42) and Figure 1 from make_decomposition_fig.py.

Appendix B — Decomposition reference

Symbol Meaning Formula
\(L_s\) portfolio loss on path \(s\) \(\sum_i L_{i,s}\) (positive = govt pays)
\(\mathrm{VaR}_q\) value-at-risk \(q\)-quantile of \(L\)
\(\mathrm{CVaR}_q\) expected shortfall (coherent) \(\mathbb{E}[L \mid L \ge \mathrm{VaR}_q]\)
\(\beta_i\) common-factor loading \(\rho_{ij}=\beta_i\beta_j\)
\(\mathrm{ComponentCVaR}_i\) project tail contribution \(\mathbb{E}[L_i\mid s\in\mathcal{T}_q]\); \(\sum_i=\mathrm{CVaR}_q\)
diversification benefit tail not diversified away \(\sum_i\mathrm{VaR}_q(L_i) - \mathrm{VaR}_q(L)\) (CVaR version \(\ge 0\))
systematic share factor-explained variance \(R^2\) of \(L\) on the common factor

Appendix C — Glossary

Contingent liability — a government obligation triggered by an uncertain event (a guarantee call, a termination). FCCL — fiscal commitments and contingent liabilities. MRG — minimum-revenue guarantee. Embedded-FX leg — the open currency position inside a hard-currency-indexed availability payment (Paper 6). VaR / CVaR — value-at-risk (a tail quantile) / conditional VaR or expected shortfall (the mean beyond it; coherent). Component / Euler VaR — the allocation of a portfolio risk measure to its parts that sums to the total. Systematic vs diversifiable — the share of risk driven by the common factor vs idiosyncratic. Two-gate test — affordability ceiling on the expected stock (Gate 1) and headroom on the correlated tail (Gate 2).

Appendix D — Pseudocode + calibration table

decompose(loss_matrix L [paths x projects], factor F, q):
    portfolio = L.sum(axis=1)
    tail = { s : portfolio_s >= VaR_q(portfolio) }            # worst (1-q) paths
    ComponentCVaR_i = mean over tail of L[:, i]               # sum_i == CVaR_q (exact)
    diversification = sum_i VaR_q(L[:,i]) - VaR_q(portfolio)  # CVaR version >= 0
    systematic_share = R^2 of regress(portfolio ~ F)
    two_gate: Gate1 = E[portfolio] <= ceiling ; Gate2 = CVaR_q(portfolio) <= headroom

Calibration (synthetic, % of GDP; betas/correlation = modelling, exposures = disclosed-shape): Portfolio A 6 legs, 2.55% exposure, energy/FX betas 0.78–0.90; Portfolio B 10 legs, 2.55% exposure, mixed betas 0.05–0.55. Headline stress: a correlated recession-and-devaluation draw of Turkish-2018 / Asian-1997 magnitude. Seed 42, 40,000 simulations, q = 95%.


  1. World Bank Treasury, Assessing and Managing Credit Risk from Contingent Liabilities: A Focus on Government Guarantees — states the sub-additive portfolio-unexpected-loss formula explicitly and (Box 20) documents Colombia's DGCPTN computing unexpected loss via the Basel IRB single-factor model at the 99.9th percentile on its debt-guarantee book. Bachmair, F. (2016), Contingent Liabilities Risk Management: A Credit Risk Analysis Framework for Sovereign Guarantees and On-Lending, World Bank Policy Research Working Paper 7538 — explicitly "addresses risks related to individual obligations, not to portfolios of obligations," and excludes PPP minimum-revenue guarantees, SOE risk and FX absorption; notes only Sweden had begun portfolio-level work. Both compute a VaR-type unexpected loss for debt guarantees, not a coherent CVaR with a component/Euler decomposition across the PPP instrument set — the adjacent prior art this paper extends. ↩

Working on PPP fiscal management in a finance ministry or a development bank?
Let’s talk for 30 minutes — no sales pitch.
Book a call →
Read the manual: Fiscal Commitments and Contingent Liabilities of PPPs (FCCL) →
Lee el manual: Compromisos Fiscales y Pasivos Contingentes de APP (FCCL) →
Leia o manual: Compromissos Fiscais e Passivos Contingentes de PPPs (FCCL) →