Python Parser 因子计算性能简单测试

一直以来,Python 都在量化金融领域扮演着至关重要的角色。得益于 Python 强大的库和工具,用户在处理金融数据、进行数学建模和机器学习时变得更加便捷。但作为一种解释性语言,相对较慢的执行速度也限制了 Python 在一些需要即时响应的场景中的应用。

同时,由于 GIL(Global Interpreter Lock)的存在,在应对多线程和 CPU 密集型任务时,Python 始终无法充分发挥出硬件性能和并行执行任务的优势。

历时2年,DolphinDB 开发了可以识别 Python 语言的全新脚本引擎 Python Parser,它让用户可以用自己最熟悉的 Python 语法实现计算逻辑,并在 DolphinDB 的计算框架上高效运行,享受到 DolphinDB 高性能和分布式的计算能力。想要体验“高性能+分布式 python ”的朋友,欢迎扫描下方二维码试用。

在这里,我们挑选了6个具有代表性的因子,用 Python Parser 进行了实现,并对比DolphinDB Script 和 Python 的实现进行了简单性能测试,为大家提供一些参考。 

测试环境 

测试数据 

  • 2023 年单个交易所某日的 level-2 全天数据

    • 快照数据:24,313,086 行 × 62 列 [约 20.6 GB]

    • 逐笔成交:108,307,125 行 × 19 列 [约 11.0 GB]

    • 逐笔委托:141,182,534 行 × 16 列 [约 11.6 GB]

 性能测试结果

以下为各因子计算逻辑描述,点击链接可获取详细脚本。 

双均线因子

双均线是根据两条周期不一样的均线的相对位置来跟踪趋势的一种方法,本测试中我们使用双均线交叉的方式来判断买卖方向:

  • 短周期均线从下向上突破长周期均线时,意味着当前时间段具有上涨趋势,突破点就是常说的金叉,是股票的买入信号,在代码里,使用前一短均值小于前一长均值且当前短均值大于当前长均值的方式来判断金叉,赋予信号值为 1;

  • 短周期均线从上向下跌破长周期均线时,意味着当前时间段具有下跌趋势,跌破点就是常说的死叉,是股票的卖出信号,在代码里,使用前一短均值大于前一长均值且当前短均值小于当前长均值的方式来判断金叉,赋予信号值为 -1。

在这里我们使用简单移动平均(Simple Moving Average),其中 n 为窗口大小:

因子计算示例代码请点击链接获取!

十档净委买增额

十档净委买增额因子指的是在有效十档范围内买方资金总体增加量,即所有买价变化量的总和,计算公式如下:

其中 level10_Difft 表示 t 时刻的十档净委买增额;bidi,t 表示 t 时刻的第 i 档买方报价;bidQtyi,t 表示 t 时刻的第 i 档买方挂单数量;指示函数 I 表示报价是否在有效释放范围内。

有效十档范围内表示不考虑已不在十档范围内的档位,即表示只考虑以下区间的档位:

最后,对过去 n 时间窗口内的十档净委买增额求和。

价格变动与一档量差的回归系数 

回归模型:

其中,

  • ΔPt 表示 t 时刻的价格变动;lastPricet 表示 t 时刻的最新价格;

  • NVOLt 表示 t 时刻的买卖一档量差;bidQty1,t 表示 t 时刻的买方一档挂单笔数;askQty1,t 表示 t 时刻的卖方一档挂单笔数;

  • α 表示截距;λ 表示斜率;εt 表示 t 时刻的残差。

其中回归系数 λ 为目标因子值。

主动成交量占比

主动成交占比即主动成交量占总成交量的比例,其计算公式如下:

其中 tradeQtyi 表示 i 时刻的成交量;actVolumet 表示 t 时刻起的前 lag 笔订单的主动成交量之和;totalVolumet 表示 t 时刻起的前 lag 笔订单的总成交量;指示函数 I 含义如下:

早盘买卖单大小比 

早盘买卖单大小比即早盘时间段买入订单平均委托量占卖出订单平均委托量的比例的对数,其计算公式如下:

其中 openBidVol 表示早盘时间段买入订单平均委托量;openAskVol 表示早盘时间段卖出订单平均委托量;orderQtyt 表示 t 时刻的委托量;

Ibid 是指示函数,当订单为买方委托单时值为 1,否则为 0;Iask 是指示函数,当订单为卖方委托单时值为 1,否则为 0。

委托量加权平均委托价格

委托量加权平均委托价格是将多笔委托单的委托价格按各自的委托量加权而算出的平均价格,其计算公式如下:

其中 vwapt 表示 t 时刻起的前 lag 笔委托单的委托量加权平均委托价格;orderQtyi 表示 i 时刻委托单的委托量;orderPricei 表示 i 时刻委托单的委托价格。

获取以上6个因子及性能测试的详细脚本,请点击链接查看详情。

想要试用 Python Parser 的朋友,欢迎扫描下方二维码抢先体验。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/4865736/blog/10116110

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。