← Back

2026-07-14

The Reference Data Decay Problem: Why Fund and Product Master Data Is the Silent Killer of Pension Reporting Accuracy

Every pension reporting incident I've had to explain to auditors traces back to the same place. Not the transaction pipeline. Not the calculation engine. The reference layer — the boring tables nobody reviews because they "don't change."

They do change. They just change in ways that don't leave a paper trail.

The illusion of static data

Ask any pension operations team what their highest-risk data is and they'll point to contribution transactions, fund NAV feeds, or participant demographics. Reference data — fund codes, product parameters, contribution type mappings, deduction categories — sits in a corner of the warehouse marked "low volatility." It gets loaded once, reviewed once, and forgotten.

Then one of these happens:

None of these events fire alerts. None of them break pipelines. The jobs keep running. The reports keep generating. And every HAYMER submission built on top of that reference layer inherits the drift.

Why the errors are silent

Transaction data has natural guardrails. Sums have to balance. NAV × units has to equal position value. Participant counts reconcile against the policy administration system. If something breaks, downstream reconciliation catches it within a cycle or two.

Reference data has none of that. A misclassified contribution type doesn't fail validation — it produces a technically valid but semantically wrong record. The GEV report ships. The EGM extract balances. The regulator receives a file that parses cleanly and passes every schema check. Six months later, during a targeted audit, someone asks why participant X's employer contribution was reported under category A in Q1 and category B in Q3 with no corresponding event. Now you're reconstructing the state of a lookup table from git history — assuming it was in git at all.

The versioning problem nobody solves

Most enterprise reference data lives in one of three places, and all of them are wrong:

  1. The source system's operational tables. Overwritten in place. No history. When the business changes a fund parameter, the old value is gone.
  2. A data warehouse dimension table without SCD Type 2. Someone built it as Type 1 because "it doesn't change often." Same problem.
  3. A spreadsheet maintained by the product team. Actual history exists somewhere in email threads and file versions named fund_mapping_FINAL_v3_revised.xlsx.

What you actually need is bitemporal versioning: valid-from/valid-to for when the business rule applied, and knowledge-from/knowledge-to for when you knew about it. Regulatory reporting frequently requires restating prior periods when a mapping error is discovered. Without bitemporal tracking, you can't answer the two questions auditors will ask: what did we report, and what should we have reported?

Concrete patterns from the trenches

A few examples I've seen produce material restatements:

In every case, the transaction data was fine. The pipelines were fine. The reference layer was the failure point, and it took months to prove it.

What actually works

After years of owning these pipelines, the fixes aren't glamorous:

The uncomfortable part

Most teams won't do this until they've been burned. Reference data governance sounds like overhead until an auditor asks you to reproduce the exact state of your fund master as of a specific reporting date two years ago, and you realize you can't.

The transaction pipeline gets attention because when it breaks, it breaks loudly. The reference layer gets neglected because when it breaks, it doesn't break at all — it just quietly poisons everything downstream until someone external notices.

Build for the second failure mode. It's the one that ends careers.