How to download historical Price to Book Value ratio, Market Cap, Market Returns and ESG Score fo...

...r each of the companies of the MSCI World Index between 2016 and 2021 ?

I am currently writing my Masters thesis and I would like to have access to this data to calculate the risk factors of the Fama-French 3 factor model. I know how to download them individually but I am trying to be time efficient here and downloaded them in one shot.

Best Answer

  • [Deleted User]
    [Deleted User] Newcomer
    Answer ✓

    Hi @trstudent13 ,


    May I advise reading the article 'Gathering aggregated ESG data on companies', especially its code on GitHub. An example of code you could use from this 'ESG_Boolean_Data' Python Class is:


    tes0 = ESG_Boolean_Data(Value = "True", Antivalue = "False")
    tes1 = tes0.get_data(Companies = ['0#.MIWO00000PUS'], # e.g.: SPX, MIWO00000PUS
        Fields = ['TR.AnalyticEnvControv','TR.EnvMaterialsSourcing','TR.EnvSupplyChainMgt','TR.PolicySustainablePackaging'],
        Static_fields = ['TR.HeadquartersCountry', 'TR.TRBCEconomicSector'])
    tes1.df


    Which will provide MSCI World Index companies' ESG boolean data outlined.

    Otherwise, I must say that simply just constructing a banal eikon api call is the most efficient way to go about your request, e.g.:


    df, err = ek.get_data(instruments=['0#.MIWO00000PUS'],  # This renders a list of all the companies in the MSCI world.
    fields=All_fields,
    parameters={'SDate' : '2020-01-01', 'EDate' : '2021-01-01', 'Frq' : 'FY'})


    Note that - due to the naturally low frequency of ESG data publication - only annual ESG data points are considered reliable (and it most often is the highest frequency available for ESG data).

    MSCI World is a large list of companies, you may thus hit eikon's data-request limit. I would advise using this technique to circumvent the issue - here it is used on Datastream calls, but it would work on eikon calls too.