2. 金融数据基础
在金融研究数据集的完整生产链路中,数据基础决定了后续清洗、因子构建与回测的可靠性。很多项目失败并非模型不佳,而是对“数据是什么、从哪来、以什么频率和粒度存在”缺乏清晰认知。本节围绕四个核心问题展开:金融市场数据有哪些类型、常见数据源各自适合什么场景、频率与粒度如何区分、以及如何为研究目标选择正确的数据组合。
一、核心原理:金融数据的四种基本类型
金融数据并非单一形态,按信息性质可划分为四类,每类对应不同的采集与处理逻辑。
- 行情数据(Market Data):价格、成交量、买卖盘口、涨跌幅等,是量化研究最基础的数据。典型字段包括 open、high、low、close、volume、amount、vwap。
- 基本面数据(Fundamental Data):财务报表、盈利预告、估值指标(PE、PB、ROE),通常按季度或年度更新,存在披露滞后。
- 衍生与另类数据(Derivative & Alternative Data):期权隐含波动率、融资融券、舆情、卫星图像、供应链数据等,用于获取超额信息。
- 宏观与参考数据(Macro & Reference Data):利率、CPI、GDP、行业分类、成分股名单、交易日历,用于对齐与分组。
研究目标决定数据类型优先级:做日内择时以行情与盘口为主;做多因子选股则基本面、行情、参考数据缺一不可。
二、常见数据源对比与选择
不同数据源在覆盖范围、频率、成本与稳定性上差异显著。下表给出常见数据源的核心特征,便于按项目需求取舍。
| 数据源 | 典型覆盖 | 频率/粒度 | 适用场景 | 注意事项 |
|---|---|---|---|---|
| 交易所(SSE/SZSE) | A股行情、公告、成分 | Level-1/Level-2、逐笔 | 高频、合规研究 | 接入门槛高,需授权 |
| Wind | 股债汇商、宏观、研报 | 日/分钟/季度 | 机构级综合研究 | 商业授权,成本较高 |
| Tushare | A股行情、财务、指数 | 日/分钟/季度 | 个人量化、教学 | 积分权限,接口限流 |
| Yahoo Finance | 全球股票、ETF、指数 | 日/分钟 | 海外市场、快速验证 | 字段不稳定,需容错 |
实际项目中常采用“主源+备源”策略:以 Wind 或 Tushare 作为主数据源,Yahoo Finance 用于交叉校验或补充海外标的。接口调用需保留原始返回,便于回溯。
# Tushare 获取日线示例
import tushare as ts
pro = ts.pro_api('YOUR_')
df = pro.daily(ts_code='000001.SZ',
start_date='20240101',
end_date='20241231')
print(df[['trade_date','open','high','low','close','vol']].head())
三、频率与粒度:两个容易混淆的概念
频率指数据记录的时间间隔,如 tick、1分钟、日、周、季度;粒度指同一时间点上数据的细分程度,如全市场汇总、单只股票、单笔成交、单个账户。频率回答“多久一次”,粒度回答“细到什么程度”。
二者组合决定数据体量与计算方式。例如“日频+个股粒度”适合多因子选股;“分钟频+盘口粒度”适合日内交易;“季度频+行业粒度”适合宏观与行业轮动研究。频率提升会带来噪声、缺失与存储压力,粒度细化则增加对齐与聚合复杂度。
常见误区:认为频率越高越好。高频数据在缺乏撮合与延迟建模时,反而会引入前视偏差与过拟合。应按策略持有周期选择最低可用频率。
四、案例与复盘:从需求到数据选型
假设要构建一个A股月度调仓的多因子策略,数据选型流程如下:
- 确定频率与粒度:月度调仓,采用日频行情聚合为月频,个股粒度。
- 选择数据源:Tushare 获取日线与财务数据,交易所日历对齐交易日。
- 字段规划:close、volume、PE、PB、ROE、行业分类。
- 质量校验:检查停牌、涨跌停、财务披露滞后,避免前视偏差。
- 存储与版本:按日期分区保存原始与清洗后数据,保留数据版本。
复盘常见问题:一是混用不同数据源的复权方式,导致价格不可比;二是忽略财务数据的披露日期,用报告期直接对齐交易日期,造成未来信息泄露;三是频率选择过高,回测换手率与成本被低估。解决方式是统一复权口径、使用公告日而非报告期、并在回测中显式建模交易成本。
数据基础工作的价值在于“可复现”:明确类型、来源、频率与粒度,并记录每一步处理,才能让研究结论经得起检验。