金融数据基础:股票、基金、期货、外汇等数据类型与数据频率

金融数据可视化工作的起点,并非绘图代码,而是对数据本身的理解。如果对数据类型、时间频率和数据源特性缺乏系统认知,后续的可视化分析极易出现“图很漂亮,但结论失真”的问题。本章将系统梳理股票、基金、期货、外汇等核心金融资产的数据结构差异,厘清日线与分钟线的适用场景,并深入对比 Yahoo Finance、Tushare、Wind 三大数据源的特点与选型策略,为后续实战项目打下坚实的数据基础。

金融数据类型 · 频率 · 数据源 知识框架 金融数据基础 资产类型 股票:OHLCV + 复权因子 基金:净值 + 累计净值 + 分红 期货:合约 + 保证金 + 持仓量 外汇:货币对 + 点差 + 远期 加密:现货 + 永续 + 资金费率 时间频率 日线 / 周线 / 月线 分钟线:1m / 5m / 15m / 60m Tick 级:逐笔成交 + 盘口 频率决定:噪声 vs 信号 周期选择:策略类型匹配 数据源 Yahoo Finance:免费国际 Tushare:国内 + 积分制 Wind:机构级 + 高成本 AKShare:开源爬虫聚合 选型:成本 / 质量 / 频率 可视化选型决策路径 1. 确定资产类型 → 2. 选择时间频率 → 3. 评估数据源质量 4. 检查复权 / 合约换月 / 时区对齐 → 5. 设计可视化方案 6. 验证数据完整性 → 7. 输出图表并标注数据来源

核心原理:金融资产的数据结构差异

不同金融资产的数据结构差异,本质上反映了其交易机制、定价逻辑和信息披露方式的不同。理解这些差异,是选择正确可视化方法的前提。

  • 股票数据:核心是 OHLCV(开盘价、最高价、最低价、收盘价、成交量),同时必须关注复权因子。由于上市公司会进行分红、送股、配股等操作,未复权价格会出现跳空缺口,导致技术指标失真。前复权以当前价格为基准调整历史价格,后复权以首日价格为基准,两者在长期趋势可视化中差异显著。
  • 基金数据:与股票不同,基金没有盘中连续交易价格,只有每日收盘后的单位净值和累计净值。单位净值是基金当前的每份价值,累计净值则考虑了历史分红再投资。对于 ETF(交易所交易基金),还存在二级市场交易价格和 IOPV(基金份额参考净值)的差异,这在折溢价分析中至关重要。
  • 期货数据:期货合约有到期日,因此存在“主力合约”和“次主力合约”的概念。连续合约(如螺纹钢连续)是通过拼接不同月份的合约生成的,拼接时需要考虑换月跳空。此外,期货数据还包含持仓量(Open Interest),这是股票数据中没有的重要指标,反映市场参与者的持仓意愿。
  • 外汇数据:外汇交易以货币对(如 EUR/USD)为单位,报价包含买入价和卖出价,点差(Spread)是交易成本的核心。外汇市场 24 小时交易,数据频率天然覆盖从 Tick 到月线的全周期。远期汇率和掉期点则属于衍生品定价范畴,与即期汇率的数据结构不同。
资产类型 核心字段 特有数据 可视化关注点
股票 OHLCV、复权因子 股本、市值、PE/PB K线形态、均线系统、成交量配合
基金 单位净值、累计净值 分红记录、持仓仓位 净值曲线、回撤分析、超额收益
期货 OHLCV、持仓量 合约月份、保证金率 主力连续、基差、持仓量变化
外汇 买入/卖出价、点差 远期点、掉期率 汇率走势、波动率、相关性

数据频率:日线与分钟线的选择逻辑

数据频率决定了可视化所呈现的市场微观结构。日线适合捕捉中期趋势和主要支撑压力位,而分钟线则能揭示日内交易节奏和短期波动特征。选择频率的核心依据是策略持仓周期和信号计算所需的最小数据粒度。

日线数据(Daily)是金融分析中最常用的频率。它聚合了每个交易日的开盘、最高、最低、收盘和成交量,能够有效过滤日内噪声,适合趋势跟踪、均值回归等中低频策略。周线和月线则是日线的进一步聚合,用于观察长期周期。分钟线(Minute)则保留了日内价格路径,1 分钟和 5 分钟线常用于高频策略回测和日内交易信号确认,但需要注意分钟线数据量庞大,且容易受到市场微观结构噪声(如买卖价差反弹)的影响。

在实际项目中,一个常见的做法是“多周期共振”分析:在日线上判断大方向,在 60 分钟线上寻找入场时机,在 5 分钟线上确认精确点位。这种多频率组合的可视化,需要确保各周期数据的时间戳对齐,尤其是跨时区市场(如同时分析 A 股和港股)时,必须统一时区基准。

经验提醒:当使用分钟线数据时,务必检查交易所的交易时段。A 股有午间休市(11:30-13:00),期货有夜盘(21:00-次日凌晨),外汇市场周末休市。直接拼接连续时间戳会导致可视化图表中出现无意义的“平线”或跳空。

数据源对比:Yahoo Finance、Tushare、Wind 的选型策略

数据源的选择直接影响数据的准确性、获取成本和更新频率。对于 Python 金融数据可视化项目,需要根据预算、数据范围和实时性要求做出权衡。

数据源 覆盖范围 成本 更新频率 Python 接口 适用场景
Yahoo Finance 全球股票、ETF、外汇、加密货币 免费 延迟 15 分钟 yfinance 个人学习、跨国资产对比
Tushare A 股、港股、美股、期货、基金 积分制(部分免费) 日线收盘后更新 tushare 国内量化研究、因子分析
Wind 全资产、宏观、行业 高(机构年费) 实时/准实时 WindPy 金融机构、专业投研
AKShare 国内全市场 + 部分国际 免费 依赖源网站 akshare 爬虫聚合、快速原型

Yahoo Finance 的最大优势在于免费且覆盖全球市场,通过 yfinance 库可以轻松获取历史日线和分钟线数据。但其数据质量存在隐患:部分股票的复权因子计算可能不准确,且延迟数据无法用于实时交易决策。Tushare 则更贴近国内投资者的需求,提供了完整的 A 股日线、分钟线、财务数据和资金流向数据,但高级接口需要积分(通过贡献或付费获取)。Wind 是机构级的标准配置,数据质量最高,但年费通常在数万元以上,不适合个人学习者。

实战场景:构建一个多资产日线数据获取与可视化流程

假设我们需要分析“股债汇”三类资产的相关性,以评估宏观环境对投资组合的影响。具体目标是获取沪深 300 指数(股票)、中证国债指数(债券)和美元兑人民币汇率(外汇)的日线数据,并绘制归一化后的走势对比图。

背景与约束:项目环境为本地 Python 3.10,无 Wind 终端,预算为零。需要数据覆盖最近 3 年,且要求数据源稳定可重复获取。

操作步骤:

  1. 数据源选型:由于需要同时获取国内指数和外汇数据,选择 Tushare 获取沪深 300 和国债指数(积分 200 即可),选择 Yahoo Finance 获取美元兑人民币汇率(代码:CNY=X)。
  2. 数据获取与清洗:使用 tushare.pro 的 index_daily 接口获取指数日线,使用 yfinance.download 获取汇率数据。统一将日期列转换为 datetime 类型,并按日期排序。
  3. 对齐与重采样:由于外汇市场交易日与 A 股不完全一致,需要以 A 股交易日为基准,对汇率数据做前向填充(ffill),确保三个序列的索引完全一致。
  4. 归一化处理:将三个序列的起始日净值设为 100,计算后续日期的相对净值,以便在同一个 Y 轴尺度下比较走势。
  5. 可视化输出:使用 Matplotlib 绘制三条折线,并标注关键时间点(如 2024 年 9 月政策密集期)。
案例复盘:该流程的核心风险在于数据对齐。如果直接使用原始数据,外汇市场的非交易日(如美国假日)会导致 NaN 值,在计算相关性时产生错误。通过前向填充后,虽然引入了“伪数据”,但在日线级别的宏观分析中,这种处理方式是可接受的。另一个教训是:Tushare 的积分权限需要提前检查,部分高频接口(如分钟线)需要更高积分,在项目启动前应确认可用性。

常见误区与总结复盘

在金融数据可视化项目中,以下误区需要特别警惕:

  • 误区一:忽视复权因子。直接使用未复权价格绘制长期 K 线,会导致除权除息日出现巨大的价格跳空,均线系统产生虚假信号。正确做法是使用前复权数据,并在图表标题中标注“前复权”字样。
  • 误区二:混淆期货连续合约与主力合约。主力合约是当前持仓量最大的合约,而连续合约是拼接后的合成数据。可视化时若未标注换月日期,读者可能误以为价格跳空是市场剧烈波动所致。
  • 误区三:数据源混用导致口径不一致。例如,从 Yahoo Finance 获取的 A 股数据与 Tushare 的数据在涨跌停价格、成交量统计上可能存在细微差异。在同一个可视化项目中,应尽量使用单一数据源,或对多源数据做交叉验证。
  • 误区四:忽略时区与交易时段。在展示全球市场数据时,必须将时间戳统一到同一时区(如 UTC+8),否则跨市场对比图会因时间错位而失去意义。
风险提示:免费数据源(如 Yahoo Finance)的接口可能随时变更或限制访问频率。在生产环境中,建议将数据缓存到本地数据库(如 SQLite),并设置定时更新任务,避免因外部接口故障导致可视化服务中断。