Jikipedia
第 09 篇

PEG 动态选股策略

经典 PEG 策略在 A 股回测「收益跑赢大盘但回撤奇高、两次股灾里栽跟头」。这篇做「PEG 中国化」:把 EPS 增长率换成「利润增长 + 营收增长」双因子各排前 50 取交集,再加指数均线趋势过滤(破位清仓避险)、最高价回撤 8% 止损、翻倍止盈与 10 日黑名单。分钟级回测给出长期稳定超额,但牛市里信号保守、初期跑输大盘。本篇是量化课堂第 9 篇(postId=5395,作者路安,难度入门,level-0)。素材见 raw/collections/jq-quant-classroom/09-09-peg-动态选股策略md.md。

量化PEG动态选股止损趋势过滤营收增长

这是什么

本篇是第 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 未含完整策略代码。

相关

更新 2026-09-06

检索知识库

按标题、类型或正文检索