3. E(环境)因子构建:碳排放强度、水资源管理、绿色专利数量、环境得分标准化
好,咱们进入E因子的实战环节。环境因子,说白了就是衡量一家公司在环保上到底干了多少实事。我见过太多人只看一个碳排放数据就下结论,结果踩了大坑。今天我把四个核心维度拆开讲,每个维度背后都有我踩过的坑和总结的经验。
3.1 碳排放强度:别被绝对值骗了
很多人一上来就拉碳排放总量,然后说A公司比B公司排得多,所以A公司差。这其实是个误区。你想想看,一家钢铁厂和一家软件公司,碳排放总量能比吗?
我个人习惯用碳排放强度,也就是单位营收的碳排放量。公式很简单:
碳排放强度 = 年度碳排放总量(吨CO₂e) / 年度营业收入(百万元)
这样做的好处是剔除了规模效应。我在一个项目中遇到过一家化工企业,碳排放总量每年增长5%,但营收增长更快,算下来强度其实是下降的。如果你只看总量,就会误判它是个坏学生。
关键点:碳排放强度越低,说明这家公司用更少的碳排放换来了更多的收入,环境效率越高。
数据来源方面,我建议优先用CDP(碳披露项目)的数据,其次是公司年报或ESG报告。如果实在没有,可以用行业均值做插值,但一定要在因子里打个标记,后面做回测时能看出来哪些是估计值。
3.2 水资源管理:容易被忽视的硬约束
水资源这个因子,说实话,以前我也不太重视。直到有一次我分析一家食品饮料公司,发现它在干旱地区的工厂因为取水限制停产了整整两周。那之后我才意识到,水不是免费的,也不是无限的。
水资源管理的核心指标我一般看两个:
- 取水强度:总取水量 / 营收,单位是立方米/百万元
- 水循环利用率:循环用水量 / 总用水量,越高越好
这里有个坑——不同行业的取水强度差异巨大。比如半导体行业需要大量超纯水,而金融行业几乎不直接用水。所以做标准化时,一定要按行业分组处理。
我的小技巧:对于水风险高的行业(食品饮料、化工、采矿),我会把水资源因子的权重调高一些。对于低风险行业,适当降低权重甚至忽略。
3.3 绿色专利数量:创新能力的硬指标
绿色专利数量,反映的是公司在环保技术上的创新能力。这个因子我特别喜欢,因为它有前瞻性——今天的专利可能就是明天的产品。
具体操作上,我一般用WIPO的绿色专利分类号去专利数据库里检索。比如:
# 伪代码示例
绿色专利分类号 = ['Y02', 'Y04S'] # 气候变化减缓技术
专利数量 = search_patents(company_name, classification=绿色专利分类号)
绿色专利强度 = 专利数量 / 公司总资产(十亿元)
为什么要除以总资产?因为大公司专利多很正常,但我们要看的是相对创新能力。我曾经对比过两家公司,一家是传统能源巨头,专利数量很多但大部分是化石燃料相关;另一家是新能源初创,专利数量少但全是绿色技术。如果不做标准化,你会误判前者更环保。
注意:专利数据有滞后性,一般滞后1-2年。另外,有些公司会把非绿色技术包装成绿色专利来充数,需要人工复核或使用NLP做文本分类过滤。
3.4 环境得分标准化:让不同量纲的数据能打架
好,现在我们有四个维度的原始数据:碳排放强度、取水强度、水循环利用率、绿色专利强度。它们的量纲完全不同,没法直接相加。所以要做标准化。
我常用的方法是Z-score标准化,但会做一点改进:
# 改进版Z-score标准化
def robust_zscore(series):
median = series.median()
mad = (series - median).abs().median() # 中位数绝对偏差
# 用MAD代替标准差,对异常值更鲁棒
z = (series - median) / (mad * 1.4826) # 1.4826是正态分布下的校正因子
return z
为什么要用MAD?因为碳排放数据里经常有极端值——比如某年工厂发生泄漏,排放量暴增10倍。如果用普通Z-score,这个异常值会把其他所有公司的分数压得很低。用MAD就好很多。
标准化之后,四个维度的分数都在同一个尺度上。然后我按以下权重合成最终的环境得分:
| 维度 | 权重 | 说明 |
|---|---|---|
| 碳排放强度(反向) | 40% | 核心指标,权重最高 |
| 水资源管理 | 25% | 取水强度反向 + 循环利用率正向 |
| 绿色专利强度 | 20% | 前瞻性指标 |
| 其他环境得分 | 15% | 如废弃物管理、生物多样性等 |
最终环境得分 = 0.4 × Z(碳排放强度反向) + 0.25 × Z(水资源管理) + 0.2 × Z(绿色专利强度) + 0.15 × Z(其他)
得分越高,代表环境表现越好。
3.5 核心逻辑框架图
下面这张图把整个E因子构建的流程串起来了,你可以对照着看:
3.6 避坑指南
最后,分享几个我踩过的坑:
- 数据缺失问题:很多中小公司根本不披露碳排放数据。我建议用行业均值填充,但要在因子里加一个「数据可得性」的哑变量,后面做多因子模型时可以用来做条件筛选。
- 范围一、二、三的区分:碳排放有范围一(直接排放)、范围二(电力等间接排放)、范围三(供应链排放)。大部分公司只披露范围一和二,范围三数据质量很差。我一般只用范围一+二,除非有可靠数据来源。
- 专利质量的陷阱:有些公司申请一堆垃圾专利来凑数。我建议用专利被引次数做加权,或者只保留授权专利,不统计申请中的。
- 时间对齐:碳排放数据通常是年度数据,而股价是日度的。做回测时要注意对齐时间戳,别把今年的碳排放和去年的股价混在一起。
我的经验:E因子在传统高污染行业(能源、化工、材料)中的区分度最高,在科技和金融行业里区分度较低。如果你做全市场选股,建议按行业分层后再做因子测试。
嗯,E因子的构建大概就是这些。记住一点:环境数据天生就有噪音,不要追求完美,而是追求信号足够强、逻辑足够自洽。下一节我们会讲S因子(社会因子)的构建,到时候再聊。