I am trying to link Thomson Reuter's I/B/E/S dataset with Compustat. Both I obtained via WRDS. The only halfway useful info I could find was on a two year old forum post, which suggests to go through a third database (CRSP) via a link table.

My question is, why wouldn't we just use the 6-digit CUSIP to map the two datasets?

It can be constructed from, both, the 8-digit "old" CUSIP of I/B/E/S as well as the "new" 9-digit CUSIP on Compustat. As this website (as well as the wikipedia article) explain, the first 6 digits identify a company, the subsequent 2 digits a specific issue of a security, and the 9th digit is a checksum. Since Compustat is firm-specific, it shouldn't matter for most forecasts which security we're looking at.

Moreover, most forecasted measures, such as ROA or turnover, also seem firm-specific, not security-specific to me. I'm not fully sure for EPS forecasts, but usually we wouldn't see multiple simultaneous issues at the same time either if I'm not mistaken.


The main problem of linking Compustat with IBES is not the fact that Compustat's cusip is 9 character, whereas IBES is 8-character. The main issue is that Compustat Cusip is header (most recent), whereas IBES Cusip is historical (as of date).

Therefore matching through Cusips is likely to be correct for many cases but not all. The standard way of doing the matching is indeed as you say to through CRSP.

There are many scripts out there that can do the matching for you. One potential script that will match it for you in less than a minute:


which makes use of the WRDS macro iclink to merge CRSP and IBES:


  • $\begingroup$ Thanks for your response. I tried both now and the main issue with the CUSIP method seems to be that when the ownership of a company changes, the two historic and header CUSIPs track the change differently on occasion. $\endgroup$ – altabq Apr 13 '18 at 8:33

Since I don't have SAS, I wrote a python script to create the mapping table between Compustat and IBES via CRSP. The code is available on my GitHub:


It does not require any input other than valid WRDS login credentials.

  • 2
    $\begingroup$ Interesting. I wonder if both yield the same result. I will test it later. $\endgroup$ – phdstudent Apr 13 '18 at 8:47
  • $\begingroup$ I would guess that they produce slightly different results, since my script doesn't account for the date as the SAS script does $\endgroup$ – altabq Apr 16 '18 at 10:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.