Skip to content

Apply TFP multiplier to limiting inputs in set_targets()#57

Merged
jose-moran merged 3 commits intobugs/productivity-growthfrom
bugs/limiting-inputs
Feb 12, 2026
Merged

Apply TFP multiplier to limiting inputs in set_targets()#57
jose-moran merged 3 commits intobugs/productivity-growthfrom
bugs/limiting-inputs

Conversation

@jose-moran
Copy link
Member

The problem was that when computing limiting inputs, we were not taking the TFP multiplier into account. This artificially limited production. The fix now includes the TFP multiplier, and we check that TFP growth does impact production growth now (see LLM generated summary below)

Fix for production being constrained at initial levels even with TFP growth.

Root cause: compute_limiting_intermediate_inputs_stock() and compute_limiting_capital_inputs_stock() calculated production limits WITHOUT applying the TFP multiplier. These limits constrain target_production, which capped actual production at initial levels regardless of TFP growth.

Before fix: TFP grew 1309% but production only grew 82% (12.9% efficiency)
After fix: TFP grew 843% and production grew 476% (61% efficiency)

Also fix empty array handling in SimpleTFPGrowth to prevent test failures.

Fix for production being constrained at initial levels even with TFP growth.

Root cause: compute_limiting_intermediate_inputs_stock() and
compute_limiting_capital_inputs_stock() calculated production limits
WITHOUT applying the TFP multiplier. These limits constrain target_production,
which capped actual production at initial levels regardless of TFP growth.

Before fix: TFP grew 1309% but production only grew 82% (12.9% efficiency)
After fix: TFP grew 843% and production grew 476% (61% efficiency)

Also fix empty array handling in SimpleTFPGrowth to prevent test failures.
@sternluke
Copy link
Collaborator

Thank you Jose for vetting this approach.

Is it necessary to also modify compute_production() in production.py to remove the following lines in order to avoid applying the tfp_multiplier twice to the limiting inputs?

# Apply TFP multiplier if provided
        if tfp_multiplier is not None:
            # TFP scales effective capacity from inputs
            effective_labour = current_labour_inputs * tfp_multiplier
            effective_limiting_stock = limiting_stock * tfp_multiplier
        else:
            effective_labour = current_labour_inputs
            effective_limiting_stock = limiting_stock

The limiting_intermediate_inputs and limiting_capital_inputs are now
TFP-scaled in set_targets() (from PR #57). This removes the duplicate
scaling in compute_production() to avoid applying TFP twice to the
limiting stock constraint. Labour scaling is kept since it's not
pre-scaled elsewhere.
@jose-moran
Copy link
Member Author

@sternluke sorry for that, you're right -- TFP was being taken into account twice. This is now sorted!

@jose-moran
Copy link
Member Author

Will merge this into the other branch with the PR. I won't merge the other PR (since it goes into main) until I have approval from others

@jose-moran jose-moran merged commit 8584280 into bugs/productivity-growth Feb 12, 2026
1 check passed
@jose-moran jose-moran deleted the bugs/limiting-inputs branch February 12, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants