3. 选股池构建(上):确定选股范围与数据源选择
做配对交易,第一步不是写代码,而是选股票。我见过不少新手,上来就拉一堆数据跑协整检验,结果跑出来一堆伪相关。说白了,选股池没建好,后面全是白忙活。
这一章,我们聊聊怎么划定选股范围,以及数据源怎么选。嗯,这两件事其实是一体的——你选什么数据源,决定了你能覆盖多大的范围。
3.1 确定选股范围:行业、市值、流动性
配对交易的核心逻辑是「同涨同跌」。所以选股的第一原则是:两只股票得属于同一个行业或板块。我个人习惯先从申万一级行业入手,比如银行、食品饮料、电子这些。为什么?因为同行业的公司,业务模式、盈利周期、政策影响都相似,价差回归的概率才高。
举个例子,我在项目中遇到过把茅台和五粮液做配对,效果还不错。但你要是把茅台和宁德时代放一起,那基本是瞎配对——一个喝酒,一个开车,八竿子打不着。
- 优先选申万一级或二级行业分类,别用太细的(比如三级行业,股票太少)
- 避开周期股和强政策股(比如钢铁、煤炭,波动太大,价差容易失控)
- 金融、消费、科技是配对交易的「常青树」,流动性好,数据也全
接下来是市值。为什么市值重要?因为配对交易需要做空,而A股融券标的有限。大市值股票(比如沪深300成分股)融券容易,小市值股票经常借不到券。我建议把市值门槛设在100亿以上,最好300亿以上。你想想看,要是选了个50亿的票,做空时发现没券可借,那策略就废了。
流动性是第三个关键。配对交易需要频繁调仓,如果股票一天成交额才几千万,你一个订单下去就把价格打穿了。我一般要求日均成交额在1亿以上,最好5亿。怎么查?用过去20个交易日的平均成交额就行。
3.2 数据源选择:Tushare、Wind、AKShare
数据源这块,我踩过不少坑。市面上主流的有三个:Tushare、Wind、AKShare。我一个个说。
3.2.1 Tushare(推荐个人用户)
Tushare是我用得最多的。免费版能拿到日线、财务数据、行业分类,基本够用。积分制有点烦,但注册后送100分,够你跑几个月了。我个人习惯用Tushare Pro版,数据质量比免费版高不少,尤其是复权数据,不会出现「除权日跳空」的问题。
# 安装
pip install tushare
# 获取股票日线数据
import tushare as ts
ts.set_token('你的token')
pro = ts.pro_api()
# 获取沪深300成分股
hs300 = pro.index_weight(index_code='000300.SH', start_date='20240101', end_date='20240401')
print(hs300.head())
stock_basic,可以拿到申万行业。我一般先拉全市场股票,再按行业筛选,最后用市值和成交额过滤。
3.2.2 Wind(推荐机构用户)
Wind是机构标配,数据全、更新快,但贵。一年几万块,个人用户基本用不起。如果你在券商或私募工作,那Wind是首选。它的API(WindPy)可以直接在Python里调用,非常方便。
# Wind Python接口示例
from WindPy import w
w.start()
# 获取贵州茅台日线数据
data = w.wsd("600519.SH", "close, volume", "2024-01-01", "2024-04-01", "")
print(data.Data)
Wind的优势在于:数据清洗做得很好,基本不用自己处理缺失值。但说实话,对于个人做配对交易,Tushare完全够用,没必要花那个冤枉钱。
3.2.3 AKShare(推荐开源爱好者)
AKShare是纯开源免费的,数据源来自东方财富、新浪财经等。优点是免费、接口丰富,缺点是数据质量参差不齐。我遇到过几次数据缺失或异常值,需要自己写清洗逻辑。
# 安装
pip install akshare
# 获取A股实时行情
import akshare as ak
stock_zh_a_spot = ak.stock_zh_a_spot_em()
print(stock_zh_a_spot.head())
3.3 数据源对比与选择建议
| 数据源 | 费用 | 数据质量 | 行业分类 | 适合场景 |
|---|---|---|---|---|
| Tushare | 免费/积分制 | 高 | 申万行业 | 个人量化研究 |
| Wind | 付费(贵) | 极高 | 申万、中信、GICS | 机构实盘交易 |
| AKShare | 免费 | 中等 | 东方财富行业 | 快速原型验证 |
我个人建议:个人用户首选Tushare,数据质量有保障,积分成本也不高。如果你只是做快速验证,AKShare也行,但记得加数据校验。机构用户不用纠结,直接上Wind。
3.4 选股池构建流程(SVG流程图)
下面这张图是我自己总结的选股池构建流程,每一步都对应一个过滤条件。你照着这个流程走,基本不会漏掉关键环节。
嗯,流程看着简单,但每一步都有坑。比如行业过滤,我建议用申万一级,别用申万二级——二级行业太细,股票太少,配对选择空间小。市值和流动性过滤,我一般用中位数作为阈值,而不是固定值,因为市场在变。
- 选股范围:同行业 + 大市值 + 高流动性
- 数据源:个人用Tushare,机构用Wind,快速验证用AKShare
- 流程:全市场 → 行业过滤 → 市值过滤 → 流动性过滤 → 选股池
下一章,我们会在这个选股池的基础上,做协整检验和配对筛选。到时候你会发现,选股池建得好,后面的工作就是水到渠成的事。