【量化投资从入门到精通 #46】价值投资也能量化?Greenblatt魔法公式,挑便宜又最能赚的公司 📅 发布时间:2026/9/5 9:53:51 👁 浏览次数: 专题阶。前几篇用了不少因子这一篇回到最朴素的价值投资灵魂一问怎么用财报挑出又便宜、又能赚的公司Greenblatt 的魔法公式把这件事压缩成两个排名。一、这个方法解决什么投资问题价值投资听起来很艺术——读财报、懂生意、等低估。但 Joel Greenblatt 在《股市稳赚》里把它量化成两个数字这家公司资本回报率高不高赚钱效率高不高买它贵不贵收益率高不高两个都好的公司长期跑赢市场。问题是怎么同时挑出两者都好的答案是——分别排名、再加起来。二、核心思想两个排名拧成一个分魔法公式只依赖两张表的数据指标公式越好收益率 EYEBIT ÷ 企业价值越高越便宜资本回报率 ROCEBIT ÷净营运资本 净固定资产越高越能赚做法是对所有股票按EY 从高到低排名第 1 名最便宜按ROC 从高到低排名第 1 名最能赚两个排名相加 魔法综合分选综合分最低的最便宜 ∩ 最能赚。为什么相加而不是相乘排名相加对极端值更稳健且天然做了跨指标中性——不会因为某个指标量纲大就一家独大。三、实操演示合成示意财报200 只固定种子算 EY/ROC分别排名相加挑综合分最低的前 5。importnumpyasnp,pandasaspd rngnp.random.default_rng(46082026)N200ebitrng.uniform(5,80,N);evrng.uniform(40,600,N)nwcrng.uniform(10,150,N);pperng.uniform(20,200,N)dfpd.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(ascendingFalse)df[rank_ROC]df[ROC].rank(ascendingFalse)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))运行结果合成示意N200综合分最低的前 5EYROCrank_EYrank_ROCmagic_score1.3380.547313160.7610.646810181.4710.512216181.0380.493417210.4980.624191130数据需求标注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补全后即可实跑。免责声明本文为量化方法教学代码示例使用合成示意数据不构成投资建议不承诺收益。投资有风险入市需谨慎。