金融数据基础:常见金融数据类型、数据来源与获取方式、数据字段含义
金融数据清洗的第一步,不是写代码,而是先搞清楚你面对的数据到底是什么。很多初学者拿到一张表就开始处理缺失值、去重、格式化,结果做到一半才发现:字段含义理解错了、数据频率对不上、复权因子没处理、甚至把财务数据里的单位当成普通数值直接聚合。这些问题的根源,都在于对金融数据的基础类型、来源渠道和字段语义缺乏系统认知。本章将围绕三大核心问题展开:金融数据有哪些常见类型、它们从哪里来、每个字段到底代表什么。只有把这三块地基打牢,后续的清洗规则才有依据。
2.1 常见金融数据类型:从行情到宏观的四层体系
金融数据并非铁板一块,而是按照市场微观结构到宏观经济的层次,形成了四类核心数据:行情数据、交易数据、财务数据、宏观数据。这四类数据在粒度、频率、可靠性和清洗难度上差异极大,理解它们的本质区别是选择清洗策略的前提。
核心原理:四类数据的本质差异
行情数据是市场交易产生的价格和成交量信息,粒度最细、频率最高。日线数据包含开高低收、成交量、成交额,分钟线则进一步细分到1分钟、5分钟、30分钟等。盘口数据(Level-1/Level-2)记录买卖五档或十档的委托挂单,逐笔成交则记录每一笔实际成交的细节。行情数据的核心特征是时间序列性和高频性,清洗时最常遇到的问题是:时间戳对齐、复权处理、停牌期间的空值、异常跳价(如涨跌停导致的极端值)。
交易数据是投资者或机构实际发生的委托、成交、持仓和资金变动记录。这类数据通常来自券商柜台系统、交易所回报或自建交易系统,字段包括订单编号、委托时间、成交价格、成交数量、买卖方向、佣金印花税等。交易数据的核心特征是账户关联性和事件驱动性,清洗时需要注意:订单状态流转(已报、部成、全成、已撤)、费用计算口径、多市场多币种的统一。
财务数据是上市公司定期披露的资产负债表、利润表、现金流量表以及附注信息,还包括业绩预告、业绩快报和各类财务指标。财务数据的核心特征是低频(季度/年度)和标准化程度高(遵循会计准则),但清洗难点在于:报告期与公告日的区分、合并报表与母公司报表的选择、会计政策变更导致的数值不可比、不同市场的会计准则差异(CAS vs IFRS vs US GAAP)。
宏观数据是反映整体经济运行的指标,如GDP、CPI、PPI、PMI、利率、汇率、货币供应量(M0/M1/M2)等。宏观数据的核心特征是低频(月度/季度)和多源发布,清洗时常见问题包括:数据修订(初值、修正值、终值)、季节性调整(季调前后数据差异)、统计口径变化(如基期调整)。
| 数据类型 | 典型频率 | 数据粒度 | 主要来源 | 清洗重点 |
|---|---|---|---|---|
| 行情数据 | 秒级~日级 | 单只证券/指数 | 交易所、数据商 | 复权、异常值、时间对齐 |
| 交易数据 | 事件驱动 | 账户/订单/成交 | 券商柜台、自建系统 | 状态流转、费用口径、多市场统一 |
| 财务数据 | 季度/年度 | 公司/报告期 | 交易所公告、数据商 | 报告期对齐、口径选择、单位统一 |
| 宏观数据 | 月度/季度 | 国家/地区/行业 | 统计局、央行、国际组织 | 修订值、季调、口径变化 |
判断方法:如何识别你手上的数据属于哪一类
拿到一张数据表,先问三个问题:① 数据的最小粒度是什么?(单笔成交?单日K线?单季度财报?)② 数据是否包含账户或订单标识?(有则属于交易数据)③ 数据的发布频率和滞后性如何?(行情是实时的,财务是滞后的)。通过这三个问题,可以快速将数据归类到四类框架中,从而确定后续清洗策略的方向。
案例拆解:一个量化研究员的日常数据需求
假设你是一名量化研究员,需要构建一个“小市值+高盈利”的选股策略。你需要的完整数据链条是:行情数据(每日收盘价、成交量,用于计算市值和换手率)→ 财务数据(季度净利润、净资产,用于计算ROE和盈利质量)→ 交易数据(你自己的模拟盘委托成交记录,用于回测验证)→ 宏观数据(利率水平,用于判断策略适用的市场环境)。这四类数据缺一不可,且每一类都需要不同的清洗规则:行情数据需要复权处理(前复权/后复权),财务数据需要对齐报告期(避免未来函数),交易数据需要处理滑点和手续费,宏观数据需要匹配频率(月度宏观数据如何与日度行情对齐)。
2.2 数据来源与获取方式:从免费到付费的完整图谱
金融数据的获取渠道决定了数据的格式、质量和更新频率。不同来源的数据在字段命名、缺失值处理、复权方式上存在显著差异,清洗时必须了解数据源头,才能制定合理的清洗规则。
核心原理:数据源的层次结构
金融数据源可以划分为四个层次:① 官方免费源(交易所、统计局、央行),数据权威性最高,但格式原始、接口不友好;② 专业数据服务商(Wind、Choice、iFinD、Bloomberg),数据经过整理和校验,质量高但费用昂贵;③ 开源数据接口(Tushare、AkShare、yfinance),免费或低成本,适合学习和原型验证,但数据质量和稳定性参差不齐;④ 另类数据供应商(舆情、卫星、电商),数据新颖但清洗难度极大。选择数据源时,需要权衡成本、质量、更新频率和获取便利性。
操作流程:从零开始获取一套可用的金融数据
- 明确需求:确定你需要的数据类型、时间范围、频率(日线/分钟线)、证券范围(全市场/特定板块)。
- 评估数据源:对比免费源和付费源的覆盖度、延迟、字段完整性。例如,日线行情用AkShare免费获取即可,但高频tick数据必须依赖付费源。
- 编写获取脚本:使用Python的requests、pandas或专用库(如tushare、akshare)拉取数据,并保存为标准化格式(CSV/Parquet/数据库)。
- 记录元数据:保存数据获取时间、源URL、版本号、复权类型等元信息,便于后续追溯。
- 建立更新机制:对于日更数据,设置定时任务(如cron或Airflow)自动增量更新。
# 示例:使用AkShare获取A股日线行情(仅演示代码结构)
import akshare as ak
import pandas as pd
# 获取平安银行(000001)的历史日线数据
df = ak.stock_zh_a_hist(symbol="000001", period="daily",
start_date="20240101", end_date="20241231",
adjust="qfq") # qfq=前复权
print(df.head())
print(df.columns)
# 输出列名:日期, 股票代码, 开盘, 收盘, 最高, 最低, 成交量, 成交额, 振幅, 涨跌幅, 涨跌额, 换手率
案例拆解:从Tushare获取财务数据并处理报告期
假设你需要获取贵州茅台(600519)近5年的财务数据,用于计算ROE。使用Tushare的income和balancesheet接口,但需要注意:Tushare返回的end_date是报告期(如20240331),而ann_date是公告日期。清洗时必须使用ann_date作为数据可用日期,避免未来函数。具体操作:先按ts_code和end_date排序,然后筛选ann_date小于等于回测日期的记录,最后用pivot将宽表转为长表,对齐不同报表的字段。
2.3 数据字段含义:读懂每个字段背后的业务逻辑
字段是数据的“语言”,不理解字段含义,清洗就是盲人摸象。金融数据的字段可以归纳为四类:标识类、数值类、状态类、元数据类。每一类字段都有其特定的清洗规则和注意事项。
核心原理:字段的语义层次
标识类字段(如证券代码、名称、市场)是数据的主键,清洗时需保证唯一性和一致性。例如,A股代码“600519”和“600519.SH”可能同时出现,需要统一格式。数值类字段(如价格、成交量、净利润)是分析的主体,清洗时需关注单位、精度和异常值。状态类字段(如停牌标记、ST标记、上市状态)是数据质量的“开关”,清洗时需根据状态决定是否剔除或填充。元数据字段(如数据来源、更新时间、版本号)是数据治理的基础,清洗时需保留并记录转换逻辑。
| 字段类别 | 典型字段 | 常见问题 | 清洗策略 |
|---|---|---|---|
| 标识类 | 证券代码、名称、市场 | 代码格式不统一(600519 vs 600519.SH) | 统一为带后缀格式,建立映射表 |
| 数值类 | 收盘价、成交量、净利润 | 单位不一致(元 vs 万元)、异常跳价 | 统一单位,用涨跌停阈值过滤异常 |
| 状态类 | 停牌标记、ST标记 | 停牌期间数据缺失或为0 | 根据状态填充NaN或剔除 |
| 元数据 | 数据来源、更新时间 | 多源数据合并时来源混淆 | 增加source列,保留原始数据 |
判断方法:字段语义的“三查”原则
面对一个陌生字段,按以下顺序排查:一查文档(数据源提供的字段说明);二查样本(随机抽取几条记录,看数值范围是否合理);三查交叉验证(用其他字段或外部数据验证该字段的准确性)。例如,看到“close”字段,先查文档确认是收盘价,再看样本数据是否在合理价格区间(如A股1-1000元),最后用“high”和“low”字段验证“close”是否在两者之间。
案例拆解:一个字段引发的“血案”——复权因子的重要性
某学员从免费接口下载了贵州茅台的日线数据,直接计算过去5年的收益率,发现年化收益率高达45%,远超实际水平。排查后发现:数据源返回的是未复权价格,而贵州茅台在此期间多次分红送股(如10派100元),导致除权缺口。未复权价格在除权日会突然下跌,但这不是真实的亏损。正确的做法是使用前复权或后复权价格。前复权以当前价格为基准,调整历史价格;后复权以历史价格为基准,调整当前价格。对于收益率计算,前复权更直观;对于技术指标(如均线),后复权更准确。清洗时,必须明确记录复权类型,并在不同场景下选择正确的价格序列。
adjust_type字段。
总结复盘:字段清洗的黄金法则
- 先理解,后清洗:任何字段在动手处理前,必须明确其业务含义和单位。
- 保留原始数据:清洗后的数据单独存储,原始数据不可覆盖,便于追溯和重新处理。
- 记录清洗日志:每一步清洗操作(如去重、填充、转换)都要记录在案,形成数据血缘。
- 验证清洗结果:清洗完成后,用统计摘要(均值、标准差、缺失率)和业务规则(价格>0、成交量>0)双重验证。
金融数据清洗不是简单的“填缺失值、去重复值”,而是建立在对数据类型、来源和字段语义深刻理解之上的系统工程。本章建立的四层数据分类框架、四层数据源图谱和四类字段语义模型,是后续所有清洗操作的理论基石。当你面对一张新的数据表时,先回答三个问题:这是什么类型的数据?它来自哪里?每个字段代表什么?回答清楚这三个问题,清洗方案就已经完成了一半。