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.


2 Answers 2


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, 2018 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, 2018 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, 2018 at 10:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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