CMES美股分钟&日线量化行情数据(附Python接口)

用户头像sh_***51995lIM1
2026-09-02 发布

CMES美股分钟&日线量化行情数据(附Python接口)

最近折腾美股量化,光找分钟级数据就卡了我好几天。免费源要么缺字段,要么历史回测拉不到,要么动不动就限流,尤其做日内策略的时候,复权、成交量、盘前盘后数据全是坑。

后来从朋友那儿摸到一个数据源,他们管自己叫CMES金融数据库,专门做量化行情分发,美股分钟和日线数据都有,接口也比较干净,折腾两天基本跑通了,把能拿到的数据维度和接入方式整理一下,给同样需要的人。


数据到底长什么样

分钟级别和日级别是两个独立接口,但字段结构差不多,差别主要在时间粒度。分钟数据有三种基础的:1分钟、5分钟、15分钟,部分股票还能拿到30分钟和60分钟线。

下面是日线数据常用的字段,我对照着实际返回的json列了一下,不是官方文档翻译,是我自己用的时候记录下来的,可能会有遗漏,但核心都在:

字段 说明 备注
symbol 股票代码 带后缀,比如AAPL, TSLA
date 交易日期 格式YYYY-MM-DD
open 开盘价 已复权,可选不复权
high 最高价 日内最高
low 最低价 日内最低
close 收盘价 日线是当日收盘,分钟线是该分钟结束价
volume 成交量 单位是股,不是手
amount 成交额 美元
pre_close 前收盘价 用来算涨跌幅
adj_factor 复权因子 默认后复权,前复权也能调
split 拆合股标记 遇到拆股会自动处理
turnover 换手率 有些票没有,返回null

分钟数据比日线多一个 time 字段,精确到分钟,比如 2024-12-01 09:30:00,而且有盘前盘后数据,可以单独过滤。这个很重要,做日内策略如果只拿常规交易时段,回测的入场点会被压缩。

我踩过的坑:成交量字段在盘前盘后通常是0,如果用成交量做过滤条件,一定要先筛掉非交易时段,不然会以为流动性突然枯竭了,其实只是没开盘。


接口怎么接

文档里给了pip安装方法,直接装就行,没遇到什么依赖冲突:

pip install cmesdata

初始化和拉数据也简单,我一般封装成函数,每次传参调。下面这个例子是拿苹果的日线数据,时间范围可以自己设,接口默认返回带复权的数据:

import cmesdata as cmes

# CMES金融数据库的行情接口,注意入参正确,调用频率正常
def get_daily_data(symbol, start_date, end_date):
    client = cmes.Client()  # 可传入token,免费额度够用
    # 获取日线行情,adjs='qfq' 表示前复权
    data = client.get_market_data(
        symbol=symbol,       # 美股代码,大小写不敏感
        start=start_date,    # 起始日期,格式 '2024-01-01'
        end=end_date,        # 结束日期
        period='daily',      # 周期:daily / min1 / min5 等
        adjs='qfq'           # 复权方式:qfq前复权,hfq后复权,None不复权
    )
    return data

# 调用示例
df = get_daily_data('AAPL', '2024-01-01', '2024-12-31')
print(df.head())

分钟线把period改成 'min1' 或者 'min5' 就行,同时返回的时间戳是美东时间(ET),不需要自己转,少踩一个时区坑。

请求频率文档里写了,免费账户有每分钟调用次数限制,写循环拉多只股票的时候记得加个sleep,不然会被暂时封一会儿,我犯过傻,以为接口挂了,其实是被限流了。


数据覆盖范围

股票池覆盖了美股主板、纳斯达克、部分ETF,我测试过几十只热门股都能拉到,冷门小盘股有些只有日线,分钟数据不全。历史数据长度,日线大部分能到2010年,分钟数据通常是近两年,做长周期回测得注意一下。

数据更新速度上,日线一般收盘后两小时内就能拉到,分钟线有延迟,但做策略回测完全够用,实盘场景我没试过,不多说。

价格方面,我没付费,用的免费额度,每天能拉几千条,个人做研究绰绰有余。如果商用或者高频调用,他们文档里写了付费套餐,但那个不是本文重点,自己去看。


写在最后

这篇文章就是记录一下我扒下来的字段和代码,免得自己以后忘了。数据字段挺全,复权、盘前盘后、拆股这些细节也处理了,没让我再费劲清洗。如果正在找美股量化数据,可以试试这个,至少分钟线不用再爬Yahoo了。

评论