开源量化研究框架 · 金融与交易正确性优先

HikyuuHikyuu
高性能量化研究引擎

基于 C++/Python 的开源量化研究框架:金融与交易正确性优先,策略与组合同构、可任意深度嵌套、部件自由替换的高性能量化引擎。内核是交易理论与金融语义的完整与正确——不让一个「能跑通」却不成立的策略,被当成结论。

6s / 166ms
1913 万日 K 线加载 + 20 日均线求和:首次 / 预热后(AMD 7950x)
3 层
内建金融语义(交易理论 / 交易规则 / 计算)
3 种
组合运行模式(A 信号聚合 / B 资金分配 / C 共享账户)
4 种
存储方式(HDF5 / MySQL / ClickHouse / SQLite)
核心优势

为什么选择 Hikyuu

强大的功能特性,助力您的量化交易研究

金融正确性优先:交易理论与金融语义完整且正确

一笔交易在金融上该怎样成立——何时成交、成本由哪几项构成、除权时持仓与现金如何变化、绩效用什么口径、空值与非有限值怎么传播——在框架里都是完整且显式的:环节不缺、规则被真正执行、可被逐项校验。立意只有一句:不让一个「能跑通」却不成立的策略,被当成结论。

组合即策略:一个引擎覆盖系统化交易 / 资产配置 / 多因子

组合与策略是同一件事:组合节点同样持有完整的交易语义,可任意深度嵌套;同一引擎支持三种运行模式(A 信号聚合 / B 资金分配 / C 共享账户),覆盖多策略观点叠加、FOF/MOM 再平衡与多策略共享资金池。团队 / 个人的策略池可以整体回测,也可以拆开算账。

一张理论地图,而非黑盒

把做策略该考虑的环节逐项列出(环境 → 条件 → 信号 → 仓位 → 退出 → 滑点 → 成本;组合层:选样 → 资金分配 → 风控),照图逐项填写,路径本身就是入门路径。它不是自动交易工具:不内置券商对接、不承诺自动下单,OrderBroker 只是可插拔接口,对接与否由你决定并承担合规责任。适合想把系统化交易认真学一遍的人。

极致性能,轻松构建专属量化应用

C++ 核心库原生支持多线程与多核加速;Python 接口层集成 TA-Lib,与 numpy、pandas 无缝互转。AMD 7950x 实测:1913 万日 K 线首次加载约 6 秒,预热后计算 20 日均线并求和仅需 166 毫秒。核心库可独立剥离,快速构建自定义工具。

自主可控,搭建专属云量化平台

结合 Python + Jupyter 与云服务器,搭建完全自主可控的云量化平台,手机、平板、电脑随时随地访问。无缝对接 numpy、scipy、pandas、TensorFlow 等 AI 与数据分析工具,按需自定义界面、实现服务化部署。

开源透明,工程可验证

Apache 2.0 开源协议,代码透明审计无忧。核心代码 1300+ 处显式校验拦住规则与输入边界,1600+ 个 doctest 用例、1.6 万条断言按「一模块一套件、一边界一用例」组织;Windows / Ubuntu / macOS 三平台 CI;C++ 核心可独立剥离,核心数据与策略全量本地可控。

快速上手

简洁的API设计

pip install hikyuu 即可安装,用 HikyuuTDX 图形界面一键导入 A 股历史行情,几行代码跑通第一个回测。

查看更多示例
from hikyuu.interactive import *

# 创建模拟交易账户进行回测,初始资金 30 万
my_tm = crtTM(init_cash = 300000)

# 创建信号指示器(以 5 日 EMA 为快线,其 10 日 EMA 为慢线)
# 快线向上穿越慢线时买入,反之卖出
my_sg = SG_Flex(EMA(CLOSE(), n=5), slow_n=10)

# 固定每次买入 1000 股
my_mm = MM_FixedCount(1000)

# 创建交易系统并运行
sys = SYS_Simple(tm = my_tm, sg = my_sg, mm = my_mm)
sys.run(sm['sz000001'], Query(-150))

组合即策略:组合可作为节点,任意深度嵌套

from hikyuu.interactive import *

# 1. 每个子系统都是一套完整的系统化交易:各自的 SG / MM / ST 与账本
def make_leaf(code, sg):
    sys = SYS_Simple(tm=crtTM(init_cash=100000), sg=sg,
                     mm=MM_FixedPercent(0.5), st=ST_FixedPercent(0.05))
    sys.to = sm[code].get_kdata(Query(-500))    # 绑定自身 K 线
    return sys

trend = make_leaf("sh600000", SG_Cross(EMA(CLOSE(), n=5), MA(CLOSE(), n=60)))
grid = make_leaf("sh600004", SG_Cross(EMA(CLOSE(), n=3), MA(CLOSE(), n=10)))

# 2. 组合工厂只做投资组合该做的事:谁参与(SE)+ 分多少钱(AF)
group = PF_SignalAggregate(tm=crtTM(Datetime(202001010000), 300000), adjust_cycle=5)
group.add(trend)
group.add(grid)

# 3. 这个组合还能作为节点参与更大的组合(多资产多策略的逐层聚合)
top = PF_Simple(tm=crtTM(Datetime(202001010000), 1000000),
                af=AF_FixedWeightList([0.6, 0.4]), adjust_cycle=5)
top.add(group)
top.add(make_leaf("sh600005", SG_Cross(EMA(CLOSE(), n=10), MA(CLOSE(), n=30))))

# 4. 一次运行,整个组合在同一账户内统一结算
top.run(Query(-500))
print(top.tm.get_funds().total_assets)
系统架构

交易系统化架构

每一行都是一个可替换的卡口,换掉任何一个,结算、成本与校验仍由框架承担,整体金融语义严格自洽

开源项目

浏览源码

欢迎 Star、Fork,参与贡献

支持项目

感谢捐赠,让 Hikyuu 走得更远

因作者精力有限,对捐赠用户的问题会优先解答、确保响应

捐赠计划与附赠详见 捐赠计划说明

有意赞助或深度合作请私下联系作者: fasiondog@sina.com
也可以通过 GitHub issue 联系: GitHub Issues

社区支持

加入我们

交流以微信群为主、QQ 群为辅。加入任一社群请备注「加入 hikyuu」,未备注将无法通过验证~

微信群

微信群二维码

加入请备注「加入 hikyuu」

QQ 群

QQ群二维码

加入请备注「加入 hikyuu」

公众号

hikyuu量化

关注获取最新资讯、性能测试与技术文章

知识星球

Hikyuu量化星球

首年 300 元 / 续费半价 · 3 台设备登录 · 含专属微信群及策略部件库

需要的帮助:测试并反馈 Bug · 编写文档 · 开发新功能 · 网站优化
建议通过在 GitHub / Gitee / GitCode 开 issue 的方式贡献以上内容