qpm_risk: Express a balance of risks (skewed fan charts)

View source: R/risk.R

qpm_riskR Documentation

Express a balance of risks (skewed fan charts)

Description

Central banks rarely believe their fan charts are symmetric: the published judgement is usually "risks to inflation are tilted to the upside". qpm_risk() applies that judgement, replacing the Gaussian bands of a forecast with two-piece normal bands whose mode stays on the model's projection while the mean shifts by the stated skew. Total uncertainty is preserved: the variance implied by the model at each horizon is held fixed, so a skew redistributes risk rather than adding it.

Usage

qpm_risk(fc, ..., author = "MPC", rationale = "")

Arguments

fc

A qpm_forecast, or a qpm_round (its forecast is used).

...

Named skews: one argument per variable, each a named vector of mean minus mode by period, e.g. pi4 = c("2027-Q1" = 0.3). A single unnamed value applies to every horizon.

author, rationale

Recorded with the risk assessment, as for judgement.

Details

The skew is stated in the variable's own units as mean minus mode — a value of 0.3 on inflation means the risks are worth 0.3 percentage points to the upside. Skews may be given for any subset of variables and horizons; anything unstated keeps symmetric bands.

Unlike add_judgment(), which moves the projection itself and back-solves the shocks that support it, this changes only the shape of the distribution around an unchanged central path.

Value

The forecast with skewed bands. ⁠$risk⁠ records the skews and ⁠$paths⁠ gains a mode column alongside mean.

Examples

sol <- qpm_solve(qpm_template("bkl"))
fc <- qpm_forecast(sol, horizon = 8)
risky <- qpm_risk(fc, pi = 0.4, author = "MPC",
                  rationale = "energy prices tilted to the upside")
risky
plot(risky, vars = c("pi", "i"))

qpmR documentation built on Sept. 29, 2026, 5:10 p.m.