3. ESG数据概览:常见ESG评级机构(MSCI、Sustainalytics)及数据获取方式

做量化策略,最头疼的是什么?

不是模型不灵,是数据拿不到。

ESG因子更是如此。我刚开始研究ESG动量策略时,第一反应就是:评级数据从哪来?各家机构评的还不一样,到底信谁的?

这一节,咱们就把这事掰扯清楚。

3.1 主流ESG评级机构:谁在给企业打分?

全球ESG评级机构少说也有几十家。但真正被机构投资者广泛采用的,其实就那几家。我个人最常打交道的是MSCI和Sustainalytics。

机构 覆盖范围 评级体系 数据特点
MSCI ESG Research 全球约8,500家公司 AAA-CCC七档 行业相对评分,权重透明
Sustainalytics 全球约12,000家公司 0-100分(低分好) 风险暴露+管理能力双维度
Refinitiv (路透) 全球约7,000家公司 A+到D- 数据颗粒度细,历史长
Bloomberg ESG 全球约11,000家公司 0-100分 侧重披露数据,缺失值多

关键认知:不同机构的评级相关性其实不高,大概在0.5-0.7之间。这意味着选哪家数据,会直接影响你的因子表现。我建议至少对比两家再做决策。

3.2 MSCI ESG评级:行业内的标杆

MSCI的评级体系,说白了就是「同行比一比」。它把每个公司放在所属行业里,看ESG表现排第几。

评级逻辑是这样的:

  • 关键议题识别:每个行业选3-7个核心ESG议题。比如石油行业重点关注碳排放,科技公司则看数据隐私。
  • 风险暴露与风险管理:评估公司面临的风险有多大,以及管理得好不好。
  • 争议事件扣分:如果有重大负面事件,比如环境污染、劳工纠纷,直接降级。

最终得分映射到AAA到CCC七个等级。AAA是行业前5%,CCC是后5%。

我的经验:MSCI的数据在发达市场覆盖很好,但A股覆盖相对有限。做中国策略时,我一般会搭配Sustainalytics一起用。

3.3 Sustainalytics:风险视角的评级

Sustainalytics的思路跟MSCI不太一样。它更关注「ESG风险」本身,而不是「相对表现」。

它的评分逻辑是:

  1. 测算未管理风险:先看公司所在行业固有的ESG风险有多大。
  2. 评估管理能力:再看公司有没有采取措施来降低这些风险。
  3. 计算最终风险得分:未管理风险 - 管理效果 = 剩余风险。

得分越低越好。0-10分是「可忽略风险」,40分以上是「严重风险」。

为什么会这样设计?你想想看,一个化工企业天然就有高环境风险,但人家管理得好,实际风险可能比一个管理混乱的科技公司还低。Sustainalytics想捕捉的就是这个「管理溢价」。

3.4 数据获取方式:从哪拿数据?

嗯,这里要讲点实在的了。数据获取,说白了就三条路:

3.4.1 商业数据库(最省心,但贵)

如果你在机构里做,大概率已经有这些数据了:

  • Bloomberg Terminal:直接敲ESG函数,比如ESGESR,就能拉出MSCI和Sustainalytics的评级。
  • Refinitiv Eikon:通过TR.ESGScore等代码获取。
  • FactSet:也整合了多家ESG数据源。

代码示例(用Python从Bloomberg API拉MSCI评级):

import pdblp
import pandas as pd

# 连接Bloomberg
con = pdblp.BCon(debug=False)
con.start()

# 定义股票和字段
tickers = ['AAPL US Equity', 'MSFT US Equity', 'GOOGL US Equity']
fields = ['ESG_SCORE', 'ENVIRONMENTAL_SCORE', 'SOCIAL_SCORE', 'GOVERNANCE_SCORE']

# 拉取数据
df = con.bdh(tickers, fields, start_date='2024-01-01', end_date='2024-12-31')
print(df.head())

注意:Bloomberg API需要终端授权,个人用户基本用不了。我曾经帮一个初创团队搭过替代方案,最后选了Sustainalytics的公开数据接口。

3.4.2 公开数据源(免费,但有限)

个人研究者或者小团队,可以试试这些:

  • Sustainalytics 官网:提供部分公司的免费评级查询,但没法批量下载。
  • MSCI 官网:也有类似的查询工具,覆盖范围小。
  • CDP (碳披露项目):环境维度的数据可以免费获取,但需要申请。
  • Worldscope / ASSET4:有些学术数据库会打包提供历史ESG数据。

我建议用爬虫抓取公开页面数据,但要注意合规问题。曾经有个学员因为爬取频率太高,被Sustainalytics封了IP……嗯,这事得悠着点。

3.4.3 第三方数据聚合平台(折中方案)

有些平台专门做ESG数据聚合,价格比直接买Bloomberg便宜:

  • ESG Book:聚合了多家评级机构的数据,API接口友好。
  • Arabesque S-Ray:提供基于公开信息的ESG评分,免费版够用。
  • Truvalue Labs (FactSet旗下):用AI分析新闻和报告,生成实时ESG信号。

我个人比较推荐ESG Book,它的API文档写得清楚,Python调用很方便:

import requests
import json

# ESG Book API示例
url = "https://api.esgbook.com/v1/ratings"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {
    "isin": "US0378331005",  # Apple的ISIN
    "provider": "sustainalytics"
}

response = requests.get(url, headers=headers, params=params)
data = response.json()
print(f"Sustainalytics评分: {data['score']}")

3.5 数据清洗与对齐:避坑指南

拿到数据只是第一步。真正折磨人的,是数据清洗。

我曾经在做一个跨市场策略时,发现MSCI和Sustainalytics对同一家公司的评级日期差了整整一个月。原因是MSCI按月更新,Sustainalytics按季度更新。如果不做时间对齐,因子信号全是错的。

几个关键点:

  • 时间戳对齐:统一用月末或季末数据,别混用。
  • 缺失值处理:ESG数据缺失率很高,尤其是小盘股。我一般用行业均值填充,或者干脆剔除。
  • 评级标准化:不同机构的量纲不同,做因子组合前一定要标准化。比如把MSCI的AAA-CCC映射到1-7分。

核心建议:别贪多。先选一家评级机构的数据把策略跑通,再对比第二家。一上来就想融合所有数据源,大概率会陷入数据泥潭。

3.6 本章知识体系

下面这张图,帮你理清ESG数据获取的全流程:

ESG数据获取知识体系 ESG评级机构 MSCI ESG Research Sustainalytics 商业数据库 Bloomberg / Refinitiv 公开数据源 官网 / CDP / 学术库 聚合平台 ESG Book / S-Ray 数据清洗与对齐 时间戳对齐 → 缺失值处理 → 评级标准化 ESG因子数据(策略就绪)

从评级机构到最终可用的因子数据,中间每一步都可能出问题。我见过太多人花80%的时间在数据清洗上,真正做策略的时间反而没多少。所以,一开始就规划好数据流程,比什么都重要。

一个小建议:如果你刚开始接触ESG数据,先从Sustainalytics的公开评分入手。它的API相对友好,而且风险导向的评分逻辑跟动量因子结合时,效果往往不错。


公众号:蓝海资料掘金营,微信deep3321