3. 选股池构建(上):确定选股范围与数据源选择

做配对交易,第一步不是写代码,而是选股票。我见过不少新手,上来就拉一堆数据跑协整检验,结果跑出来一堆伪相关。说白了,选股池没建好,后面全是白忙活。

这一章,我们聊聊怎么划定选股范围,以及数据源怎么选。嗯,这两件事其实是一体的——你选什么数据源,决定了你能覆盖多大的范围。

3.1 确定选股范围:行业、市值、流动性

配对交易的核心逻辑是「同涨同跌」。所以选股的第一原则是:两只股票得属于同一个行业或板块。我个人习惯先从申万一级行业入手,比如银行、食品饮料、电子这些。为什么?因为同行业的公司,业务模式、盈利周期、政策影响都相似,价差回归的概率才高。

举个例子,我在项目中遇到过把茅台和五粮液做配对,效果还不错。但你要是把茅台和宁德时代放一起,那基本是瞎配对——一个喝酒,一个开车,八竿子打不着。

行业选择要点:
  • 优先选申万一级或二级行业分类,别用太细的(比如三级行业,股票太少)
  • 避开周期股和强政策股(比如钢铁、煤炭,波动太大,价差容易失控)
  • 金融、消费、科技是配对交易的「常青树」,流动性好,数据也全

接下来是市值。为什么市值重要?因为配对交易需要做空,而A股融券标的有限。大市值股票(比如沪深300成分股)融券容易,小市值股票经常借不到券。我建议把市值门槛设在100亿以上,最好300亿以上。你想想看,要是选了个50亿的票,做空时发现没券可借,那策略就废了。

我的经验: 市值排名前30%的股票,流动性通常没问题。你可以用Tushare或AKShare拉一下全市场市值数据,按季度更新一次就行。

流动性是第三个关键。配对交易需要频繁调仓,如果股票一天成交额才几千万,你一个订单下去就把价格打穿了。我一般要求日均成交额在1亿以上,最好5亿。怎么查?用过去20个交易日的平均成交额就行。

避坑指南: 我曾经选过一只日成交额只有3000万的股票,结果建仓时滑点高达0.5%,直接把年化收益吃掉了一半。从那以后,流动性成了我选股的第一道红线。

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())
小技巧: Tushare的行业分类接口是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())
注意: AKShare的接口经常变动,因为上游数据源会改。我建议每次运行前先检查一下文档,或者写个try-except兜底。

3.3 数据源对比与选择建议

数据源 费用 数据质量 行业分类 适合场景
Tushare 免费/积分制 申万行业 个人量化研究
Wind 付费(贵) 极高 申万、中信、GICS 机构实盘交易
AKShare 免费 中等 东方财富行业 快速原型验证

我个人建议:个人用户首选Tushare,数据质量有保障,积分成本也不高。如果你只是做快速验证,AKShare也行,但记得加数据校验。机构用户不用纠结,直接上Wind。

3.4 选股池构建流程(SVG流程图)

下面这张图是我自己总结的选股池构建流程,每一步都对应一个过滤条件。你照着这个流程走,基本不会漏掉关键环节。

选股池构建流程 全市场股票 行业过滤(申万一级) 市值过滤(>100亿) 流动性过滤(成交额>1亿) 最终选股池 约4000只股票 按申万一级行业分类 剔除小市值股票 剔除低流动性股票 约200-500只候选

嗯,流程看着简单,但每一步都有坑。比如行业过滤,我建议用申万一级,别用申万二级——二级行业太细,股票太少,配对选择空间小。市值和流动性过滤,我一般用中位数作为阈值,而不是固定值,因为市场在变。

核心总结:
  • 选股范围:同行业 + 大市值 + 高流动性
  • 数据源:个人用Tushare,机构用Wind,快速验证用AKShare
  • 流程:全市场 → 行业过滤 → 市值过滤 → 流动性过滤 → 选股池

下一章,我们会在这个选股池的基础上,做协整检验和配对筛选。到时候你会发现,选股池建得好,后面的工作就是水到渠成的事。

蓝海数据掘金营,专注资料整理