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

news2024/12/25 12:46:12

一直以来,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 的朋友,欢迎扫描下方二维码抢先体验。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)

NVM 包管理工具 安装 访问NVM-Windows的GitHub页面:点击nvm-setup.exe。 根据提示进行下一步,文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功,它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…

【LeetCode: 2034. 股票价格波动 | 有序表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

基于SSM的学院学生论坛系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

ViT论文逐段精读【论文精读】

如果说过去一年中在计算机视觉领域哪个工作的影响力最大,那应该非 vision consumer 莫属了,因为它挑战了自从 2012 年 Alexnet 提出以来卷积神经网络在计算机视觉领域里绝对统治的地位。它的结论就是说,如果在足够多的数据上去做预训练&#…

在Unity使用自定义网格生成一个球体

1.在Unity场景中新建一个空物体,在空物体上添加MeshRenderer和MeshFilter组件。 2.新建一个C#脚本命名SphereMesh,将脚本挂载到空物体上,如图: 运行场景就可以看到生成一个球体 全部代码如下: using UnityEngine;public class S…

非支配排序遗传算法NSGA + 带精英策略的非支配排序遗传算法NSGA-Ⅱ 解析

xi 优于 xj > 则称 xi 非支配于 xj 一、NSGA 1、识别非支配个体(使用非支配排序算法) -> 从而将种群分为多层 通过非支配排序算法对这个规模为 n 的种群进行分层的具体步骤如下: ( 1 )设 i 1 ;…

Java使用模板导出word、pdf

使用deepoove根据模板导出word文档&#xff0c;包括文本、表格、图表、图片&#xff0c;使用WordConvertPdf可将word文档转换为pdf导出 模板样例&#xff1a; 导出结果&#xff1a; 一、引入相关依赖 <!-- 工具类--><dependency><groupId>cn.hutool&…

DiffusionDet:第一个用于物体检测的扩散模型(DiffusionDet: Diffusion Model for Object Detection)

提出了一种新的框架——DiffusionDet&#xff0c;它将目标检测定义为一个从有噪声的盒子到目标盒子的去噪扩散过程。在训练阶段&#xff0c;目标盒从真实值盒扩散到随机分布&#xff0c;模型学会了逆转这个噪声过程。 在推理中&#xff0c;该模型以渐进的方式将一组随机生成的框…

【Java每日一题】— —第二十四题:编程定义一个长方形类Rectangle(2023.10.08)

&#x1f578;️Hollow&#xff0c;各位小伙伴&#xff0c;今天我们要做的是第二十四题。 &#x1f3af;问题&#xff1a; &#xff08;1&#xff09;定义成员变量&#xff1a;长&#xff08;int height&#xff09;&#xff0c;宽&#xff08;int width&#xff09;&#xf…

springboot整合pi支付开发

pi支付流程图&#xff1a; 使用Pi SDK功能发起支付由 Pi SDK 自动调用的回调函数&#xff08;让您的应用服务器知道它需要发出批准 API 请求&#xff09;从您的应用程序服务器到 Pi 服务器的 API 请求以批准付款&#xff08;让 Pi 服务器知道您知道此付款&#xff09;Pi浏览器向…

如何系列 如何使用ff4j实现功能迭代

文章目录 功能开关是什么为什么需要功能开关&#xff1f;功能流程组件业务接入端常用Api 功能开关管理端 高级面向切面 AOP审计和监控缓存微服务中使用 概念功能 Feature功能存储 FeatureStore属性 Property属性存储 PropertyStoreFF4J架构FF4J使用开关策略 FlippingStrategy功…

【赠书活动】如何让AI在企业多快好省的落地

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

优化理论笔记

目录 一、前言 二、优化问题的基本要素 三、优化问题分类 四、最优值类型 五、最优化方法分类 六、非约束优化 1、问题定义 2、优化算法 1&#xff09;一般局部搜索过程 2&#xff09;集束搜索 3&#xff09;禁忌搜索 4&#xff09;模拟退火 5&#xff09;蛙跳算法…

使用Resnet进行图像分类训练

本文仅给出最基础的baseline进行图像分类训练&#xff0c;后续可在此代码基础上对模型结构进行修改。 一、图像分类数据集 现有一份图像类别数据集&#xff0c;类别为Y和N&#xff0c;数据目录如下&#xff1a; /datasets/data/ |-- train/ | |-- Y/ | |-- N/划分训练集…

超自动化加速落地,助力运营效率和用户体验显著提升|爱分析报告

RPA、iPaaS、AI、低代码、BPM、流程挖掘等在帮助企业实现自动化的同时&#xff0c;也在构建一座座“自动化烟囱”。自动化工具尚未融为一体&#xff0c;协同价值没有得到释放。Gartner于2019年提出超自动化&#xff08;Hyperautomation&#xff09;概念&#xff0c;主要从技术组…

法律战爆发:“币安退出俄罗斯引发冲击波“

币安是全球最大的加密货币交易所之一&#xff0c;经历了几个月的艰难时期&#xff0c;面临着各种法律挑战&#xff0c;最近将其俄罗斯分公司的所有资产出售给了一家几天前才成立的公司。 这家主要交易所的麻烦始于 6 月份&#xff0c;当时美国证券交易委员会 (SEC)起…

PyTorch Lightning - LightningModule 训练逻辑 (training_step) 异常处理 try-except

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133673820 在使用 LightningModule 框架训练模型时&#xff0c;因数据导致的训练错误&#xff0c;严重影响训练稳定性&#xff0c;因此需要使用 t…

消费者的力量:跨境电商如何满足新一代的需求

当代跨境电商行业正处于高速发展的阶段&#xff0c;而新一代消费者正在塑造这一行业的未来。他们的需求和消费行为发生了巨大变化&#xff0c;对于跨境电商来说&#xff0c;满足这一新一代消费者的需求至关重要。本文将探讨新一代消费者的需求以及跨境电商如何满足这些需求的方…

【Bond随你温故Azure Architecture】之HADR篇

上次复盘数据保护策略还是在《数据需要找回怎么办&#xff1f;我们如何选择正确的恢复/退回方式&#xff1f;》探讨了在application&DB层面上&#xff0c;不同level的数据保护有不同策略。而它也恰好是今天HA&DR版图的一角&#xff08;RDBMS部分&#xff09;&#xff0…

【机器学习】svm

参考 sklearn中SVC中的参数说明与常用函数_sklearn svc参数-CSDN博客https://blog.csdn.net/transformed/article/details/90437821 参考PYthon 教你怎么选择SVM的核函数kernel及案例分析_clfsvm.svc(kernel)-CSDN博客https://blog.csdn.net/c1z2w3456789/article/details/10…