qpm_rule_eval: Evaluate alternative policy rules

View source: R/rules.R

qpm_rule_evalR Documentation

Evaluate alternative policy rules

Description

Answers the question a policy committee actually asks — what if we responded differently? — by re-solving the model over a grid of rule parameters and scoring each one by the unconditional loss

L = sum_v w_v var(v) + sum_v w^d_v var(v - v_{-1})

computed from the model's stationary covariance rather than by simulation, so it is exact. Tracing the resulting variance pairs gives the inflation-output variability frontier (the Taylor curve).

Usage

qpm_rule_eval(model, grid, loss = c(pi = 1, y_gap = 0.5), diff_loss = NULL)

## S3 method for class 'qpm_rule_eval'
plot(x, xvar = NULL, yvar = NULL, ...)

Arguments

model

A qpm_model.

grid

A data frame of parameter values, one row per rule and one column per parameter (e.g. from expand.grid()).

loss

Named weights on the variances of levels, e.g. c(pi = 1, y_gap = 0.5).

diff_loss

Named weights on the variances of first differences, e.g. c(i = 0.5) to penalise instrument volatility.

x

A qpm_rule_eval.

xvar, yvar

Axes of the frontier. Either a variable name, whose level variance is used, or a scored column name directly — so xvar = "vard_i" traces the classic trade-off against instrument volatility. Defaults to the first two entries in loss.

...

Unused.

Details

Rules that violate Blanchard-Kahn are reported as such rather than dropped: a policy response too weak to deliver determinacy is a finding, not a missing row.

Value

A data frame of class qpm_rule_eval: the grid, the variance of each targeted variable, the loss, and the Blanchard-Kahn outcome.

Examples

m <- qpm_template("bkl")
grid <- expand.grid(c2 = c(1.2, 1.5, 2, 3), c3 = c(0, 0.5, 1))
ev <- qpm_rule_eval(m, grid, loss = c(pi = 1, y_gap = 0.5),
                    diff_loss = c(i = 0.5))
ev
plot(ev)

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