free-stockdb与pandas全市场指标计算横评:39指标耗时实测差距有多大
【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎,集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb
做量化研究的都知道一个痛点:全市场指标计算太慢了。用 pandas 对 7000+ 只 A 股逐只遍历计算 MA、MACD、KDJ,单次跑完动辄数小时。而本地量化引擎 free-stockdb 内置了 39 种技术指标与 5 种指数计算方法,官方给出的口径是:Rust 计算核心比 pandas 快 3 倍,全市场指标计算数秒完成。本文就来横评一下:39 指标全市场计算,pandas 和 free-stockdb 的耗时差距到底有多大。
🐢 pandas 全市场指标计算为什么慢?
pandas 做单只股票的指标计算非常顺手,但放到全市场批量场景就暴露了短板:
| 瓶颈环节 | 具体表现 |
|---|---|
| 逐股循环 | 7000+ 只股票需要 for 循环逐只处理,无法并行摊薄开销 |
| 内存搬运 | 行情数据反复在 DataFrame 中拼接、切片,中间缓存巨大 |
| 滚动计算 | MACD、KDJ 等涉及多轮滚动窗口,逐行 Python 层开销高 |
| 复权处理 | 前复权/后复权需要额外拉取因子并回刷历史,再叠加一遍 |
按项目 README.md 的统计,"pandas 全市场遍历极慢(单次数小时)",仅指标计算这一环节就要预留2-3 天开发时间;而整套远程 API 方案从数据下载到策略跑通,最少需要10-15 个工作日。
⚡ free-stockdb 的 39 指标:一次调用全部算完
free-stockdb 把指标计算下沉到了 C++/Rust 计算核心,Python 侧只负责一次批量请求。全市场股票 × 多个指标 × 独立参数,一次调用直接返回结果,无需自己在 Python 层组织循环。
官方内置的 39 种技术指标覆盖五大类:
| 类别 | 指标 |
|---|---|
| 📈 趋势类 | MA、EMA、SMA、WMA、DMA、EXPMA、TRIX、DMI、DFMA、BBI |
| 📉 震荡类 | MACD、KDJ、RSI、WR、CCI、PSY、BIAS、ROC、MTM、DPO |
| 🔲 通道类 | BOLL、KTN、TAQ |
| 📊 量价类 | OBV、VR、EMV、MFI、CR、MASS |
| 🧮 综合类 | ATR、ASI、BRAR、XSII、STD、SUM、HHV、LLV、REF |
此外还有 5 种指数计算方法(等权、流通市值加权、成交额加权、成交量加权、总市值加权),支持自定义股票集合生成指数。更实用的是cross参数可以直接返回金叉/死叉信号,省去了再写一层交叉判断的代码。
接口设计非常直白,参考 zb_test.py 中的示例:多股票 × 多指标 × 各自独立参数,一个zb.get()就搞定:
from zhibiao import zb # 一次算完:2只股票 × MA/KDJ/MACD 三个指标 × 独立参数 d = zb.get("ma,kdj,macd", ["600633", "000007"], start="20260601", end="20260630", frequency="1d", n=["5,10,20", None, "12,26,9"])指标计算核心源码见 pybao/zhibiao.py,底层批量计算由编译好的zb_core模块承担,Python 层只做数据整理。
🏁 耗时横评:小时级 vs 秒级
以下对比数据整理自 README.md 中"为什么需要本地数据引擎"一节的实测口径:
| 环节 | 在线 API + pandas 方案 | free-stockdb |
|---|---|---|
| 全市场分钟数据下载 | 逐股请求,限频风控,3-5 天 | 增量同步 + 断点续传,数据落盘后可离线用 |
| 数据清洗/复权 | 1-2 天 + 1-2 天 | 同步流程自动完成,查询时实时复权 |
| 存储设计 | 1-3 天 | 定制 C++ 时序引擎,开箱即用 |
| 指标计算(39 指标) | pandas 全市场遍历,单次数小时,开发预留 2-3 天 | Rust 核心比 pandas快 3 倍,数秒完成 |
| 合计 | 最少 10-15 个工作日 | 30 分钟内从零到可运行 |
差距最直观的环节就是指标计算:同样是全市场 7000+ 股票跑 39 种指标,pandas 方案要数小时,free-stockdb 是数秒——量级上差了两到三个数量级。而且由于数据本地落盘(Zstd 压缩存储,比 CSV/MySQL 小 3 倍以上),重复回测、反复调参时不需要重新下载数据,速度优势会持续放大。
🚀 新手最快上手:三步跑通 39 指标计算
- 同步数据:双击
数据更新.exe,数据通过 sync_url.txt 配置的数据源增量同步到./data目录,SHA-256 校验保证完整性(协议详见 docs/DATA_SOURCE.md); - 启动服务:双击
stockdb.exe,默认监听127.0.0.1:7899(配置见 stockdb.conf),服务本体仅 2.2MB; - 计算指标:运行一次 pybao/安装.py 后,即可用 Python SDK、HTTP API、Excel/WPS 宏、HTML 网页、AI MCP 五种方式调用,调用示例集中在 调用方式/ 目录。
不想写代码的话,直接双击 数据网页版.html 就能在浏览器里按代码、日期、周期批量查询 K 线数据(见上方界面截图)。
💡 总结:速度差距意味着什么?
- 回测迭代效率:策略参数从"一天试三组"变成"一分钟试三十组";
- 全市场扫描成为常态:分钟级全市场选股信号、金叉监控这类原本跑不动的任务,秒级返回让实时监控可行;
- 数据工程与策略解耦:更新、清洗、复权全部前置到同步层,研究代码只读本地数据集。
如果你被 pandas 全市场指标计算的小时级耗时卡住过,free-stockdb 的"数秒完成 39 指标"值得花 30 分钟验证一下。完整使用说明见 先看!这个!!使用说明.txt。
【免费下载链接】free-stockdb面向 A 股日K、分钟K与ETF分钟数据的本地量化引擎,集成增量同步、本地缓存、复权、批量查询、回测与指标计算。项目地址: https://gitcode.com/GitHub_Trending/fr/free-stockdb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考