Skip to content

0.17.0

Choose a tag to compare

@jdebacker jdebacker released this 16 Jul 20:53
d907c8e

This release enables new pension systems and makes the following bug fixes:

  • Fixes the Defined Benefits and Points System pension paths so they run
    against a real Specifications object (Issues #1014 and #1075):
    p.retire (an array since PR #433) was passed as the scalar S_ret
    into the numba loops, the scalar p.g_y was indexed as an array inside
    the loops, the scalar steady-state wage was indexed as a path, and the
    time-varying 3-D e matrix (PR #895) was sliced as 2-D. The systems
    use the steady-state retirement age and earnings profile for now; full
    time variation remains open in Issue #1014. The same coercions are
    applied to the NDC path, but the NDC system additionally requires
    growth-rate settings (ndc_growth_rate, dir_growth_rate) that are
    not yet parameters in default_parameters.json, so it still cannot
    run against a real Specifications object (see Issue #1169).
  • Wires the pre-time-path inputs the DB/NDC/PS benefit formulas need
    into the TPI: labor supplied before the time path begins comes from
    the model's initial condition (the same baseline object that
    initializes wealth), and pre-time-path wages are anchored to the
    period-0 wage of the current path. Adds the full time-path (T x S x J)
    evaluation of Defined Benefits amounts (DB_3dim_loop) used when the
    TPI computes aggregate revenues, built from each cohort's own wage and
    labor history so aggregates are consistent with household behavior.
    With these changes a country model using the Defined Benefits system
    solves both the steady state and the transition path.
  • Adds regression tests that call pension_amount with a real
    Specifications object per pension system (the existing tests
    pre-scalarized the inputs and so never exercised the real interface)
    and a local-marked steady-state solve test with the Defined Benefits
    system. See PR #1167.
  • Fixes the tax-liability revenue calculation using the first year's tax
    noncompliance and filer rates for every period, even when those rates
    are set to vary over time (Issue #1168): households responded to the
    changing rates while government revenue, the budget, and debt stayed on
    the first-year values. income_tax_liab now slices the rates over the
    transition path. See PR #1174.
  • Fixes the steady-state etr_ss and mtry_ss diagnostics using the
    labor-income tax noncompliance rate in place of the capital-income rate
    (capital_noncompliance_rate_2D in SS.py, Issue #1170). This affects
    only the post-solve SS diagnostics -- the solution itself already used
    the correct rates -- and is a no-op when the two rates are equal (the
    default). See PR #1171.
  • Fixes alpha_FA (direct foreign aid, added in 0.16.0) not being
    extended over the model time path: it was never registered in
    tp_param_list, so a multi-year path stayed short and broke the
    transition solve. It now extends to T + S with the last value carried
    forward, like alpha_G/alpha_T/alpha_I. See PR #1166.