Skip to content

Aerospace exports run +5.7% at the family level, on a goods column that sits at -0.5% #866

Description

@WesIngwersen

Surfaced by #701 / PR #865, which fixed the aerospace split and left this behind as the only thing wrong with the family.

The measurement

For 2017, where the answer is published:

$M
Census domestic exports (ALL_VAL_YR_DOM) mapped to 3364 120,193
BEA published F04000 across 336411 / 336412 / 336413 / 336414 / 33641A 113,759
excess +6,434 (+5.7%)

Against a goods export column that sits at −0.5% economy-wide since #762. So this is family-specific, not the general level of the goods extract.

Its effect is small but stubborn: every one of the five aerospace leaves now lands at exactly 1.06× published, so the whole family scores PARTIAL rather than MATCH on a 0.95–1.05 band, and there is nothing left in the split to fix.

What is already ruled out

It is not a within-family mix problem. #865 graded seven different split rules against published. Net error is +6,434 in every one of them — a split moves dollars between leaves and cannot change what the family holds. That is what makes this a separate question rather than more of #701.

It is not re-exports. Census reports a further 14,219 $M of foreign exports (ALL_VAL_YR_FGN) on 3364, and #762 deliberately reads domestic exports only. Adding them back would make the gap far worse, not better, so the excess is inside the domestic series.

It is probably not the valuation basis, on sign. Census export values are f.a.s.; F04000 is at purchasers' prices, which adds domestic transport and margins to the border. That should put published above Census, and the observed gap runs the other way. Worth confirming rather than assuming, but it cannot be the whole story.

⚠️ The two space leaves point the excess at aircraft, not missiles. Census's own directly-published rows are 336414 1,628 against a published 1,899, and 33641A 1,020 against 1,004 — at or below published. So the excess sits in the 107,365 $M 33641X residual, which is aircraft, engines and parts. A defence-accounting explanation (U.S. military agency sales contracts being booked on a separate NIPA export line) would have shown up on the missile leaves first, and does not.

Leading hypothesis: used and rebuilt aircraft

BEA carries S00402 used and secondhand goods as its own commodity, and used-aircraft exports are large and are classified by Census under NAICS 336411. If BEA books them to S00402 while our crosswalk sends them to 336411, that is exactly this shape: a family-level excess, concentrated in the residual, invisible to any re-split.

Two other candidates worth keeping open:

  • Commodity-versus-NAICS definition. BEA's 3364 commodity is not identical to Census's NAICS 3364; parts of aerospace repair and overhaul may sit elsewhere on the BEA side.
  • Vintage. Census USA Trade revises; BEA's 2017 benchmark is fixed. A revision seam would be small, but it has not been measured.

Suggested first tests, cheapest first

  1. Check the sign and size of the S00402 route. Our S00402 exports run 1.61× published (#703's residue) — is any part of that a deficit somewhere else that aerospace's excess would fill? Compare our S00402 and 336411 errors against published together rather than separately.
  2. Confirm the valuation direction on a family where both bases are known, so the f.a.s.-versus-purchasers argument is settled with a number rather than by reasoning.
  3. Check whether the same +5.7% appears in the 2012 benchmark, which is available on the same code basis via _load_benchmark_detail_supply_use_usa. A stable gap across two benchmarks is a definitional difference; a gap that appears only at 2017 is a vintage or a one-year event.

Acceptance

  • The 6,434 $M attributed to a named cause, or the top candidates eliminated in writing with the measurement that eliminates them.
  • If it is a routing question, the crosswalk changed and the family re-scored, with the economy-wide goods export level re-checked so the fix does not move the −0.5%.
  • If it is definitional and not fixable, that written down where the next person will find it, so nobody re-opens the split.

Reproduce the numbers above with:

uv run python -m bedrock.analysis.nowcasting.trade_data.export_split_weight --check

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions