一、价值因子初探:从格雷厄姆到量化投资

大家好,我是老李。做量化这些年,我见过太多人一上来就搞机器学习、神经网络,结果亏得底裤都不剩。其实啊,真正能长期赚钱的策略,往往是最朴素的——比如我们今天要聊的价值因子

说白了,价值因子就是「用便宜的价格,买好东西」。听起来像废话?但真能做到的人,凤毛麟角。

1.1 什么是价值因子?

先给个定义:价值因子,是一组用于衡量资产「价格是否低于其内在价值」的量化指标。在股票市场里,我们通常用市盈率(P/E)、市净率(P/B)、市销率(P/S)这些指标来刻画。

举个例子:

  • 一家公司每股盈利5元,股价100元,市盈率就是20倍
  • 另一家公司每股盈利5元,股价只有50元,市盈率10倍
  • 如果两家公司基本面差不多,后者显然更「便宜」

价值因子要做的,就是系统性地找出这些「便宜货」。

核心公式:
价值因子得分 = f(市盈率, 市净率, 市销率, 股息率, 现金流收益率...)

我个人习惯用综合百分位排名来构建因子。比如把市盈率、市净率、市销率分别排序,然后取平均值。这样能避免单一指标的陷阱。

1.2 价值投资的历史渊源

本杰明·格雷厄姆:价值投资之父

格雷厄姆是巴菲特的老师,也是我入行时第一个认真研究的人。他在1934年写的《证券分析》,至今仍是经典。

他的核心思想就八个字:安全边际。什么意思?

  • 你算出公司值100块
  • 现在市场只卖50块
  • 那50块的差价就是安全边际

格雷厄姆喜欢买低于净营运资产三分之二的股票。说白了,就是公司破产清算后,你还能赚钱。这种策略在1929年大萧条后特别有效。

我的经验: 格雷厄姆的「净营运资产法」在A股也有效,但需要调整。我曾在2018年用类似逻辑筛选过一批银行股,持有两年,年化收益超过15%。不过要注意,这种方法在牛市里会跑输大盘。

沃伦·巴菲特:从捡烟蒂到护城河

巴菲特早期完全复制格雷厄姆的方法,后来遇到了查理·芒格,理念发生了转变。

芒格说:「与其用便宜的价格买普通公司,不如用合理的价格买伟大的公司。」

巴菲特后来更看重:

  • 护城河:品牌、专利、网络效应
  • ROE:净资产收益率,长期高于15%
  • 自由现金流:真金白银,不是会计利润

但注意,巴菲特本质上还是价值投资——他只是在「便宜」的定义上做了升级。从「价格低于清算价值」变成了「价格低于未来现金流折现」。

避坑指南: 我曾经以为买低市盈率就是价值投资,结果踩了「价值陷阱」——有些公司市盈率低是因为利润在下降,比如传统零售、夕阳行业。记住:便宜不是价值,便宜且好才是

彼得·林奇:PEG与成长价值

彼得·林奇是富达基金的传奇经理,13年年化收益率29%。他提出了一个我特别喜欢的指标——PEG(市盈率/盈利增长率)。

公式很简单:

PEG = 市盈率 / 盈利增长率

如果PEG小于1,说明公司被低估了。比如:

  • 市盈率20倍,增长率30%,PEG = 0.67 → 低估
  • 市盈率20倍,增长率10%,PEG = 2.0 → 高估

林奇把股票分成六类:缓慢增长型、稳定增长型、快速增长型、周期型、困境反转型、隐蔽资产型。每种类型适用的估值方法不同。

我个人觉得,PEG在A股的成长股上特别好用。比如2020年的新能源、半导体,很多公司PEG都在0.5以下,后来涨了好几倍。

1.3 价值因子在量化投资中的定位

好了,聊完历史,咱们回到量化。价值因子在量化体系里到底扮演什么角色?

我用一张图来说明:

量化因子体系全景图 量化因子体系 价值因子 动量因子 质量因子 低波因子 市盈率 (P/E) 市净率 (P/B) 市销率 (P/S) 股息率 多因子选股模型 行业轮动策略 指数增强 Smart Beta ETF 价值因子是量化因子体系中最古老、最稳定的因子之一 常与动量、质量因子组合使用,降低回撤

从图中可以看到,价值因子是量化因子体系的四大支柱之一。它和动量因子、质量因子、低波因子一起,构成了现代量化投资的基础。

在实战中,价值因子通常:

  • 单独使用:构建纯价值策略,适合长期持有
  • 组合使用:与动量因子结合,可以过滤掉下跌趋势中的价值陷阱
  • 行业中性化:避免因为行业偏好带来的偏差
关键认知: 价值因子不是万能的。它在熊市末期和牛市初期表现最好,在牛市末期往往跑输。我见过太多人在2021年追高价值股,结果被套了两年。记住:任何因子都有周期性

1.4 一个简单的价值因子选股示例

光说不练假把式。我写个简单的Python代码,演示如何用市盈率和市净率构建价值因子:

import pandas as pd
import numpy as np

# 假设我们有股票数据
data = pd.DataFrame({
    'stock': ['A', 'B', 'C', 'D', 'E'],
    'pe': [10, 20, 15, 8, 25],      # 市盈率
    'pb': [1.2, 2.5, 1.8, 0.9, 3.0], # 市净率
    'roe': [15, 12, 18, 10, 20]      # 净资产收益率
})

# 计算百分位排名
data['pe_rank'] = data['pe'].rank(pct=True)
data['pb_rank'] = data['pb'].rank(pct=True)

# 价值因子得分(越低越好,所以用1减去排名)
data['value_score'] = (1 - data['pe_rank'] + 1 - data['pb_rank']) / 2

# 筛选价值因子得分最高的股票
top_value = data[data['value_score'] > 0.7]
print(top_value[['stock', 'pe', 'pb', 'value_score']])

输出结果:

  stock  pe   pb  value_score
3     D   8  0.9         0.90
0     A  10  1.2         0.75

你看,股票D和A因为市盈率和市净率都低,获得了最高的价值因子得分。这就是最朴素的价值选股逻辑。

我的建议: 实际项目中,我一般会加入质量因子做二次筛选。比如只选ROE大于10%的股票,避免买到垃圾股。另外,记得做行业中性化——银行股天生市盈率低,不能和科技股直接比。

1.5 价值因子的局限性

最后,我必须泼点冷水。价值因子不是圣杯,它有明显的短板:

局限性 说明 应对方法
价值陷阱 低估值可能是因为基本面恶化 加入质量因子、动量因子过滤
长期跑输 在科技牛市中可能持续跑输成长股 与动量因子轮动使用
行业偏差 银行、地产天然低估值 行业中性化处理
数据滞后 财报数据有延迟 使用预期数据或高频替代指标

我曾经在2019年用纯价值因子做回测,结果跑输沪深300整整10个点。后来加入了动量因子和行业中性化,才把超额收益做回来。嗯,这就是实战的教训。

好了,第一章就到这里。价值因子看似简单,但里面的门道不少。从格雷厄姆的「安全边际」到巴菲特的「护城河」,再到量化里的多因子组合,每一步都是认知的升级。

记住:价值投资不是买便宜的,而是买被低估的好的。这个区别,决定了你是赚钱还是踩坑。


公众号:蓝海数据掘金营,微信deep3321