Skip to content

拒绝一键实盘,反而让这个量化框架活了14年

作 者:老余捞鱼

原创不易,转载请标明出处及原作者。

技术讨论不构成任何操作建议。
模型评测不等于投资建议。
不荐股、不卖课、不承诺收益。
市场有风险,请合法合规投资。

本文约 2300 字 | 预计阅读 6 分钟


先看两个放在一起很别扭的数字。

一个是官方性能数据。A 股全市场 1913 万条日 K 线,预热之后,算一遍 20 日均线再求和,166 毫秒。另一个是热度。这个项目在 GitHub 上攒了 14 年,3631 个 star。比 Qlib、vnpy 这些头部框架,低了一个量级。

性能排第一梯队,热度却没跟上,中间差的这点认知,就是我今天想补的。

写这篇的由头是我自己挑回测框架时踩过的坑。海外框架拿到 A 股,T+1 和除权除息处理不对,曲线看着漂亮,口径从根上就是错的。所以我把这个叫 Hikyuu 的老项目从头翻了一遍,又亲手装了一遍。这篇拆五个问题,它是什么,策略怎么组织,性能数字的口径,装机踩的坑,它哪里不行。等不及的可以直接跳到第四节看坑。

一、它是什么,先看基本盘

Hikyuu 是一个 C++/Python 的开源量化研究框架,作者网名 fasiondog。仓库 2012 年 7 月创建,到今天 6970 次提交。最近一次提交在 2026 年 10 月 26 日。协议 Apache-2.0,允许商用。

项目官方介绍截图

交代一个查资料时的小插曲。我一开始在 GitHub 仓库页面上找 star 数,翻了两遍没找着。后来才反应过来,直接调接口问就行,3631 star、850 fork、131 个关注者。数字拿到手,画像就出来了。

有三个事实放在一起看,基本盘就清楚了。

第一,它是真老,不是那种火两年就弃坑的项目。14 年的提交记录摆在那里,open issue 只有 5 个,处理得很干净。

第二,它是单人业余维护。作者在项目页明说了,这是用业余时间写和维护的,靠知识星球这类付费社区支撑。这件事是双刃剑,后面第五节细说。

第三,它的定位很克制。主语言是 C++,内核管计算,Python 管策略开发,两者打通。它管自己叫量化研究框架,重心放在回测和策略分析上,实盘只留了接口位。

它 README 里有一句话,我认为是理解整个项目的钥匙。官方说,绝不让一个能跑但经不起推敲的策略被当作结论。翻译成人话,手续费怎么算、除权除息日持仓怎么变、空值怎么传播,这些容易糊弄过去的地方,框架里全有明确定义,糊弄不过去。

二、把交易系统拆成零件,是它最值钱的设计

一个完整的交易系统,其实要回答六个问题。市场环境允不允许做,什么条件才做,什么时候进出,每次动多少仓位,错了怎么退,成交价按什么算。

大多数人的做法是把这些搅在一个脚本里。Hikyuu 的做法是每个问题对应一个零件,信号、资金管理、止损止盈、滑点、市场环境判断,每个零件职责单一,可以单独替换。

官方的快速上手示例,几行就是一个完整系统。

代码 1,官方快速上手示例

# 模拟账户,初始资金 30 万
my_tm = crtTM(init_cash=300000)
# 信号,快慢双均线
my_sg = SG_Flex(EMA(CLOSE(), n=5), slow_n=10)
# 每次固定成交 1000 股
my_mm = MM_FixedCount(1000)
# 组装成系统,对平安银行最近 150 根日K跑一遍
sys = SYS_Simple(tm=my_tm, sg=my_sg, mm=my_mm)
sys.run(sm['sz000001'], Query(-150))

这段代码的价值不在策略本身,双均线只是演示。价值在于零件可以换。把信号换成突破类,资金管理换成按比例,系统其余部分一行不用动。用得久了,你会攒出自己的零件库,新策略就是重新配一次零件。

零件摆在台面上,坏哪个换哪个

再往上一层是组合。多个策略可以组成 Portfolio,选股、资金分配、多因子评分各是一个位子,组合还能套组合,官方管这个叫组合即策略。做资产配置或者多策略混合回测,这一层是现成的,不用自己手写调度。

三、166 毫秒这个数字,口径要说清

前面提到的 166 毫秒,出处是官方 README。测试平台 AMD 7950x,任务是对全市场 1913 万条日 K 线算 20 日均线求和。首次加载约 6 秒,预热后 166 毫秒。

166 毫秒是什么概念?一次眨眼大约三百毫秒,全市场算完,眨眼都用不满。

预热前后,差着量级

快的原理不复杂。C++ 内核原生多线程,算过的指标有缓存,第二次直接取。社区的公开反馈和这个量级对得上,十年日线级别的策略验证,几分钟出结果,纯 Python 框架同样的活要跑更久。

有一说一,166 毫秒是官方机器上的数字,我没有在同配置机器上复测过,我的笔记本上具体快多少,我不敢打包票。但加速的来源是实打实的,C++ 内核加缓存加多线程,这三样没有一样是虚的。

数据层也交代一下。四种存储后端,HDF5、MySQL、ClickHouse、SQLite,默认 HDF5,轻量好备份。行情数据全部落在本地,不经过任何第三方平台,这一点对在意数据隐私的人是加分项。

四、我装了一遍,坎在数据这一步

第一步装库。我一开始估五分钟搞定,用默认官方源跑 pip,结果卡了 25 分钟没动静,52MB 的主包进度条都没挪一下。换清华镜像。几分钟装完。这不怪项目,锅在网速,但主包加上一堆依赖,裸装确实是个体力活。

第二步看装进来的东西,我盯着依赖清单看了半天。PySide6 整个 Qt 全家桶,连 WebEngine 都在里面。再算上 akshare、bokeh、clickhouse-connect、tables,一个回测框架装完,虚拟环境里多出 107 个包,占了2GB。

2GB,一个回测框架。它自带一套 Qt 写的图形界面,功能上是加分,代价是装库变重。只想用 Python 接口跑回测的人,这个包体有点超重。

第三步 import。首次导入它要在用户目录建一个 .hikyuu 文件夹,初始化 SQLite,存零件仓库的配置。我的环境对这个目录的写入有安全限制,初始化没跑通,甩出一长串数据库报错。后来才看明白,是环境拦了写入,不是项目的问题。普通电脑上没有这层限制,一般遇不上。但有一点是确定的,第一次跑之前,得先把行情数据导入本地库,官方给了从通达信等来源导入的工具,这一步跳不过去。

装库、数据导入,中间隔着一道坎

装机环节的结论,装得上,但不是无脑顺畅。镜像、依赖、数据导入,三件事都要自己过一遍。对目标用户这不算障碍,对想十分钟跑通的人,这是个劝退点。

五、它哪里不行,这三条是硬的

优点说了不少,短板更值得看清楚。

三根柱子都有裂缝,但都还立着

第一条,生态小。3600 多个 star 的社区规模,意味着你遇到问题时,能搜到的中文教程和答疑帖有限,很多时候要自己啃源码和文档。

第二条,单人维护。14 年的活跃是作者一个人扛下来的,靠业余时间和付费社区支撑。项目现在是活的,但它的命脉系在一个人身上,这是客观风险。

第三条,实盘基础。回测和研究这块它做得很重,实盘只留了事件驱动框架和订单接口位,接券商、做风控,这些工程量都得自己上。想要一键实盘的人,它给不了。

还有一条软的,学习曲线。零件化的思维和写脚本跑回测的习惯不一样,刚开始要转弯。官方甚至明说,这个门槛是有意保留的,原话是框架不会用漂亮的曲线,去弥补你没有思考过的前提。

另外它主要覆盖 A 股,期货、期权和海外市场要自己扩展,多市场需求重的人不用看了。

六、适合谁,一句话说完

认真做 A 股系统化研究的个人投资者和小团队,值得装一遍。行情数据落在本地,策略拆成零件慢慢攒,这套东西用三五年不过时。想两天看到漂亮收益曲线的人,别装。它会让你失望,故意的。

说不好这项目再过五年什么样,单人项目的生命周期我没法替它担保。但这 14 年的提交记录是真的,166 毫秒背后的功夫也是真的。

开头的两个数字,现在可以对上了。14 年攒 7000 次提交和 166 毫秒算完全市场,其实是同一件事,慢功夫堆出的快。这种项目热度不会爆,但一直在。

两扇门,一扇开着,一扇上着锁

留个问题,你现在跑全市场扫一遍指标要几分钟?评论区报个数,我看看这个 166 毫秒对你们是量级碾压还是锦上添花。

项目GitHub地址:github.com/fasiondog/hikyuu

觉得有用的话,把这篇转给同样在挑回测框架的朋友。


#开源项目 #Hikyuu #量化回测 #A股 #量化框架 #Python量化 #C++ #策略回测 #量化工具 #本地化部署 #系统化交易 #程序化交易

Published inAI&Invest专栏

Be First to Comment

    发表回复