Skip to content

Restore VAT-liability-by-sector as a calibration target #2

Description

@vahid-ahmadi

Background

vat_liability_sector (HMRC net VAT liability by trade sector) has been removed from the calibration objective — see Config.calibrate_vat_liability_sector = False (gated in firm_microsim/calibration.py). It is still computed and reported as an informational diagnostic in firm_microsim/validate.py, but it no longer feeds the weight optimizer.

Why it was removed

The model fixes firm inputs and sets liability = turnover − input, but does not yet calibrate the input/output tax structure. As a result the sector-level net liability is structurally unhittable — it over/under-shoots for individual sectors (badly for small ones) and competed with the dimensions the paper relies on. Concretely it scored 43.9% (2023-24) and −121.1% (2024-25, sign-broken), dragging the naive 6-dimension mean down even though the five core dimensions calibrate well (~89–90%).

Removing it lets the optimizer focus on the five calibrated dimensions (HMRC turnover bands, ONS population, employment, sector counts, VAT liability by band) and gives a cleaner, defensible headline accuracy.

What restoring it requires

Restoration should come after the input/output calibration work (tracked in #1), specifically:

  • Calibrate the input/output tax structure using HMRC T9 Input and output tax and/or ONS ABS intermediate consumption, so per-sector net liability is reproducible rather than a by-product of unconstrained input draws.
  • Then re-enable the target by setting Config.calibrate_vat_liability_sector = True and (likely) raising vat_liability_sector_importance.
  • Consider flooring the per-sector accuracy metric at 0 (the current sign-aware metric is uncapped and over-penalizes tiny sectors), so the dimension is scored fairly once calibrated.

Acceptance

  • With input/output calibration in place, vat_liability_sector accuracy is positive and reasonable (target ≥ ~70%).
  • Re-enabling it does not materially degrade the five core dimensions.

Related: #1 (broader future calibration extensions).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions