Skip to content

feat(fred): triple the curated series list to the codes people actually search - #4415

Merged
daniel3303 merged 1 commit into
mainfrom
feat/fred-curated-series-expansion
Aug 20, 2026
Merged

feat(fred): triple the curated series list to the codes people actually search#4415
daniel3303 merged 1 commit into
mainfrom
feat/fred-curated-series-expansion

Conversation

@daniel3303

Copy link
Copy Markdown
Owner

Why

The economic-data pages are the best-ranking template on the deployment that consumes this module: Search Console puts /EconomicData/* at average position 5.4 over the 28 days to 2026-08-17. They are also the smallest surface we publish, 42 series out of the roughly 800,000 FRED carries.

This is the one place where the query is the identifier. Somebody types BAMLH0A0HYM2 and wants exactly that series, and that one code drew 1,064 impressions and 9 clicks in those 28 days. The constraint on the template is codes carried, not ranking.

What changes

The curated list goes from 42 to 114. Selection rule, now written into the file's header comment:

  • chosen against FRED's own popularity score, floor of 50;
  • confined to the categories already present, so no new taxonomy;
  • every id resolved through the FRED series API before being written down. The first draft contained WILL5000INDFC, which does not exist. None of these are from memory.

What was missing was mostly structural:

Family Gap
Interest rates The curve started at the 2-year, so nothing could answer a question about the front end. Adds 1M through 20Y plus DFF, IORB, TB3MS.
Corporate bond spreads The high-yield aggregate had no rating buckets under it, so a widening could not be told apart from a rotation within high yield. Adds BB, B, CCC, BBB, and the Moody's yields.
Housing Starts and the 30-year rate, but no price. Adds MSPUS, HSN1F, PERMIT, MORTGAGE15US, existing-home sales, months' supply, homeownership.
Exchange rates A trade-weighted index with no bilateral pairs beneath it. Adds the nine majors.
Money supply No reverse repo facility, which is the most-watched item in that category.
Inflation, employment, output The component and household-survey series that give the headline print its meaning.

Deliberate exclusions

Two series cleared the popularity floor and are kept out, with a test to keep them out:

  • USSLIND stopped updating in April 2020.
  • FPCPITOTLZGUSA is an annual World Bank restatement of US CPI that lags CPIAUCSL by a year.

A frozen series is worse than a missing one: it renders a current-looking page over a stale number, which is exactly the trap STLFSI2 sprang. That rule was a comment about one series; it is now Series_ExcludesTheSeriesFredHasStoppedUpdating, so the next curation pass cannot reintroduce a dead series on popularity alone.

Tests

Existing coverage already pins uniqueness, valid categories and every category being represented, so the additions are covered by it. New:

  • Series_ExcludesTheSeriesFredHasStoppedUpdating
  • InterestRates_CoverTheWholeTreasuryCurve (1M, 3M, 6M, 1, 2, 3, 5, 7, 10, 20, 30)
  • CorporateBondSpreads_SeparateTheRatingBuckets (BB, B, CCC)

dotnet csharpier check . clean, dotnet build Equibles.sln -c Release 0 errors, dotnet test tests/Equibles.UnitTests 4,439 passed, 0 failed. Mutation-checked after committing: swapping one curve member for USSLIND failed both new guards, and the change was restored.

Cost

72 more series is 72 more rows in the daily refresh, well inside FRED's rate limit, and the observation history is fetched once.

…ly search

The economic-data pages are the best-ranking template we have: Search Console
puts them at average position 5.4 over the 28 days to 2026-08-17. They are also
the smallest, at 42 series out of the roughly 800,000 FRED publishes, and this
is the one surface where the query IS the identifier. Somebody types
BAMLH0A0HYM2 and wants exactly that series; that single code drew 1,064
impressions and 9 clicks in those 28 days. The constraint on the template is
codes carried, not ranking.

So the list grows to 114, chosen against FRED's own popularity score with a
floor of 50 and confined to the families already here rather than opening new
ones. Every id was resolved through the FRED series API before being written
down, not recalled: the first draft contained WILL5000INDFC, which does not
exist.

What was missing is mostly structural. The Treasury curve started at the
2-year, so nothing could answer a question about the front end. The high-yield
aggregate had no rating buckets under it, so a widening spread could not be
told apart from a rotation within high yield. Housing had starts and the
30-year mortgage rate but no price. The trade-weighted dollar index had no
bilateral pairs beneath it. Money supply had no reverse repo facility.

Two series cleared the popularity floor and are excluded on purpose, with a
test to keep them out: USSLIND stopped updating in April 2020, and
FPCPITOTLZGUSA is an annual World Bank restatement of US CPI that lags the
series already carried. A frozen series is worse than a missing one because it
renders a current-looking page over a stale number, which is exactly the trap
STLFSI2 sprang. That rule is now written down as a test rather than as a
comment about one series.
@daniel3303
daniel3303 merged commit a7d769a into main Aug 20, 2026
9 checks passed
@daniel3303
daniel3303 deleted the feat/fred-curated-series-expansion branch August 20, 2026 03:12
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.

1 participant