In which universe do ESG stocks perform better?
The hype around ESG investing is strong and asset managers are vamping up their product-shelfes with ESG-labeled products. Academic papers to underline the fact that Large providers will happily sell you ESG scores to build your own portfolios. Unfortunately, the quality of the scores is not very uniform as of today. Managers with a mission will therefore fall back to reading annual reports of all issuers in their investment universe themselfes — which may be a lenghty and time consuming exercise.
That is not surprising when we take a short look at history: Successful quant managers like AQR (latest book available for free here)and Renaissance (see Zuckerman’s book here) have known for a long time that a small number of factors have the greatest influence on performance. The Momentum Factor is the most prominent and strongest factor for performance
Enter ESG — the factorisation of the 17 UN SDG (sustainable development goals). In addition to the small number of factors identified over decades of quantitative investment research (momentum, value, size) the new kid on the block ESG combines E, S and G across the 17 SDGs and their subcriteria — all crammed into one convenient score. Not surprising that this approach does not produce consistent results.
ESG combines E(nvironmnetal), S(ocial) and G(overnance) factors across the 17 SDGs and their subcriteria — all crammed into one convenient score.
So, how can we use some data-science to figure out what the ESG portfolio is that outperforms the traditional index? Simple — we just build one. As usual, the baby-steps approach can be helpful: use a naive algorithm to create first results, analyse and optimise later.
In our case, let’s use ESG data from Refinitiv (Thomson Reuters) and build portfolios with strong ESG stocks. Conveniently, Refinitiv provides a combined ESG score when we use the following parameter from Python with the Eikon API call:
import eikon as ekdf,err = ek.get_data('{}{}({}-01-01)'.format('0#', index, year), fields=['TR.TRESGScore'], parameters={'SDate': '{}-01-01'.format(year), 'Period': 'FY0'})
I will share the notebook with the Python code at the end of the article but beware that you will need the paid Refinitiv Workspace subscription with API key to reproduce the results.
The algo we apply comprises the following steps:
- Select investment universe (we’ll do S&P 500, Stoxx 600 and DAX for illustrations)
- In the observed period, select stocks with ESG Score > 75 (out of a maximum 100) and build an equal weighted portfolio
- Repeat for each year in the observed period and calculate the portfolio’s performance
- Plot the portfolio performance vs. the benchmark (index) performance to see whether the ESG portfolio performs better or worse.
That sounds simple enough so let’s give it a go:
That looks quite good and produces an unbelievable outperformance for a still well diversified equity portfolio. While it needs some further refinement and optimisation, this strategy is definitely going to be a part of Square Consulting’s capability portfolio.
My curiosity is spiked, so let’s have a look at some other investment universes to see if we stumbeld upon something by pure luck or if we can find some consistency here.
Hmm… that seems to work in general but something funky is going on 2016, 2019 and 2020. Despite the universe being large enough with 600 names — even larger than the 500 from the earlier example — the ESG scores don’t produce a comparable result. This strategy needs much much analysis to determine the reasons for unexpected performance before it can go into production.
One last one for our friends from Germany. Let’s do a final exercise with a small universe, the DAX 30.
Yikes …. while the end result after five years still outperforms the index the big picture is not as rosy. This might have to do with the small investment universe and the following concentrated portfolio of filtered out ESG stocks. But it also points to inconsistencies in ESG scores. Another reason could lay in the oberserved time frame. Five years might just not be enough time for the “Good” companies to outperform the “Evil” ones. Anyhow, much more analysis is needed before this can go into production.
Finally, as promised the code lives on this gist. I find the combination of plotly for interactive charts with pandas and eikon quite powerful to produce meaningful analysis with a few lines of code.
Bjoern Holste, Technology Institute