第三章 因子分类与数据获取:基本面因子、技术面因子、另类因子、常见数据源介绍
做多因子模型,说白了就是找一堆能解释股票涨跌的「特征」。但特征从哪来?怎么分?数据又去哪搞?
这一章,我带你把这些基础问题彻底理清楚。嗯,先看一张图,帮你建立整体认知。
3.1 基本面因子:最传统的「硬数据」
基本面因子,就是看一家公司到底值多少钱、赚不赚钱。我刚开始做量化时,觉得技术面才是王道,后来被市场教育了——没有基本面支撑的因子,回测再漂亮也是空中楼阁。
常见的几类:
- 估值类:市盈率(PE)、市净率(PB)、市销率(PS)。说白了就是「这股票贵不贵」。
- 盈利类:ROE(净资产收益率)、毛利率、净利率。看公司赚钱能力。
- 成长类:营收增速、净利润增速。看公司是不是在长大。
- 财务健康类:资产负债率、流动比率、现金流。别踩到财务造假的雷。
我的经验: 做A股多因子,PE和ROE是必选因子。但要注意——银行股的PE天然低,不能和科技股放一起比。我习惯先做行业中性化处理,再计算因子值。
3.2 技术面因子:市场行为的「痕迹」
技术面因子,说白了就是从价格和成交量里挖信号。你想想看,K线图里其实藏着很多信息,只是需要量化手段把它提取出来。
我常用的几类:
- 动量因子:过去N个月的累计收益率。强者恒强?还是物极必反?
- 反转因子:短期涨多了要跌,跌多了要涨。A股里短期反转效应挺明显的。
- 量价因子:成交量变化、换手率、资金流向。量在价先,这句话不是白说的。
- 波动率因子:历史波动率、振幅。低波动股票往往有超额收益,这个现象叫「低波动异象」。
避坑指南: 我曾经在回测中用了「未来函数」——用当天的收盘价计算当天的因子,然后预测当天的收益。结果回测曲线漂亮得像假的一样。嗯,确实是假的。计算技术因子时,一定要确保只用历史数据。
3.3 另类因子:非传统数据的「金矿」
另类因子,就是那些不在传统财务报表里的数据。这几年越来越火,因为传统因子已经被挖烂了,超额收益越来越薄。
几个方向:
- 舆情因子:新闻情感分析、股吧评论热度。散户情绪高涨时,往往离顶部不远了。
- 供应链数据:上下游企业的订单、库存变化。比如苹果的供应商财报好,苹果大概率也不差。
- 搜索热度:百度指数、微信指数。搜索量暴增,说明关注度来了。
- 卫星图像:停车场车位数、工厂烟囱冒烟量。这个门槛高,但信号价值极大。
我的看法: 另类因子最大的问题是数据清洗成本高。我做过一个舆情因子项目,光清洗无效评论就花了两周。但一旦跑通,收益确实可观——因为用的人少,因子还没失效。
3.4 常见数据源:去哪搞数据?
数据是量化研究的「米」。没米下不了锅。我整理了几个主流数据源,各有优劣。
| 数据源 | 特点 | 费用 | 适合场景 |
|---|---|---|---|
| Tushare | 开源、社区活跃、接口丰富 | 基础免费,高级付费 | 个人研究、小规模回测 |
| Wind | 机构标准、数据质量高、覆盖全 | 年费数万 | 机构、专业量化团队 |
| 聚宽 | 自带回测平台、因子库、策略模板 | 免费版够用 | 快速原型、策略验证 |
| 东方财富 Choice | 性价比高、数据较全 | 年费几千 | 中小团队、个人进阶 |
我个人习惯: 研究阶段用 Tushare 或聚宽,免费且够用。真要跑实盘了,再上 Wind 或 Choice,数据质量更稳定。别一开始就砸钱买 Wind,万一策略不行,钱就白花了。
3.5 实战:用 Tushare 拉取因子数据
光说不练假把式。我写个简单示例,用 Tushare 拉取几只股票的 PE 和 ROE 数据。
import tushare as ts
import pandas as pd
# 设置 token(去 tushare.pro 注册获取)
ts.set_token('你的token')
pro = ts.pro_api()
# 获取股票列表(沪深300成分股)
hs300 = pro.index_weight(index_code='000300.SH',
trade_date='20250110')
stocks = hs300['con_code'].tolist()[:5] # 取前5只演示
# 拉取基本面数据
data_list = []
for code in stocks:
df = pro.daily_basic(ts_code=code,
trade_date='20250110',
fields='ts_code,pe,roe')
data_list.append(df)
result = pd.concat(data_list)
print(result)
注意: Tushare 的免费接口有频率限制,每分钟最多 200 次。我建议一次别拉太多股票,分批处理。另外,记得把 token 存成环境变量,别硬编码在代码里——我以前吃过这个亏,代码传到 GitHub 上,token 被人盗用了。
3.6 数据获取的常见坑
做数据获取这几年,我踩过的坑能写一本书。挑几个最要命的说说:
- 未来数据:回测时用了未来才知道的数据。比如用「当天收盘价」计算因子,然后预测「当天涨跌」——这等于作弊。
- 幸存者偏差:只用了现在还活着的股票。退市的、ST的都被忽略了,回测结果虚高。
- 复权问题:股票分红送股后,价格会跳空。不用复权数据,技术因子全是错的。
- 数据对齐:不同数据源的日期格式、字段名可能不一样。合并时一定要做对齐检查。
我曾经犯过的错: 有一次做回测,用了 Tushare 的日线数据,但没检查是否有停牌日。结果某只股票停牌一个月,我的因子在那段时间全是 NaN,回测直接报错。后来我养成了习惯——拿到数据先做缺失值检查,再填充或剔除。
好了,这一章的内容就到这。因子分类和数据获取是量化研究的基石,基础打牢了,后面构建模型才不慌。记住:数据质量决定策略上限,别在数据上偷懒。
公众号:蓝海资料掘金营,微信deep3321