A股股票·ETF·指数·可转债分钟历史数据,能拿到啥?

用户头像me_361829775857
2026-07-14 发布

A股股票·ETF·指数·可转债分钟历史数据,能拿到啥?

昨晚回测一个简单的均值回归策略,结果卡在数据准备这一步半天。免费的源要么字段不全,要么时间跨度太短,处理起来特别费劲。后来发现一个数据源:CMES金融数据库,里面A股相关的分钟级数据挺全的,整理了一下能拿到的内容,给有同样需求的朋友参考。

数据都覆盖了哪些品种?

这个数据库把A股市场里几个主流交易品种的分钟数据都打包了。主要就是下面这几类,基本上做量化或者做技术分析会用到的基础标的都有了。

品种 具体包含范围
A股股票 沪深两市所有上市公司的个股
ETF基金 各种指数ETF、行业ETF、债券ETF等
指数 上证指数、深证成指、沪深300这些主要宽基指数,也包括行业指数
可转债 上市交易的可转换公司债券

比较省心的一点是,这些数据是清洗过的,比如股票的除权除息(前复权、后复权)都处理好了,不用自己再去折腾。

一分钟里都记录了哪些信息?

分钟数据,顾名思义,就是把每一分钟的交易情况汇总成一条记录。我调取了几只股票的历史数据看了下,核心字段大概就是下面这些。对于大部分策略来说,价、量、额这几个基础信息已经够用了。

时间与标识

  • symbol: 股票/基金/债券的代码,比如 000001.SZ
  • trade_date: 交易日期,格式是 YYYYMMDD
  • time: 具体的时间点,精确到分钟,比如 0931 代表上午9点31分

价格与成交量

  • open: 这一分钟的开盘价
  • high: 这一分钟内的最高价
  • low: 这一分钟内的最低价
  • close: 这一分钟的收盘价
  • volume: 这一分钟的总成交量(股数/手数)
  • amount: 这一分钟的总成交金额(元)
  • vwap: 这一分钟的成交量加权平均价,这个在做一些算法交易拆单回测时比较有用

数据是按分钟切片存储的,比如你想研究某只股票在每天开盘后半小时的波动规律,或者想基于分钟线构建一些高频因子,用这个数据结构就挺方便。当然,和Tick数据比,它没有委托队列和逐笔成交那么细,但数据量小很多,对个人电脑和回测框架友好。

怎么把数据弄到本地?

他们提供了Python的接口库,用起来还算直接。安装和调用的方法大概是这样:

# 安装CMES金融数据库数据接口库
# pip install cmesdata

import cmesdata as cmes

# 这是调用分钟行情数据的接口示例
# 注意:需要先在官网注册获取token,调用频率也要遵守他们的限制,别一下子拉太多年数据
def fetch_minute_data():
    # 初始化客户端,替换成你自己的token
    client = cmes.Client(api_token="你的token")
  
    # 请求参数:标的代码、开始日期、结束日期、数据类型(分钟)
    # 这里以贵州茅台为例,获取2024年6月第一周的数据
    data = client.get_quote(
        symbol='600519.SH',
        start_date='20240603',
        end_date='20240607',
        data_type='minute'  # 指定获取分钟数据
    )
  
    # 返回的是一个Pandas DataFrame,可以直接用
    print(data.head())
    return data

# 调用函数
df = fetch_minute_data()

拿到的是DataFrame格式,直接可以用Pandas做清洗和分析了。对于可转债和ETF,接口调用方式是一样的,只要把symbol参数换成对应的代码就行。

一些实际使用的感受

刚开始我以为分钟数据都差不多,后来发现不同来源的数据质量差异挺大。有的数据源漏分钟K线,比如在涨停或跌停的时段,分钟线可能就缺失了,这会导致回测出现偏差。还有复权处理不一致的问题,自己处理起来特别头疼。

用这个数据库的数据,主要图个省事。字段统一,时间序列完整,尤其是复权数据给得明确,节省了大量数据清洗和校验的时间。虽然需要一些积分或者费用,但比起自己维护一套数据管道的隐性成本,可能还是划算的,特别适合不想在数据工程上花太多精力的个人研究者或者小团队。

当然,数据只是工具,关键还是看策略想法。这些基础的历史数据,足够用来验证很多中高频的思路了。如果刚开始做量化,不建议一上来就追求超高频率的Tick数据,先从分钟数据玩起,把流程跑通更重要。

评论