文章来源 公众号: Logan投资
往期文章:
在量化交易中,数据如同“燃料”,策略的精准度、收益的稳定性都依赖于高质量的数据支持。然而,市面上的数据源五花八门,免费与付费如何权衡?新手如何避坑?本文从数据质量、成本、适用场景三大维度,为你深度剖析主流数据源优劣!
一、免费数据源:低成本入门首选
AKshare
文档:https://akshare.akfamily.xyz
优点:开源免费,覆盖股票、基金、期货等多品种数据;
缺点:数据偶有缺失,需自行清洗。而且我用实时数据的接口获取最新1分钟数据时,会存在大约500毫秒的延迟。所以用于高频就不是很适合了。当然,但凡有钱搞高频的谁会在乎那点钱买个好点数据源来减少延迟。
import akshare as ak
ak.index_zh_a_hist_min_em(symbol='000300',period='1')
Tushare
文档:https://www.tushare.pro/document/2
优点:基础功能是免费的,对于个人投资者和小型团队来说,这无疑降低了数据获取的门槛。虽然高级功能需要付费,但相比其他商业数据平台,Tushare的性价比依然很高。
缺点:部分数据的更新存在一定的延迟。而且从我使用过的经验来看,部分数据的细节还是存在缺陷。
如下图,IF2501在25年1月17日的持仓量数据跟rqdata的是对不是上的,不过原因是tushare处理数据的规则问题,它默认了合约最后一天的持仓量为0。我看了其他合约,如IF2401的最后一天24年1月19日的数据,持仓量也是0。虽然但是,这一点点的偏差也足够影响了。
Baostock
文档:http://baostock.com
优点:免费无需注册,支持历史行情下载。
缺点:实时行情更新较慢,不适合高频交易,数据覆盖面有限,没有美股,港股等数据。
有且仅有日频、周频及以上的股票数据,没有期货的。数据宽度较小。
实例代码如下所示,数据整合的过程比较复杂,实际使用需要自己再封装为一个函数。
import baostock as bs
import pandas as pd
bs.login()
rs = bs.query_history_k_data_plus("sh.000300","date, code, open, high, low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg, isST",start_date="2025-01-01",end_date="2025-03-07",frequency="d",adjustflag="3") # 默认不复权:3;1:后复权;2:前复权。
data_list =[]
while(rs.error_code =='0')& rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result=pd.DataFrame(data_list, columns=rs.fields)
bg.logout()
Efinance
文档:https://efinance.readthedocs.io
优点:开源免费,覆盖A股,美股等多品种数据,提供分钟级支持;
缺点:其他数据接口较少,而且文档不够详细,一些参数的设置要读代码的时候才能知道,最好还是去github看看https://github.com/Micro-sheep/efinance。而且1分钟数据仅支持当天,5分钟近2个月。港股好像没有(我也没去仔细看了)
import efinance as ef
stock_code = '510300'
ef.stock.get_quote_history(stock_code, klt=101).sort_values('日期')
MiniQMT
(这个得找券商开通才行,目前最好开通的是国金的,门槛10w吧,最近才把门槛提高的,开通不用付钱,开通后获取数据也不用,很友好的了)
文档地址:
https://dict.thinktrader.net/nativeApi/xtdata.html?id=AFsgJ2
我自己就是用这个,实盘交易用,获取历史数据也可以。
接口文档全,界面简洁,学习曲线相对平缓。即使是刚入门的量化新手,也能在短时间内掌握其基本操作。只是文档看着会比较累,尤其是获取账户信息的模块,输出的内容格式得再跳到另一个页面来看,文档不会提供输出的数据样式。习惯了会无所谓,就是辛苦一点而已。
tick级历史数据提供近1个月的
1分钟、5分钟级历史数据提供近1年的
日频数据提供近20年的
miniqmt的问题
和rqdata米筐数据来对比,在每天的早盘上会有差别
miniqmt会存在9:30的数据,这个是开盘竞价的总体数据,而rqdata是没有的。
rqdata会将开盘竞价的数据都放在9:31这每天第一根k线里。
所以miniqmt的9:31分k线的close,open,volume等与rqdata相比都不一样。对于我自己来说,习惯了rqdata的数据结构了,所以这个细节得处理一下
下图是Miniqmt的
下图是rqdata 中证500指数在2025年3月7日的1分钟数据
可以从上面两张图的红框处看到这些细节,miniqmt的前两分钟的k线数据合并后就是rqdata的第一根9:31分这根k线的数据。
二、付费数据源:专业玩家的“弹药库”
1. 沧海数据
文档:https://www.tsanghi.com/fin/doc
优点:免费版注册方便,全球数据覆盖,支持多种编程语言;有股票、指数,有外汇、有币的1分钟及更低频的数据。
缺点:免费版只有一年历史数据。没有期货的数据。而且请求数据是通过GET形式,即如下图所示
要用request去搞,所以如果真要用的话,还得自己重新封装一遍。
价格也还可以,最全功能的价格为6000块钱一年,相比于其他付费的确实可以的。
2. Alltick
文档:https://apis.alltick.co/
产品列表:
https://docs.google.com/spreadsheets/d/1avkeR1heZSj6gXIkDeBt8X3nv4EzJetw4yFuKjSDYtA/edit?gid=1702052913#gid=1702052913
优点:覆盖全球多数市场,支持多种编程语言,数据可靠性高;A港美币外汇商品都有
缺点:定价较贵,且使用usdt泰达币进行支付。
参数配置部分
获取数据部分
3. 理杏仁
文档:https://www.lixinger.com/open/api
优点:API可获取A股以及港股的数据;也有宏观数据
缺点:数据相对较少,且没有日内数据。
4. Polygon
文档:https://polygon.io/docs
这个接口我买来用过,得弄张VISA或者万事达来支付,而且接口也得自己封装一下。
优点:多接口支持,丰富的美股数据,以及美国期权指数等数据;数据质量挺高的。
缺点:没有A股数据,不适合专注A股的投资者。文档很全,但不算很好读,而且要科学上网。
最全功能的要160刀每个月
5. Eodhd
文档:https://eodhd.com/financial-apis/
优点:数据可靠,数据丰富,拥有大多数国家地区的股市数据。
缺点:主要面对海外用户,缺乏中文文档的支持。
6. Alphavantage
文档:https://www.alphavantage.co/documentation/
优点:美股数据丰富,数据实时更新;
缺点:其他国家地区的数据较少。
7. 麦蕊智数
文档:https://www.mairui.club
优点:A股数据较全,定价便宜;
缺点:数据覆盖范围有限,缺乏对美股等国际市场的支持。
8. 必盈
文档:https://ad.biyingapi.com/apidoc.html
优点:A股数据较全,定价便宜;
缺点:数据覆盖范围有限,缺乏对美股等国际市场的支持。
9. 聚合数据
文档:https://www.juhe.cn/docs/api/id/21
优点:覆盖A股,美股,港股三个市场,接口稳定性高;
缺点:数据较少,只提供实时数据。
10. Tpdog
文档:https://www.tpdog.com/p/index/1
优点:A股数据全面;
缺点:缺乏对其他市场的支持。
总结:
价格方面的统计可以在公众号后台回复 20250310 获取文件
(统计可能存在误差,大家看看就好)