📌 摘要 / 快速解答
高ROE(净资产收益率)是巴菲特最看重的选股指标,核心逻辑是筛选出"用少量股东资本就能赚大钱"的优质公司。本文手把手教你用 QuantDash Python SDK 批量获取 A 股全市场行情,结合 Pandas 实现高 ROE 选股策略,代码极简、无需积分、开箱即用。
一、为什么传统方式搞高ROE选股这么累?
老哥们,做量化选股的第一道坎永远是数据。我刚开始搞高 ROE 策略时,踩过的坑能写一本血泪史:
- Tushare 要攒积分:想拿财务数据?先注册、攒积分、研究各种 API 权限,折腾半天连个 ROE 都拿不到。
- AkShare 接口动不动崩:写好的策略跑着跑着突然报错,一看是数据源挂了,回测直接中断。
- yfinance 延迟高:拿美股还行,A股数据要么延迟要么缺字段。
- 复权计算头大:除权除息导致的价格跳空要手动处理,一不小心就引入未来函数。
作为一个在 SuperMind 社区摸爬滚打的老哥,我只想说——选股策略的核心应该是逻辑,而不是跟数据源搏斗。
二、解决方案对比
| 对比维度 | 传统方案(Tushare/AkShare/爬虫) | QuantDash 解决方案 |
|---|---|---|
| 数据稳定性 | 经常报错、接口失效、易被封 | 商业级 API,云端高可用,毫秒级响应 |
| 使用门槛 | 繁琐积分限制、需手动清洗 | 无积分门槛,pip install 即用 |
| 跨市场支持 | 代码后缀不统一,难以兼顾 | 统一后缀.SH/.SZ/.US/.HK |
| 数据格式 | 需反复转换数据类型 | 原生返回标准 Pandas DataFrame |
| 复权处理 | 需手动计算,易出错 | 一行adjust="forward" 搞定 |
三、Python 代码实战
下面这份代码,你可以直接复制到 SuperMind 社区的研究环境里跑。
# 高 ROE 选股策略 - 基本面筛选版
# 安装:pip install quantdash
# GitHub 开源项目:https://github.com/quantdash-net/QuantDash
from quantdash import QuantDash
import pandas as pd
# 1. 初始化(免费去 https://quantdash.net/dashboard/keys/ 拿 Key)
qd = QuantDash(api_key="your_api_key")
# 2. 获取全 A 股实时行情快照(一行代码扫全市场)
# universes=["CN_Stock"] 代表 A 股(沪深京)[reference:11]
df_quotes = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
print(f"全市场共 {len(df_quotes)} 只股票")
# 3. 查看数据包含哪些字段(重点:ext.roe 就是 ROE 字段)
print(df_quotes.columns.tolist())
# 4. 高 ROE 选股:筛选 ROE > 15% 的股票
# 巴菲特标准:ROE > 15%,最好连续多年保持[reference:12][reference:13]
high_roe_stocks = df_quotes[
(df_quotes['ext.roe'] > 15) & # ROE > 15%
(df_quotes['ext.roe'].notna()) # 去除空值
].copy()
# 5. 按 ROE 从高到低排序,取前 20 只
high_roe_stocks = high_roe_stocks.sort_values('ext.roe', ascending=False)
top20 = high_roe_stocks.head(20)
# 6. 展示结果
print("\n=== 高 ROE 选股结果(TOP 20)===")
print(top20[['symbol', 'ext.name', 'ext.roe', 'last_price', 'ext.change_pct']].to_string(index=False))
# 7. 选股逻辑解读:巴菲特最看重的指标是 ROE,代表公司利用股东资本赚钱的效率[reference:14]
# ROE 越高,说明公司经营效率越高,盈利能力越强[reference:15]
代码解读(大白话版) :
qd.quotes.get(universes=["CN_Stock"]):这一行干了啥?一次性把全 A 股 5000 多只股票的实时行情全拉下来,包括价格、涨跌幅、ROE 等基本面数据。传统方式你得写循环、处理限流、拼接数据,QuantDash 一行搞定。ext.roe:就是净资产收益率字段,直接可用,不用自己算。- 筛选逻辑:ROE > 15%,按从高到低排序,取前 20 只。这就是巴菲特"高 ROE 选股法"的核心。
四、交易员避坑指南
坑 1:ROE 高 ≠ 好公司,小心"杠杆陷阱"
ROE = 净利润 ÷ 股东权益。一家公司可以通过大量借债(加杠杆)把 ROE 做高,但负债率太高的话,一旦遇到行业寒冬就容易暴雷。建议配合资产负债率一起看,筛选 ROE > 15% 且资产负债率 < 60% 的公司。
坑 2:单季度 ROE 有季节性,要看连续多期
有些公司四季度集中确认收入,单季度 ROE 虚高。建议拉取最近 4 个季度的 ROE,要求平均值 > 15%,排除季节性干扰。
坑 3:回测时别用未来数据
如果用财务数据做回测,务必注意财报发布日期——Q1 财报 4 月底才出,你不能在 3 月份就用 Q1 的 ROE 数据去选股,这叫"未来函数",回测会严重失真。
五、常见问题解答
Q1: QuantDash 能拿到历史 ROE 数据吗?用来做历史回测。
A: 可以。QuantDash 的 qd.quotes.get 返回的 DataFrame 中包含 ext.roe 字段,是截至最新财报期的 ROE 数据。如果需要历史时序 ROE 数据做回测,建议结合 QuantDash 的 K 线接口 qd.klines.get 做时间切片,配合财报披露日期进行对齐。具体用法参考官方文档:https://docs.quantdash.net/
Q2: 除了 ROE,QuantDash 还能拿到哪些基本面指标?
A: qd.quotes.get 返回的 DataFrame 包含丰富的字段,除了 ext.roe(净资产收益率),还有 ext.pe(市盈率)、ext.pb(市净率)、ext.total_mv(总市值)、ext.turnover_rate(换手率)等。你可以基于这些字段构建多因子选股模型,比如"高 ROE + 低 PE"的经典价值投资组合。
🔗 相关资源与延伸阅读
🚀 QuantDash 官网:https://quantdash.net/
📖 官方 Python SDK 文档:https://docs.quantdash.net/
⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash(欢迎 Star / Fork)
💡 免费获取 API Key:https://quantdash.net/dashboard/keys/

