Applications¶
The project runs seven applications on the Smets and Wouters (2007) model (SW07), all from the 2022Q2 inflation peak or over the full history, each in a rational expectations (RE) version and a learning version. They share the project baseline and differ only in the lines their scenario files set.
| Application | Question | Main option | Scenario folder | Runner | Time |
|---|---|---|---|---|---|
| 1. Peak forecast | How fast does inflation fall from the peak with zero shocks? | expectations.mode |
scenarios/sw07/app1_peak/ |
app1 |
~30 s |
| 2. Shock replay | Feed in the shocks the RE model says hit the economy: what does the learning economy make of them? | shocks.source |
app2_replay/ |
app2 |
~10 s |
| 3. Policy deviations | Hold the rate 100 basis points (bp) below or above the Taylor rule for a year | conditions |
app3_policy/ |
app3 |
~30 s |
| 4. Ramsey policy | Optimal policy under commitment against the rule, four sets of loss weights | policy.* |
app4_ramsey/ |
app4 |
~2.5 min |
| 5. Density forecasts | How uncertain is the forecast with mark-up or demand shocks? | density.* |
app5_density/ |
app5 |
~14 min |
| 6. History and decompositions | What history does the learning model back out, and which shocks drove inflation? | history.mode, hetlearn.decompose |
app6_history/ |
app6 |
~40 s |
| 7. Further expectation rules | How do seven rules from the bounded-rationality literature change Application 1? | expectations.types, expectations.transforms |
br_portfolio/ |
run_br_app1('run') |
~2 min |
Five model variants change one assumption of Application 1. They are described on the option pages:
| Variant | Change | Page |
|---|---|---|
var1_re_variant/v1_mc_learn |
model-consistent instead of anchored RE agents | RE agents |
var2_plm/v2_* |
AR(2), AR(1) without constant, regression and VAR(1) perceived laws of motion | Perceived laws of motion |
var3_allvars/v3_* |
learning on all twelve forward-looking variables, under each facility | Projection facility |
var4_gain/v4_* |
constant and decreasing gains against the endogenous gain | Gains |
var5_switching/v5_* |
intensity of choice 0.5 or 2.25, memory 0.75 or 0.95 | Shares and switching |
The recursive forecast evaluation (scenarios/sw07/eval/, group eval, about 2.7 hours of
compute) is on the Forecast evaluation page.
Running them¶
setup_paths
run_applications('app3') % one group
run_applications({'app1', 'app2'}) % several groups, in this order
run_applications('a5_markup_learn') % one scenario, logged under its group
run_applications('all') % every group, the evaluation included (~3 hours)
Every run writes results/<id>/ and adds a row to results/run_log.csv. A run that fails is
printed, logged as error and skipped; the next one runs. help run_applications gives the
group table. Application 7 has its own runner, run_br_app1 (Application 7).
Results used on these pages¶
All numbers on the application pages come from the summary tables of the baseline run
(results/summary_v3/). Inflation, output and consumption growth are in % quarter on quarter,
annualized, the policy rate in % a year, differences in percentage points (pp).
Checks and reproduction¶
The summary script results/summary_v3/build_summary_v3.m checks the application runs and
writes every check, with its tolerance, to results/summary_v3/checks_v3.txt. For
Application 1:
- The RE run
a1_reequals a hand-written RE version of SW07 with t-1 information (tests/models/sw07_re_lagged_pinf.model), filtered and simulated on its own, to 1.7e-12. That model was also checked against Dynare. - In every forecast quarter of
a1_learnthe share in force equals the share computed at the end of the quarter before, so the projection facility never kept the shares. - Every run completed, and the facility acted in no Application 1 run.
The checks on the other applications are stated on their pages. To reproduce every result:
run_applications('all') % every group; about 3 hours, mostly the evaluation
run('results/summary_v3/build_summary_v3.m') % summary tables and checks, about 3 minutes
The summary script reads the results of every scenario, so it needs all groups, not only
app1.