← 返回博客列表

量化投资从入门到精通

【量化投资从入门到精通 #46】价值投资也能量化?Greenblatt魔法公式,挑便宜又最能赚的公司

2026年08月22日 17:16 · 麦蕊智数 MyData

本系列进度:#01–#45 ✅ #46 ✅ 余 #47 待数据补全后补齐(系列收官在即) 专题阶。前几篇用了不少"因子",这一篇回到最朴素的价值投资灵魂一问:怎么用财报,挑出"又便宜、又能赚"的公司? Greenblatt 的"魔法公式"把这件事压缩成两个排名。

一、这个方法解决什么投资问题

价值投资听起来很"艺术"——读财报、懂生意、等低估。但 Joel Greenblatt 在《股市稳赚》里把它量化成两个数字

  1. 这家公司资本回报率高不高?(赚钱效率高不高)
  2. 买它贵不贵?(收益率高不高)

两个都好的公司,长期跑赢市场。问题是:怎么"同时"挑出两者都好的?答案是——分别排名、再加起来

二、核心思想:两个排名拧成一个分

魔法公式只依赖两张表的数据:

指标 公式 越好=
收益率 EY EBIT ÷ 企业价值 越高(越便宜)
资本回报率 ROC EBIT ÷(净营运资本 + 净固定资产) 越高(越能赚)

做法是:

  1. 对所有股票,按 EY 从高到低排名(第 1 名最便宜);
  2. ROC 从高到低排名(第 1 名最能赚);
  3. 两个排名相加 = 魔法综合分;
  4. 综合分最低的(最便宜 ∩ 最能赚)。

为什么相加而不是相乘?排名相加对极端值更稳健,且天然做了"跨指标中性"——不会因为某个指标量纲大就一家独大。

三、实操演示

合成示意财报(200 只,固定种子):算 EY/ROC,分别排名相加,挑综合分最低的前 5。

import numpy as np, pandas as pd
rng = np.random.default_rng(46082026)
N = 200
ebit = rng.uniform(5, 80, N); ev = rng.uniform(40, 600, N)
nwc = rng.uniform(10, 150, N); ppe = rng.uniform(20, 200, N)
df = pd.DataFrame({"EBIT": ebit, "EV": ev, "NWC": nwc, "PPE": ppe})

df["EY"]  = df["EBIT"] / df["EV"]
df["ROC"] = df["EBIT"] / (df["NWC"] + df["PPE"])
df["rank_EY"]  = df["EY"].rank(ascending=False)
df["rank_ROC"] = df["ROC"].rank(ascending=False)
df["magic_score"] = df["rank_EY"] + df["rank_ROC"]   # 越低越好
print(df.sort_values("magic_score").head(5)[["EY","ROC","rank_EY","rank_ROC","magic_score"]].round(3))

运行结果(合成示意,N=200,综合分最低的前 5):

EY ROC rank_EY rank_ROC magic_score
1.338 0.547 3 13 16
0.761 0.646 8 10 18
1.471 0.512 2 16 18
1.038 0.493 4 17 21
0.498 0.624 19 11 30

数据需求标注:EBIT/企业价值/净营运资本/固定资产/PE 等财报基本面属需求 R1,麦蕊补全后即可用真实财务替换 synthetic 段,魔法公式算法完全一致。本 demo 用合成数据演示方法。

四、结果解读

上榜的公司,EY 和 ROC 两个排名都靠前(比如第 1 行 EY 排第 3、ROC 排第 13,综合 16)。这正是魔法公式的精髓:不要求单项第一,要求两项都好

有趣的一点:魔法公式综合分和"单看 PE"的相关系数≈ −0.002(几乎为零)。说明魔法公式捕捉的是 PE 之外的"盈利能力"维度——它挑的不只是便宜,更是"便宜且真能赚"。纯看 PE 会漏掉那些"不便宜但极能赚"、或"便宜但平庸"的公司。

五、常见陷阱

  • 财务质量陷阱:EBIT、企业价值都要用"干净"的财报;商誉、递延税、少数股东权益处理不当会扭曲 EY/ROC。
  • 幸存者偏差:只测当前还在上市的公司,魔法公式的历史回测会因此虚高(#04)。
  • 小市值失真:小公司 EY/ROC 容易因一笔大额资产波动而极端,需要市值过滤。
  • 周期性行业:景气顶端 ROC 虚高、景气底部 EY 虚高,要在行业中性后看。
  • 不择时持有:魔法公式讲究"长期持有整篮",频繁换手会被资本利得税和交易成本吃掉超额(#31)。

六、小结 + 下篇预告

基本面量化 ≠ 拍脑袋价值投资。魔法公式把"便宜 + 能赚"翻译成 EY、ROC 两个排名,相加成综合分,挑最低者——一个可复制、可回测的价值投资框架。

最后一篇 #47 讲AI 量化入门——用机器学习给因子打分,以及它的边界与风险(过拟合、未来函数、不可解释)。依赖因子特征工程(需求 R4),补全后即可实跑。

七、合规收尾

本文为量化方法教学,代码示例使用合成示意数据,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。

想用真实财报跑魔法公式?麦蕊智数的财报基本面数据补全后(需求 R1),同一套 EY/ROC 排名算法即可无缝接入;实时快照与历史 K 已稳定可用,免费版即可起步、证书即取即用。配套 Demo(含 main.py + RUN.md)见 麦蕊智数 www.mairuiapi.com 站内「API 文档」与「证书获取」(免费版 500 次/日,邮箱验证即领)。

标签: 股票行情API 量化投资从入门到精通
QQ 客服 3826425416 咨询时请提供证书号或订单号,便于快速处理
咨询