Model targetting (via model.control) always delivers 0.01
Posted: Wed Jul 22, 2026 2:53 am
Hi, I have built a large macro model (around 60 regressions, 200 variables).
Until now, users shock the outputs via uploading add-factor series in a control Excel file. I'm trying to introduce variable targetting as an alternative. I've been successful on a small dummy model (GDP as a function of exogenous potential + output gap AR(1) and unemployment as a function of exogenous NAIRU and Okun's law regression). But when trying to apply something similar via model.control to my main model the result is always precisely 0.01 for whichever variable I try and whatever time period/s and regardless of the target.
I have temporarily set all user-contorlled shocks =0 and there is no user control shock at all for the variable that I'm trying to target, just a blank Y_a series.
I can't share the entire code on here (both commercially sensative and ~1000 lines) but am happy to seperately email an administrator with the code and associated files if helpful. Nonetheless, the most relevent part of the code is here:
smpl @all
series y_og_a 'create blank shocks series
'Shocks
for %K [.............long list of regressions including y_og........]
Model.append @ADD(V) {%K} {%K}_a
next
'Section 6: Solving the model ----------------------------------------
Model.exclude(actexist=t)
model.solveopt(t=g)
smpl 2020 2040
model.solve 'originally this was the main solve with the user-defined shocks, currently all user-shocks set to zero to avoid clashes
smpl 2026q2 2028q4
model.control y_og_a Y Y_target 'use output gap shock to set Y=Y_target for relevant period
smpl 2020 2040
model.solve 'solve again using the above shocks.
smpl @all
-------------------------------------
N.B. also tried variations of doing model.control before the solve and only solving once. Idea of the two-stage solve was to try and solve first using user-shocks and then target, but for now I've abandoned that idea. I need actexist=t as the model won't solve with a jagged edge problem.
Regardless of what I set the target to, or if I try targetting a different equation, (say unemployment via an Okun's law eq) it always delivers exactly 0.01 for the targetting periods. This occurs whether I use code or do it via model > prod manually.
thanks for any help and happy to share full code offline.
Until now, users shock the outputs via uploading add-factor series in a control Excel file. I'm trying to introduce variable targetting as an alternative. I've been successful on a small dummy model (GDP as a function of exogenous potential + output gap AR(1) and unemployment as a function of exogenous NAIRU and Okun's law regression). But when trying to apply something similar via model.control to my main model the result is always precisely 0.01 for whichever variable I try and whatever time period/s and regardless of the target.
I have temporarily set all user-contorlled shocks =0 and there is no user control shock at all for the variable that I'm trying to target, just a blank Y_a series.
I can't share the entire code on here (both commercially sensative and ~1000 lines) but am happy to seperately email an administrator with the code and associated files if helpful. Nonetheless, the most relevent part of the code is here:
smpl @all
series y_og_a 'create blank shocks series
'Shocks
for %K [.............long list of regressions including y_og........]
Model.append @ADD(V) {%K} {%K}_a
next
'Section 6: Solving the model ----------------------------------------
Model.exclude(actexist=t)
model.solveopt(t=g)
smpl 2020 2040
model.solve 'originally this was the main solve with the user-defined shocks, currently all user-shocks set to zero to avoid clashes
smpl 2026q2 2028q4
model.control y_og_a Y Y_target 'use output gap shock to set Y=Y_target for relevant period
smpl 2020 2040
model.solve 'solve again using the above shocks.
smpl @all
-------------------------------------
N.B. also tried variations of doing model.control before the solve and only solving once. Idea of the two-stage solve was to try and solve first using user-shocks and then target, but for now I've abandoned that idea. I need actexist=t as the model won't solve with a jagged edge problem.
Regardless of what I set the target to, or if I try targetting a different equation, (say unemployment via an Okun's law eq) it always delivers exactly 0.01 for the targetting periods. This occurs whether I use code or do it via model > prod manually.
thanks for any help and happy to share full code offline.