2.3 数据源详解:Wind/TuShare/优矿,从行情到财务

一、引言:数据是量化研究的基石

“Garbage in, garbage out.” 在量化投资中,错误、不洁或带有偏差的数据,会直接导致研究结论的失败和实盘的亏损。本节旨在系统梳理A股因子研究的主流数据源,帮助你根据研究阶段、团队规模和预算,搭建一个可靠、高效、可持续的数据基础设施。我们强调流程的严谨性远胜于单一工具的选择。

二、数据全景图:因子研究需要什么?

一个完整的因子投研流程需要以下数据,并需严格处理时间对齐生存偏差

数据类型 具体内容 关键用途 核心陷阱
行情与交易数据 日/分钟级:开盘价、最高价、最低价、收盘价、成交量、成交额、复权因子、涨跌停状态、停牌状态。 计算技术指标、收益率、换手率、波动率因子。 前复权与后复权使用错误;未使用调整后收盘价计算收益;忽略涨跌停、停牌导致的不可交易。
财务数据 利润表、资产负债表、现金流量表(季报、中报、年报);财务指标(Wind、国证等预计算)。 计算价值、质量、成长等基本面因子。 发布日期滞后:财报截止日(如12月31日)与实际公告日(如次年4月底)的混淆,造成“未来函数”。
资本结构数据 股本变动(送转股、增发、配股)、流通股、自由流通股本。 计算市值、构建准确的投资组合权重。 使用总市值而非自由流通市值;未及时处理股本变动。
宏观与行业数据 利率、货币供应量、PMI、行业产量、价格指数等。 构建宏观因子、进行行业轮动。 数据频率(月/季)与交易频率(日)不匹配。
另类数据 新闻情绪、网络舆情、供应链关系、专利、卫星图像等。 挖掘增量Alpha。 数据噪音大、处理复杂、历史长度短、可解释性弱。

核心原则:杜绝未来函数

在任何时点t,构建因子或进行交易决策时,只能使用在时点t已经公开的信息。这是量化研究的第一铁律

三、主流数据源详解与对比

我们将数据源分为专业商用开源社区量化平台三类,并分析其适用场景。

1. 专业商用数据源:Wind(万得)与 Choice(东方财富)
  • 定位:机构级,数据全面、准确、服务稳定,是业界的黄金标准。

  • 优势

    • 数据权威性高:经过严格清洗和校验,尤其财务、宏观数据。

    • 覆盖全面:A股、港股、美股、债券、期货、期权、基金、宏观、行业等。

    • API强大:提供成熟的MATLAB、Python、C++等API,方便集成到研究流程。

    • 支持服务:提供数据答疑、定制服务。

  • 劣势

    • 成本高昂:动辄数十万乃至上百万元的年费,对个人和初创团队门槛高。
  • 适用场景公募、私募、券商等专业机构的正式投研与实盘交易。

  • A股实践要点:使用Wind时,务必使用其**“交易日历”“复权因子”** 和 “实际公告日期” 相关函数,可极大避免常见错误。

2. 开源/社区数据源:TuShare、AKShare、baostock
  • 定位:免费、开源,满足个人研究者和教育场景的基本需求。

  • 优势

    • 完全免费:无任何费用。

    • 灵活性高:可直接获取代码,了解数据获取逻辑。

  • 劣势

    • 数据质量与稳定性风险:数据源多为网络公开数据,可能存在错误、缺失或更新延迟,无官方保证。

    • 覆盖与历史有限:历史数据长度、数据种类(如深度财务指标、分钟数据)可能不足。

    • 无官方支持:遇到问题需自行解决或依赖社区。

  • 代表工具

    • TuShare:基于Python,接口简洁,涵盖行情、财务、宏观等,是个人研究者入门首选。

    • AKShare:数据源更广,包括新闻、舆情、另类数据等,但接口稳定性变化较大。

  • 适用场景个人学习、算法验证、小规模策略研究不推荐用于实盘资金管理。

  • 实践警告:使用开源数据必须进行严格的数据质量检查(如检查极端值、缺失值、与权威源交叉验证)。

3. 量化研究平台:优矿、米筐、聚宽
  • 定位:介于前两者之间,提供“数据+研究环境+回测引擎”的一体化云平台。

  • 优势

    • 上手极快:内置丰富的清洗好的A股数据,无需自己维护数据仓库。

    • 研究回测一体化:在平台内即可完成从数据获取、因子研究到策略回测的全流程。

    • 社区与分享:有策略分享社区,可学习他人思路。

  • 劣势

    • 平台锁定风险:策略代码和研究成果绑定在特定平台,迁移成本高。

    • 功能与性能限制:复杂、高频、定制化需求可能受平台限制。

    • 数据是“黑盒”:对底层数据的具体处理逻辑(如复权、财务发布日期匹配)控制力弱。

  • 适用场景量化新手快速入门、策略灵感验证、参加量化比赛。可作为从研究到实盘的“跳板”,但严肃的实盘策略通常需要独立于平台部署。

综合对比与选择建议
特性 专业商用 (Wind/Choice) 开源社区 (TuShare等) 量化平台 (优矿等)
成本 极高 免费 中低(通常有免费额度,高级功能付费)
数据质量 极高(权威、稳定) 较低(需自行校验) 较高(平台已清洗)
数据覆盖 最全面 基础覆盖 较全面,侧重A股
系统依赖性 低(API调用,可本地化) 高(绑定平台)
适合阶段 专业机构、大规模实盘 个人学习、原型验证 快速研究、策略探索、模拟盘

选择策略

  • 学生/个人研究者:从 TuShare/AKShare 开始,完成课程作业和初步想法验证。深入时使用量化平台的免费环境。

  • 初创私募/团队:在策略验证期可使用量化平台提高效率。在策略成熟、准备上实盘时,必须投资Wind/Choice等专业数据,并建立本地的数据校验和备份体系。

  • 成熟机构:以Wind/Choice为主,自建数据仓库,并可能接入交易所原始数据进行高频交易。

四、实战数据工程:构建可复现的研究环境

无论选择何种数据源,都必须建立标准化的数据处理流程。以下是一个可参考的本地化框架结构:

量化研究项目/
├── data/
│   ├── raw/           # 存放从源下载的原始数据
│   ├── processed/     # 存放清洗、结构化后的标准数据
│   └── database/      # 可选用SQLite/Parquet格式存储
├── src/
│   ├── data_fetcher/  # 数据获取模块(调用Wind/TuShare API)
│   ├── data_cleaner/  # 数据清洗模块(处理缺失、异常、复权)
│   ├── factor_calc/   # 因子计算模块
│   └── utils/         # 辅助函数(交易日历等)
├── config.yaml        # 配置文件(数据路径、API key等)
└── pipeline.py        # 主流程脚本

关键清洗步骤示例(以日行情为例)

# 伪代码逻辑
def clean_price_data(raw_df):
    # 1. 确保有‘trade_date’和‘symbol’列
    # 2. 按日期和代码排序
    # 3. 处理缺失值:前向填充?或标记为停牌?
    # 4. 计算调整后价格:close * adj_factor
    # 5. 计算收益率:使用调整后收盘价,注意停牌日
    # 6. 标记涨跌停状态(基于未复权价格)
    # 7. 创建“是否可交易”标志:非停牌、非涨跌停
    return cleaned_df

财务数据日期对齐(严防未来函数核心!)

# 错误做法:用财报期末日期(如2023-12-31)直接作为信息使用日
# 正确做法:用财报实际公告日(Announcement Date)作为信息使用日
# 在t日,只能使用“在t日及之前已公告”的财务数据。

# 假设有财务数据表financials,包含`report_date`(财报期末日)和`announce_date`(公告日)
# 在计算t时刻的因子时:
available_financials = financials[financials['announce_date'] <= t]
# 对每个股票,取available_financials中最近一期的报表数据来计算因子

五、本节小结

没有高质量的数据,任何复杂的模型都毫无意义。在A股因子投资中:

  1. 根据你的阶段和预算选择工具,但要清楚每种选择的优劣和风险。

  2. 建立可复现、可审计的数据流水线,确保每一步处理逻辑清晰、有据可查。

  3. 时刻警惕“未来函数”,在数据层面建立防火墙,这是区分业余与专业的关键。

  4. 从简单开始:使用TuShare或免费量化平台,完全可以完成本教程前几章的所有学习性研究。当策略显示出真正的潜力时,再投资于专业数据和服务。

接下来,我们将进入第2.4节:《2.4 复现案例:在A股复现一个经典价值因子(代码+数据)》,手把手带你完成第一个从数据获取、因子计算、组合排序到绩效分析的端到端完整案例,将本节的所有理论付诸实践。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐