第4章:S(社会)因子构建:员工满意度、供应链管理、社区关系、社会得分合成
社会因子,圈内人常叫它"S因子"。说实话,它比E(环境)和G(治理)难搞多了。为什么?因为很多东西没法直接量化。员工开不开心,供应链有没有压榨童工,社区关系好不好——这些听着就虚。
但别急。我做了这么多年ESG量化,摸索出一套还算靠谱的方法。今天咱们就把它拆开揉碎,一步步讲清楚。
4.1 员工满意度:从问卷到分数
员工满意度,说白了就是员工愿不愿意在这家公司干下去。我见过最直接的指标是离职率。但光看离职率太粗糙了。
我个人习惯用三个维度来评估:
- 薪酬竞争力:人均薪酬 / 行业平均薪酬。大于1说明给得起钱。
- 培训投入:人均培训费用。这个数据很多公司不披露,得从年报里扒。
- 晋升公平性:内部晋升比例。如果全是空降高管,员工会寒心。
举个例子。我曾在某制造业公司做过一个项目。他们离职率高达25%,但薪酬水平其实不低。后来一查,问题出在晋升通道上——三年没一个内部提拔。嗯,这就是典型的"钱没给到位,心更委屈了"。
员工满意度得分 = 0.4 × 薪酬竞争力 + 0.3 × 培训投入 + 0.3 × 晋升公平性
权重怎么定?我建议用主成分分析(PCA)跑一遍,让数据自己说话。别拍脑袋。
4.2 供应链管理:别只看一级供应商
供应链这块,最容易踩坑。很多公司只披露一级供应商的数据,但真正的风险在二级、三级供应商那里。
我曾经帮一家零售企业做ESG评估。他们的一级供应商全是合规的,但二级供应商里有个小厂,被曝出使用童工。结果舆论炸了,股价三天跌了12%。
所以我的做法是:
- 供应商审核覆盖率:已审核供应商数量 / 总供应商数量。目标100%。
- 违规事件数:过去一年被曝光的供应链违规事件。这个数据可以从新闻和NGO报告里抓。
- 绿色采购比例:符合环保标准的采购额 / 总采购额。
4.3 社区关系:钱和事都要看
社区关系,很多人以为就是捐了多少钱。其实不止。
我把它拆成两部分:
- 社区投入:捐赠金额 / 营业收入。这个数据相对好拿。
- 社区冲突:过去一年与当地社区发生的纠纷次数。比如征地冲突、污染投诉等。
你想想看,一个公司捐了很多钱,但天天跟村民打官司,这能叫社区关系好吗?
所以我的合成公式是:
冲突一次扣10分,上不封顶。嗯,就是这么狠。
4.4 社会得分合成:加权还是等权?
好,现在我们有三个子因子了:员工满意度、供应链管理、社区关系。怎么合成一个总分?
我建议用等权法起步。为什么?因为这三个维度的重要性其实差不多。等权法简单、透明、好解释。
但如果你想让模型更聪明,可以用熵权法。熵权法的逻辑是:哪个指标的数据差异大,哪个权重就高。说白了,就是让数据自己决定重要性。
下面是我常用的合成代码:
import pandas as pd
import numpy as np
def social_score(df):
"""
df: 包含员工满意度、供应链管理、社区关系三列
返回:社会得分(百分制)
"""
# 等权法
weights = [1/3, 1/3, 1/3]
df['social_score'] = (
df['employee_satisfaction'] * weights[0] +
df['supply_chain'] * weights[1] +
df['community_relation'] * weights[2]
)
# 归一化到0-100
df['social_score'] = (df['social_score'] - df['social_score'].min()) / \
(df['social_score'].max() - df['social_score'].min()) * 100
return df
4.5 知识体系总览
下面这张图,是我自己梳理的S因子构建全流程。你看一眼就能明白整体逻辑。
4.6 实战中的几个坑
最后,分享几个我踩过的坑:
- 数据缺失:很多中小公司根本不披露社会数据。我的做法是:如果缺失超过50%,直接剔除这家公司。别硬填。
- 行业差异:制造业和金融业的供应链风险完全不同。一定要做行业中性化。
- 时间滞后:年报数据通常滞后6-9个月。用的时候要打时间戳,别把去年的数据当今年的用。
好了,S因子的构建思路就这些。下一章咱们聊G因子——公司治理。那个更有意思,因为数据最全,但坑也最多。
公众号:蓝海资料掘金营,微信deep3321