做全市场回测的人,都懂那种痛
策略一晚上写好,数据准备耗两周
这周刷 GitHub,一个叫 free-stockdb 的项目挂在推荐位,star 涨得飞快。描述只有一句话——面向 A 股日 K、分钟 K 与 ETF 分钟数据的本地量化引擎,服务端只有 2.2MB。2.2MB,我当时就下载了。
做过 A 股全市场回测的人应该都懂那种痛:策略逻辑一晚上能写好,数据准备却能耗掉两周。我以前用在线 API 拉全市场分钟线,受限于频控和 IP 风控,单次同步实测 3 到 5 天,这还只是把数据拉下来;清洗停牌退市、处理代码变更、推导复权因子、建数据库选表结构写索引,零零碎碎再搭一周。等数据工程跑通,黄花菜都凉了。
free-stockdb 用了几天,确实可以。下面把同样在量化坑里的道友聊聊——它到底做了什么,又有什么坑。
01
PART
先看简介
WHAT IS FREE-STOCKDB
free-stockdb 是一个本地量化数据引擎,C++ 写核心,Rust 做指标计算。数据同步、清洗、复权、存储、查询全部打包,Apache-2.0 协议,完全免费。目前 Windows 版发了 Release,macOS 和 Linux 版作者说快了。
做全市场回测,常见方案差距不是快慢的问题——在线方案根本跑不顺。一张表看清:
维度 | 在线 API 方案 | free-stockdb |
|---|---|---|
同步速度 | 频控 + IP 风控,单次 3–5 天 | 增量同步,断点续传 |
数据落地 | 依赖远程 API,随时掉线 | 全落盘 ./data,离线可查 |
复权因子 | 自己抓公告反推 | 查询时按需返回 |
指标计算 | pandas 遍历几小时 | Rust 核心几秒出 |
AI 调用 | 复制表结构给 AI | MCP 直连本地库 |
02
PART
功能我挑重点说
KEY FEATURES
增量同步,只拉变化的部分
把数据源地址丢进 sync_url.txt,首次同步拉全量历史,之后每次更新只处理增量。Zstd 压缩传输,比未压缩体积小 3 倍以上;网络断了下次接着跑。日线、周线、月线、1/5/15/30 分钟 K、tick 数据全管,数据全落盘在 ./data 目录,离线了照样查、照样回测。
39 种指标 + 5 种指数,几秒算完全市场
内置指标覆盖四类——趋势类(MA、EMA、MACD、DMI 等)、震荡类(KDJ、RSI、WR 等)、通道类(BOLL、KTN 等)、量价类(OBV、VR 等),一共 39 种。外加等权、流通市值加权、成交额加权、成交量加权、总市值加权 5 种指数计算。我以前用 pandas 跑全市场 MACD 和 KDJ,DataFrame 遍历一次要几个小时;free-stockdb 的 Rust 计算核心比 pandas 快 3 倍,全市场分钟级指标几秒钟出结果。
调用也很直给:
...python
result = zb.get(
name="ma,kdj,macd",
codes=全市场7000多只,
start="2024-01-01",
end="2024-12-31",
frequency="daily",
fq="前复权",
n=["5,10,20", None, "12,26,9"]
)
一个 zb.get() 全搞定。get_data() 管行情查询,bk.get() 管板块映射,日常需求三个函数全覆盖。
复权不用自己推了
本地存的是不复权行情配复权因子,查询时按需返回前复权、后复权、不复权。不用自己抓分红送转公告、反推因子、回刷历史价格。查一下复权因子还能自己校验,不放心内置的也可以拿自己的数据源重新算。
五种调用方式,不只是 Python
Python SDK(标配)
get_data() 同步异步都行。
HTTP API(一行命令)
http://127.0.0.1:7899/?cmd=get&t=...,不管什么语言,配个局域网还能多人共用。
Excel / WPS 宏
做表格选股的,在办公室就能直接怼。
网页端
拿来即用,不用写代码都能浏览本地行情。
MCP(最值钱)
free-stockdb 自己实现了 MCP 协议,Claude、Cursor、Windsurf 这些 AI 编程工具连上就能调本地数据引擎。你对着 AI 说一句「帮我把最近三个月涨超 30% 且日均成交额过亿的票筛出来」,它直接查本地库,不用复制粘贴表结构。不需要额外装 MCP SDK,项目自带。
板块映射也内置了
申万一二三级行业分类加 1200 个概念板块全在里面。查某只票属于哪些板块,或查某个板块下有哪些票,bk.get() 毫秒级返回。
03
PART
详细安装步骤
STEP BY STEP
STEP 01
去 GitHub Releases 页面下载最新版压缩包。目前最新是 v0.2.1,文件不大,解压就行。
STEP 02
在解压目录里找到 sync_url.txt,把数据源地址填进去——可以是公共同步节点、内网服务器或本地目录(file:// 路径也行)。首次同步看数据范围:只拉日线约 5GB,加全量分钟线约 20GB,Zstd 压缩存本地比 CSV 省 3 倍空间;后续每次只拉增量,断点续传。
STEP 03
运行 stockdb。服务端就 2.2MB,瞬间起,默认监听 127.0.0.1:7899,不暴露公网。
STEP 04
Python:pip install 对应 SDK,import 直接调。HTTP:浏览器打开 http://127.0.0.1:7899 就能看到网页版。Excel / WPS:用内置宏调用本地 HTTP 接口。MCP:在 Cursor 或 Claude Code 里配一行 MCP 连接配置就行。macOS 和 Linux 用户再等等,作者说快发了,issue 区排队的人不少。
///
LAST
写在最后
MY TAKE
2.2MB 干到这个完成度,确实厉害。数据在你硬盘,计算在你 CPU,不跟远程 API 耦合——本地优先的思路很对。五种调用方式尤其是 MCP,让 AI 工具直接读本地行情数据,这个方向很前瞻。
泼点冷水
!目前最大的槽点 🕳
项目还在早期,目前只有 Windows 版;功能集中在行情数据,财报、宏观、资金流这些低频数据得自己接入。数据源不内置,得自己配同步地址,官方不提供数据本身。star 还不算高,社区活跃度待观察。
适合谁
做全市场回测的人
受够了 API 限频的人
想让 Cursor / Claude 直接查本地行情的人
开源地址:https://github.com/hello245m/free-stockdb