How to match IBES vintage without the landmines?

A short tutorial for researchers who are interested in merging IBES vintage.


Why this tutorial exists

Comparing two IBES Unadjusted Detail History drops (say a 2023 vintage vs. a 2025 vintage) looks trivial. In practice, it’s where many projects quietly go off the rails. Small, harmless changes in values, currency flags, names, and time-of-day stamps can make the same forecast event look “different” across vintages. And a naive merge will “discover” millions of spurious non-matches. That, in turn, can conclude that IBES anonymizes forecasts.

The fix is simple:

(1) put both vintages on the same information set (an as-of window), and

(2) merge on a stable event key that identifies the event, not its attributes.

This workflow is grounded in what we know about how IBES evolved in recent years:

Together, these facts justify the design choices below and explain why a careful merge often yields >99% overlap after basic hygiene. (The small residual is real and diagnosable, rather than a keying artifact.)