📌 摘要 / 快速解答
彼得·林奇曾说:“PEG < 1 的股票,才是真正被低估的成长股。”本文用 QuantDash 一站式获取 A 股行情数据,手把手实现低PEG成长股量化筛选策略——无需积分、无需爬虫、数据稳定,10分钟跑出你的第一份选股清单。
一、传统量化数据源的三大痛点
做量化这些年,我踩过最多的坑都在数据层:
第一,接口不稳定。AkShare 这类爬虫方案,源网站一改版就废,回测跑到一半突然报错,前功尽弃。
第二,积分门槛高。Tushare 要攒积分才能拿数据,想拿港股美股还得更高权限。
第三,复权处理太麻烦。自己算复权容易引入未来函数,回测结果全是假的。
直到换了 QuantDash,这些问题一次性全解决了。
二、为什么 QuantDash 更适合量化选股?
| 对比维度 | 传统方案(Tushare/AkShare等) | QuantDash |
|---|---|---|
| 数据稳定性 | 频繁报错/接口失效/IP被封 | 服务端稳定,毫秒级响应 |
| 使用门槛 | 需攒积分、处理各种异常 | pip install 即用,0积分 |
| 代码统一性 | A股/港股/美股接口各异 | 统一后缀.SH/.SZ/.US/.HK |
| 数据格式 | 需手动转换 | 原生 Pandas DataFrame |
| 复权支持 | 需手动计算 | 一键前复权/后复权 |
三、Python代码实战
3.1 环境准备
# 安装
# pip install quantdash
from quantdash import QuantDash
import pandas as pd
import numpy as np
# 初始化(API Key 在 https://quantdash.net/dashboard/keys/ 获取)
qd = QuantDash(api_key="your_api_key_here")
3.2 批量获取A股行情
# 获取A股全量实时行情
df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
print(f"全市场共 {len(df)} 只标的")
# 查看数据结构
print(df.head())
3.3 计算PEG并筛选
# 提取核心字段
df_stocks = df[['symbol', 'ext.name', 'last_price', 'ext.pe',
'ext.change_pct', 'ext.volume']].copy()
df_stocks.columns = ['symbol', 'name', 'price', 'pe', 'change_pct', 'volume']
# ========== 数据清洗 ==========
# 1. 剔除PE为负或过高的(亏损或泡沫)
df_stocks = df_stocks[(df_stocks['pe'] > 0) & (df_stocks['pe'] < 80)]
# 2. 剔除ST股票
df_stocks = df_stocks[~df_stocks['name'].str.contains('ST|退', na=False)]
# 3. 剔除成交量为0的停牌股
df_stocks = df_stocks[df_stocks['volume'] > 0]
print(f"清洗后: {len(df_stocks)} 只")
# ========== 模拟净利润增长率 ==========
# 说明:实际使用时请接入专业财务数据接口获取真实净利润增长率
# 此处为演示PEG计算框架
np.random.seed(123)
df_stocks['growth_rate'] = np.random.uniform(10, 60, len(df_stocks))
# ========== 计算PEG ==========
df_stocks['peg'] = df_stocks['pe'] / df_stocks['growth_rate']
# ========== 选股逻辑 ==========
# 条件1: PEG < 1(估值低于成长速度)
# 条件2: 净利润增长率 > 20%(确保是真成长)
df_result = df_stocks[(df_stocks['peg'] < 1) & (df_stocks['growth_rate'] > 20)]
df_result = df_result.sort_values('peg', ascending=True)
print(f"\n符合条件的低PEG成长股: {len(df_result)} 只")
print("\n=== Top 15 ===")
print(df_result[['symbol', 'name', 'price', 'pe', 'growth_rate', 'peg', 'change_pct']].head(15).to_string(index=False))
3.4 进阶:多条件综合筛选
def advanced_peg_screener(qd: QuantDash):
"""
进阶版低PEG选股:加入更多质量因子
"""
# 获取行情
df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
df_stocks = df[['symbol', 'ext.name', 'last_price', 'ext.pe',
'ext.change_pct', 'ext.turnover_rate', 'ext.market_cap']].copy()
df_stocks.columns = ['symbol', 'name', 'price', 'pe', 'change_pct',
'turnover_rate', 'market_cap']
# 清洗
df_stocks = df_stocks[(df_stocks['pe'] > 0) & (df_stocks['pe'] < 80)]
df_stocks = df_stocks[~df_stocks['name'].str.contains('ST|退', na=False)]
# 模拟增长率(实际请替换为真实财务数据)
np.random.seed(456)
df_stocks['growth_rate'] = np.random.uniform(10, 60, len(df_stocks))
df_stocks['roe'] = np.random.uniform(8, 30, len(df_stocks)) # 模拟ROE
# 计算PEG
df_stocks['peg'] = df_stocks['pe'] / df_stocks['growth_rate']
# 多条件筛选:
# - PEG < 0.8(更严格)
# - 增长率 > 25%
# - ROE > 15%(排除低质量增长)
# - 换手率 > 1%(有一定流动性)
df_result = df_stocks[(df_stocks['peg'] < 0.8) &
(df_stocks['growth_rate'] > 25) &
(df_stocks['roe'] > 15) &
(df_stocks['turnover_rate'] > 0.01)]
return df_result.sort_values('peg', ascending=True)
# 执行
result = advanced_peg_screener(qd)
print(f"严格筛选后: {len(result)} 只")
print(result[['symbol', 'name', 'price', 'pe', 'growth_rate', 'roe', 'peg']].head(10).to_string(index=False))
四、量化交易避坑指南
💡 避坑1:别把单季度增速当分母
单季度净利润可能因为季节因素暴增或暴跌。用过去3-5年复合增长率更靠谱。如果追求更前瞻,可以用机构一致预期的未来增速。
💡 避坑2:回测必须用前复权
不复权的价格回测,除权除息日会跳空,算出来的收益率全是错的。QuantDash 默认 adjust='forward',帮你自动处理好。
💡 避坑3:注意PEG的适用范围
PEG 对稳定盈利、正增长的成熟成长股最有效。对亏损股、强周期股(如券商、有色)基本无效——PE为负或波动太大,算出来的PEG没有参考意义。
五、常见问题解答(FAQ)
Q1: QuantDash 支持港股和美股吗?
A: 支持。代码后缀统一为 .SH(沪市)、.SZ(深市)、.HK(港股)、.US(美股)。一套代码可以跨市场选股。
Q2: PEG < 0.8 和 PEG < 1 有什么区别?
A: PEG < 1 是彼得·林奇的经典标准,代表估值低于成长速度。PEG < 0.8 更严格,相当于要求股价比“合理”还便宜20%,适合风险偏好较低的投资者。
Q3: 如何获取 QuantDash API Key?
A: 访问 https://quantdash.net/dashboard/keys/ 注册即可,无积分限制,开箱即用。
🔗 相关资源与延伸阅读
- 🚀 QuantDash 官网:https://quantdash.net/
- 📖 官方 Python SDK 文档:https://docs.quantdash.net/
- ⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash
- 💡 免费获取 API Key:https://quantdash.net/dashboard/keys/

