第 09 篇
PEG 动态选股策略
经典 PEG 策略在 A 股回测「收益跑赢大盘但回撤奇高、两次股灾里栽跟头」。这篇做「PEG 中国化」:把 EPS 增长率换成「利润增长 + 营收增长」双因子各排前 50 取交集,再加指数均线趋势过滤(破位清仓避险)、最高价回撤 8% 止损、翻倍止盈与 10 日黑名单。分钟级回测给出长期稳定超额,但牛市里信号保守、初期跑输大盘。本篇是量化课堂第 9 篇(postId=5395,作者路安,难度入门,level-0)。素材见 raw/collections/jq-quant-classroom/09-09-peg-动态选股策略md.md。
这是什么
本篇是第 7 篇 PEG 估值的续作与改进:先承认「经典 PEG 写成代码就不好使」,再用一个比喻讲清 PEG 是什么,随后给出三层改进——(1) 用利润增长与营收增长两个因子替换 EPS 增长率做双排名取交集;(2) 引入指数均线做大盘择时,跌势清仓、买入国债指数避险;(3) 加最高价止损 8%、翻倍止盈、卖出后 10 个交易日黑名单。全篇核心:「PEG 偏基本面,关键在判断盈利增长能不能持续;EPS 数据一旦失效,策略就无所适从」。
核心要点
PEG 是什么(用猪肉铺故事讲)
- 老李 50 万买下老张年赚 10 万的肉铺 → PE = 50/10 = 5 倍。
- 生意在王寡妇帮助下次年赚 15 万 → G =(15−10)/10 = 50%。
- PEG = PE ÷ G(G 取百分数 50)= 5/50 = 0.1。
- 说白了:PE = 你为每年一块钱盈利付几块;PEG = 把「付几块」再除以「盈利一年长多快」,衡量「为成长付的价贵不贵」。
经典 PEG 为什么失效(中国化动机)
- 林奇当年的指导思想:定价合理的公司市盈率 = 收益增长率,故以 PEG=1 为线——<1 留位备选、>1 剔除。
- 但那套经验来自几十年前的美国。照搬到 A 股回测:收益虽跑赢大盘,但波动巨大、最大回撤奇高,并在中国股市两次股灾面前「完美栽倒」。
- 研究结论:数据的时效性 + 合理的止损调仓对 PEG 回测影响非常大;PEG 的关键是判断公司盈利增长,EPS 数据一旦失效策略就无所适从。
改进一:增长因子换血(利润 + 营收双排名)
- 把 EPS 增长率换成两个因子:利润增长(Profit Growth Rate)与销售/营收增长(Revenue Growth Rate)。
- 股票池 = 上证指数 + 深证成指的全部成分股。
- 第一次排名:按 PE ÷ 利润增长率升序(商越小越靠前);第二次:按 PE ÷ 营收增长率升序。
- 各取前 50 名,求交集生成备选池——「成绩好且体育好」的股票才进(正文用烤鸭选料、三好生两个比喻讲筛选思路)。
改进二:指数均线趋势过滤(避险)
- 观察上证综指、深证成指、沪深 300 三个指数(「基本覆盖股市绝大部分股票」)前一月收盘价均值 MA。
- 当某日收盘价 < MA 均值 → 判断跌势显现 → 清仓,买入国债指数,赚无风险收益。
- 理由:熊市里「甭管 PEG、APT、KNN 还是 Fama-French,策略统统不好使」,清仓避险最稳。
改进三:止盈止损与调仓制度
- 最高价名单制度(止损):按分钟记录每只持仓的持有期最高价;从最高价回撤超 8% → 止损卖出。(正文用小张减肥的 5% 反弹作类比:和「开始减肥后的最低体重」比,不是和起始比。)
- 止盈:当前价超过成本价 100%(翻倍)→ 止盈卖出。
- 黑名单制度:止盈/止损卖出的股票进黑名单,10 个交易日内不再买入。
- 参数都可经
set_para()由用户自定义。
结果与定位
- 分钟级回测:最大优势是长期、稳定的超额收益;能在股指震荡中动态筛股、止损调仓。
- 短板:信号与交易条件确认偏保守,牛市来临时有滞后——策略初期收益会落后大盘。
- 定位:改进后的 PEG 仍是偏基本面的动态选股策略,作者称其为「PEG 的中国化/沪深化」。
机制 / 论证
- 为什么换增长因子:EPS 增长率依赖的 EPS 数据时效性差、失效时策略没方向;利润增长 + 营收增长两个因子从「赚得多」和「卖得多」两面刻画增长,比单一 EPS 口径更稳。
- 为什么双排名取交集而不是合成一个分:两个排名各取前 50 再交集,等于要求股票「利润增长被低估」且「营收增长被低估」同时成立——用交集做 AND 过滤,降低单一因子误判。
- 为什么要加趋势过滤:基本面再好的股票在系统性下跌里也扛不住(「血淋淋的经验」);用指数(而非个股)均线判断大盘环境,环境差就整体清仓,把选股(选什么)和择时(何时做)分开处理。
- 为什么止损按「最高价回撤 8%」而非成本价:最高价反映了持有期内的盈利峰值,从峰值回撤 8% 是在「利润回吐」时离场,比成本止损更早保护浮盈(正文用减肥反弹类比说明参照点不是起点)。
可操作
- 策略参数(保留原文):
- 双因子:PE ÷ 利润增长率、PE ÷ 营收增长率,各升序取前 50,交集成备选池。
- 股票池:上证指数 + 深证成指成分股。
- 择时:沪深 300 / 上证综指 / 深证成指前一个月收盘均值 MA;收盘 < MA → 清仓并买国债指数。
- 止损:持有期最高价回撤 >8% 卖出(分钟级记录最高价)。
- 止盈:现价 > 成本价 100% 卖出。
- 黑名单:止盈/止损卖出后 10 个交易日内不再买入。
- 参数经
set_para()自定义。
- 平台 API:取 PE/利润/营收等财务字段用
get_fundamentals(见 聚宽行情与财务数据获取 API);指数均线 MA 用行情取数;分钟级记录最高价依赖 run_daily/分钟频率(细节在附图与官方源码,raw 未贴完整代码)[需要验证]。
术语
- PEG:市盈率 ÷ 盈利增长率,衡量「为成长付的价」。
- 动态 PEG / PEG 中国化:正文对经典 PEG 的 A 股化改造,非标准术语。
- 无风险收益:此处指清仓后买入国债指数获得的收益。
- 黑名单:卖出后一段时间内禁止再买的股票清单。
- set_para():正文提到的用户自定义参数入口(聚宽函数,细节 [需要验证])。
不确定 / 待验证
- 回测只有定性描述(「长期稳定超额」「牛市滞后」),无具体收益/回撤/超额数字,附图含曲线 [需要验证]。
- 「前 50 名」「8%」「100%」「10 日」等参数是作者调试出的值,未给敏感性分析;正文承认这些可通过 set_para 调整。
- 「PE ÷ 利润增长率」用的是 PE 还是 PEG 变形、利润/营收增长的口径(TTM?同比?),正文未精确说明 [需要验证]。
- 黑名单「10 个交易日不再买入」与 8%/100% 阈值在 2017-03 上线语境,如今是否适用需重测。
- 分钟级实现(最高价按分钟记录、指数均线判断)的代码在附图,raw 未含完整策略代码。
相关
- PEG 估值(市盈率 ÷ 盈利增长率) — PEG 估值系统页(本篇的改进版与 07 篇入门)
- 彼得·林奇的成功投资(PEG 估值入门) — 经典 PEG 入门与沪深 300 版
- 利润表(读懂一段时间赚了多少钱) — 利润/营收字段口径:可持续与一次性
- 聚宽行情与财务数据获取 API — get_fundamentals 取 PE 与增长字段
- 聚宽量化课堂(低频量化策略 43 篇) — 量化课堂 43 篇总览
更新 2026-09-06