从下载到查日 K:free-stockdb 的验证路线
free-stockdb 想把 A 股历史数据放到本地,通过 HTTP、Python 和网页查询。先别急着拿去回测:当前数据镜像不可用,覆盖范围、复权口径和发行包仍需逐项验证。

风险提示:以下内容只用于软件和数据工程研究,不构成任何投资建议。不要把示例查询、历史行情或回测结果当作买卖依据。
很多人做策略研究,第一道坎往往在数据:接口限频、历史口径不一、每次实验都要重新下载。free-stockdb 试图把历史行情存到本机,再通过 HTTP、Python SDK 或网页查询。
这个方向确实实用,但当前版本还不能理解成“下载后立刻拥有完整 A 股数据库”。截至 2026 年 7 月 26 日,仓库的 Windows Release 只有约 3.06 MB,压缩包里的 data/ 是空目录;首次使用仍要联网同步数据。默认镜像的 manifest.txt 当天返回 404,因此完整数据量、起止日期和更新时效都无法独立复核。
这里不做“开箱即用”的承诺,只给出一条更稳妥的验证路线。
它提供了什么
项目公开了三层能力:
- C++17 + LevelDB 的本地查询服务;
- Python SDK、HTTP、网页和 MCP 调用示例;
- 一个根据远端清单下载、校验和更新数据的工具。
服务默认监听 127.0.0.1:7899。已经有本地数据后,查询可以在本机完成;首次同步和后续更新仍然需要访问数据镜像。

现成发行包只面向 Windows x86-64。仓库虽然有 CMake 和部分 POSIX 代码,但 Linux、macOS 没有可直接下载的构建产物,不能写成三平台开箱即用。
截至核验时,main 分支对应提交:
66dd0b2a801b77998dbcde5bf5ccd0000c1e5bd5
仓库采用 MIT License。这里的 MIT 约束项目代码,不等于行情数据可任意商用、转售或再分发;数据授权仍要回到具体来源确认。
第一步:固定版本,先校验下载包
不要直接照抄 README 里的 ZIP 链接。它指向的文件名已经失效,正确入口是 GitHub Releases 页面。
核验时的 Windows 资产名为:
free-stockdb-windows-v0.2.1-online-more-power.zip
文件大小:
3,212,070 bytes
SHA-256:
4cffebbb23026d5443de34eea8e63b0a5d5df1b648af53c02ea645e96b748fcb
在 PowerShell 中校验:
Get-FileHash .\free-stockdb-windows-v0.2.1-online-more-power.zip -Algorithm SHA256
输出应与上面的哈希完全一致。哈希不匹配就停止,不要解压,更不要运行。
哈希只能证明“下载到的文件与本次核验文件相同”,不能证明程序没有风险。建议在 Windows Sandbox、测试虚拟机或没有敏感文件的专用机器里继续。
第二步:先看压缩包,不要急着更新
解压后可以看到:
stockdb.exe:本地查询服务;数据更新.exe:数据同步工具;- Windows 专用
.pyd扩展; - Python、HTTP、HTML 和 MCP 示例;
- 空的
data/目录。

这里有两个容易忽略的点。
第一,Release 里包含两个 EXE 和多个 .pyd。仓库已经公开一套 C++ 服务、更新器与 Python 示例,但没有覆盖发行包内全部扩展的可复现构建链,不能据此说“发行包的每个二进制都能从当前源码重建”。
第二,发行包内预置的是一个明文 HTTP 同步地址。更新器会按远端 manifest.txt 下载文件并检查大小和 SHA-256,但清单没有数字签名。文件与清单一致,不代表镜像身份可信。
所以,当前更稳妥的动作是:先不要运行数据更新器,等待项目提供可访问的 HTTPS 镜像、稳定清单和发布校验信息。
第三步:只在回环地址验证服务
如果仍要研究程序结构,可以在隔离环境、断网状态下启动服务,确认它只监听本机:
.\stockdb.exe
源码版等价启动参数是:
stockdb --host 127.0.0.1 --port 7899 --data ./data
不要把 --host 改成 0.0.0.0,也不要做公网端口映射。当前服务没有可确认生效的认证保护,还允许跨来源访问并包含写接口;默认绑定回环地址,是这次测试最重要的安全边界。
空数据目录不会凭空产生行情。这里只检查进程、端口和本机访问是否符合预期,不验证股票数据。
第四步:有可信数据后,再做最小查询
等项目恢复可验证的数据镜像后,先同步一小段测试数据,再查询固定股票、固定日期,不要一上来全量回测。
HTTP 查询形式如下:
curl "http://127.0.0.1:7899/?cmd=get&t=日k:600702:20260623"
Python SDK 的调用形式如下:
from pybao.stock_sdk import StockDBClient
client = StockDBClient(host="127.0.0.1", port=7899)
data = client.get_data(
"600633",
start="20260625",
end="20260625",
frequency="1d",
fields="date,code,open,high,low,close,volume",
fq="qfq",
)
print(data)

项目支持 HTTP、Python 和网页几种入口,这对本地研究很方便。默认 fq="qfq" 表示前复权;从代码看,系统会加载复权因子,在查询阶段计算前复权或后复权结果。它不等于磁盘里的所有价格已经提前统一做完前复权。
数据提示:免费历史数据不等于实时行情。当前数据覆盖、完整性、复权因子和更新时间没有获得独立保证,不构成投资建议,不应直接用于资金决策。
第五步:抽查六类边界样本
能返回一行日 K,只证明接口通了。要判断数据能不能进入研究流程,至少抽查以下六类样本:
- 上市首日:检查证券代码、名称、成交量和价格字段;
- 除权除息日:同时对比不复权、前复权、后复权;
- 停牌区间:确认缺少记录代表停牌,还是同步遗漏;
- 退市证券:确认历史样本是否保留,避免幸存者偏差;
- ETF 与普通股票:检查字段语义能否混用;
- 分钟线边界:核对午间休市、集合竞价、节假日和跨日聚合。
每类至少选两个样本,与交易所公告或有明确授权的数据源交叉核对。周线、月线以及 5/15/30/60 分钟数据,在当前 SDK 中包含客户端聚合过程;需要检查聚合窗口,不能只看图形是否“像行情”。
建议保存一张验收清单:
版本提交:
Release 文件名:
Release SHA-256:
数据镜像地址:
manifest 获取时间:
数据起止日:
抽查证券:
复权对照结果:
停牌/退市处理:
缺失值数量:
那些传播很广的说法,要换一种写法
“所有历史数据已经打包好”——当前 Release 的 data/ 为空,首次还要单独同步。
“下载后不用联网”——本地已有数据时可以离线查;首次获取和更新需要联网。
“覆盖 2000 年至今、7400 多只股票和 ETF、1.1 亿条记录”——这些数字出现在旧版说明中,当前仓库已经删除精确数字,现有镜像又不可用,本次无法独立复核。
“拿来就能回测”——接口形式可以服务回测,但数据缺口、复权、停牌、退市、代码变更和未来数据泄漏都要另做验证。
这并不是否定项目。它已经把本地服务、更新器、SDK 和多种调用示例搭了出来,值得数据工程爱好者继续观察。只是目前更适合隔离环境中的技术审计,不适合直接进入实盘链路。
结尾:先把数据当证据,再把它当输入
做策略研究时,数据库返回结果很快,很容易让人误以为数据已经可靠。可靠性要靠版本、来源、校验、抽样和口径说明一步步建立。
等项目补齐稳定的 HTTPS 数据镜像、签名清单、可复现发行包和数据字典后,再扩大同步范围会更稳妥。现阶段,把环境隔离好、固定版本、记录哈希,抽查几个最容易出错的日期,就已经比“下载后直接跑回测”安全很多。
再次声明:本次核验没有验证该项目的自动交易、实盘可用性或收益表现,不构成投资建议。任何交易决策、数据授权责任及由此产生的损失,均由使用者自行承担。
项目地址:
https://github.com/hello245m/free-stockdb
固定提交:
https://github.com/hello245m/free-stockdb/commit/66dd0b2a801b77998dbcde5bf5ccd0000c1e5bd5
Release 页面:
https://github.com/hello245m/free-stockdb/releases/tag/%E6%B5%8B%E8%AF%95%E7%89%88%E6%9C%AC0.2.1