【核心技术】念念不忘,必有回响 – 为速度而生的开源量化交易系统来了
董可人/CEO
为什么武术叫功夫?功夫其实就是时间。—— 《一代宗师》
一直以来,交易速度优化都是一门小众而高深的技艺,追求低延迟的量化交易者们就像在一片黑暗的荒野上独自前行,资料奇缺且讨论匮乏,除了在浩渺的互联网上搜索蛛丝马迹,在代码和机器喧嚣中寻找突破线索外,我们并没有更多可以参考求助的渠道或工具。在其中寻求到了独门秘籍的高手们,往往又视若珍宝不肯外传,只空留一些只言片语引大家遐想,这是一个传说远远多于实证的江湖。作为一个(用生命)热爱代码的工程师,我始终认为科技的进步应该始于开放探索的科学精神,基于这个理念,我和我的小伙伴们,精心提炼出我们过去多年在低延迟量化交易执行系统上的经验,打造了一个开源项目⎡功夫⎦,希望可以帮助到在延迟优化之路上苦闷前行的朋友们。
我们为这个项目起名叫做“功夫”,取为成宗师必内外兼修之意。功夫想要解决两个核心问题:
- 交易数据实时存储 – 为了追求交易速度,很多情况下交易者不得不放弃存储功能以换取更高的执行速度,这给盘后分析带来很大困难,使分析缺乏必要的数据支持。
- 交易延迟分析及优化 – 交易者缺乏测量交易延迟的标准化工具,关于延迟的统计数据往往只能凭感觉估算,在缺乏可靠的数据采集手段的情况下,优化工作变得更加艰难。
针对这两个问题,功夫在系统架构上做了特别的设计,目前系统包括以下三个模块:
- 易筋经 – 金融交易其实是一种很特殊的应用,不同于大多数互联网应用,它要处理的是流式的时间序列数据,特别是对于低延迟交易来说,任何读写上的开销都让人十分痛苦。针对这种数据形式,常见的关系型数据,NoSQL数据库都显得不合用,最终那些追求极致速度的人们大多需要舍弃实时数据存储的功能。而我们相信,在交易策略上若要百尺竿头更进一步,完备的数据存储是必不可缺的,就像习武者要精进,必要修炼顶级内功。我们希望易筋经可以成为大家在交易数据存储上的标配,替代掉 MySQL、CSV文件、甚至MongoDB/Redis 之类的低效存储方法。
- 咏春 – 策略执行引擎,提供 C++ 及 Python (2.7) 开发接口,利用易筋经特性,咏春还提供一系列交易数据分析工具。纵然内功深厚,交手仍需招式,咏春定位在解决策略执行时的各种需求,在设计上,咏春封装了所有和内存、线程、状态机有关的操作,都由 C++ 代码执行,确保执行效率和速度;交易逻辑相关的代码则通过接口的形式暴露给使用者们,对于不熟悉 C++ 开发的策略师们可以选用 Python 接口,一方面相当程度上仍然保证执行速度,另一方面以后如果想切换到更高速的 C++ 方式,过度会变得很容易。
- 长拳 – 交易数据标准化定义及转换器,支持灵活对接不同交易柜台。国内的量化从业者们应该都懂,十几种风格迥异的交易柜台,给大家在策略开发上造成很多额外负担;同样的交易逻辑,在切换到不同柜台上时,往往面临要重新开发的问题,使用的柜台多了以后,很容易造成管理混乱,更新困难的局面。长拳是功夫用来切割柜台和交易逻辑的利器,我们希望长拳可以成为在柜台接口之上的数据标准,就像武者的基本功,搭好了架子再练任何功夫都可循序渐进。
架构讲完,或许大家仍是一头雾水,让我来精简下,使用功夫,你可以做到这些事情:
- 使用 C++ 或 Python 开发你的交易逻辑,无需关心内存分配,指针管理,线程调度,网络连接等机器底层操作;
- 系统自动存储所有交易相关数据,包括实时行情、委托记录、成交回报,可以实时或盘后查看,存储功能不会增加任何延迟,无需担心性能;
- 系统内建丰富的统计工具,可以让你随时统计、查看系统内各个环节的处理时间,例如行情->下单,下单->成交,策略运算等指标;
一图胜千言,使用功夫,你就可以随时得到如下的统计信息(图示主要为了展示功能性,其中延迟数字在开发机上得到,不具备参考性,关于如何得到更优的延迟数字,后续会有文章说明):
关于功夫内部各个模块上的设计思路,我会逐步推出系列文章进行解释,请大家关注我的专栏 硅商冲击。
项目初创,我们希望代码结构足够精简,确保我们解决的是大家真正关心的问题,因此尚没有花费精力进行图形界面设计之类的工作,目前系统以命令行方式运行。希望早期关注的朋友们能尽快给我们提供反馈意见,帮助我们进一步完善好这个开源项目。
要进一步了解功夫的代码和相关文档,请关注我们在 Github 上的地址:https://github.com/taurusai/kungfu
同时我们建立了 QQ 交流群(312745666,入群问题答案:taurus.ai),欢迎尝鲜的朋友进来,有任何使用问题,可在群内找我们答疑。项目初创,我们暂时不会对入群进行审核,以后会根据需要定期清理,所以入群还需谨慎。
最后,关于功夫的更多动态,请大家关注我们的官网:https://www.kungfu-trader.com/
寒冬将至,长夜漫漫,希望这个小小的开源项目,今后可以陪你在这淡如水的市场一路前行。
提一壶酒,点一盏灯,听一场雨。有雨就有痕,有灯就有人,有酒就有魂。——《一代宗师》