实用性再提升!DURATION 数据类型现已支持交易日历!

DolphinDB 自 2.00.9/1.30.21 版本开始,提供交易日历功能,并内置世界五十多个交易所的交易日历。借助交易日历,用户可以在 DolphinDB 中便捷查询指定范围内的交易日,或搭配内置函数,基于交易日进行日期偏移计算、数据采样等操作。

最近,交易日历功能再次进行了更新。自 2.00.11.1 版本起,DURATION 数据类型已支持交易日历。

DURATION 数据类型介绍

在使用交易日历进行计算时,用户可以用“正负数字 + 4个大写字母”的形式表示交易所交易日历时间。以纽交所(XNYS)为例,假设 Ti 为基准日期,那么 3XNYS 代表第 Ti+3 个交易日,-3XNYS 代表第 Ti-3 个交易日。除了使交易日期的表达更加精准方便之外,使用 DURATION 数据类型还能避免包含自然日对研究分析的一些不利影响。

DURATION 数据类型支持交易日历之前,在不对日期进行任何处理的前提下,系统对数据进行处理时会包含连同休市日在内的所有自然日。现在,使用 DURATION 数据类型则可以自动去除休市日,在只需要考虑交易日的研究中简化数据处理过程,使计算结果准确。

例如,当计算纽交所 (XNYS) 某只股票每两个交易日的收盘价之和时,使用 DURATION 类型数据,即“2XNYS”进行运算的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
X1 = indexedSeries(date, close)
msum(X1, window=2XNYS)# output#0                 ------
2022.12.30|100.1
2023.01.03|178.99
2023.01.04|167.88000000000002
2023.01.05|177.66000000000003
2023.01.06|167.45000000000005

由于 2023.01.01 和 2023.01.02 是休市日,所以 2023.01.03 对应的收盘价之和应为 2022.12.30 和 2023.01.03 这两天的收盘价之和,即:100.10+78.89=178.99。我们可以发现,系统计算结果时自动去除了两个休市日的影响。

场景案例

用户能基于交易日历 duration 进行一系列的操作和计算,如窗口连接、滑动窗口计算、偏移计算等。

窗口连接

用户可使用 wj(leftTable, rightTable, window, aggs, matchingCols, [rightMatchingCols]) 函数对数据表做基于交易日历的窗口连接,并将交易日作为窗口区间单位。以下为以纽交所(XNYS)交易日作为窗口单位进行窗口连接的一个例子:

t1 = table(2023.01.03 2023.01.06 as date)
date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
t2 = table(date, close)
wj(t1, t2, -2XNYS:0XNYS, <avg(close)>, `date);# output| date       | avg_close         
---|------------|-------------------0 | 2023.01.03 | 89.495            1 | 2023.01.06 | 85.48 

滑动窗口计算

DolphinDB 提供了丰富的函数来支持滑动窗口计算,包括 m 系列/ tm 系列/twindow/tmovingWindowData。

其中,m 系列函数可以对滑动窗口内数据进行聚合计算。以 msum(X, window, [minPeriods]) 函数为例,计算纽交所 (XNYS) 某只股票每两个交易日(2XNYS)的收盘价之和的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
X1 = indexedSeries(date, close)
msum(X1, window=2XNYS)# output#0                 ------
2022.12.30|100.1
2023.01.03|178.99
2023.01.04|167.88
2023.01.05|177.66
2023.01.06|167.45

tm 系列函数可以根据交易日历进行时序滑动窗口计算。以 tmavg(T, X, window) 函数为例、计算纽交所 (XNYS) 某只股票每两个交易日(2XNYS)的平均收盘价的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
t = table(date, close)
select tmavg(date, close, 2XNYS) from t# output| tmavg_date         
---|------------0 | 100.1              1 | 89.4952 | 83.943 | 88.834 | 83.725

twindow(func, funcArgs, T, range, [prevailing=false])函数可以将函数/运算符应用到滑动窗口的数据当中。以纽交所 (XNYS) 某只股票为例,针对T中的每个日期Ti,计算区间 [Ti-1个交易日(-1XNYS),Ti+2个交易日(+2XNYS)]内平均收盘价的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
t = table(date, close)
select twindow(avg, close, date, -1XNYS:2XNYS) from t# output| twindow_avg       
---|-------------------0 | 89.32666666666667 1 | 89.1625 2 | 83.8325 3 | 85.484 | 83.725

tmovingWindowData(T, X, window, [leftClosed = false])函数可以基于交易日返回每个滑动窗口中包含的元素。以纽交所 (XNYS) 某只股票为例,以2个交易日(2XNYS)为窗口长度,返回每个滑动窗口包含的元素的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
tmovingWindowData(date, close, 2XNYS)# output
[[100.1],[100.1, 78.89],[78.89, 88.99],[88.99, 88.67],[88.67, 78.78]]

偏移计算

用户可以根据交易日历,使用 move(X, steps) 或 tmove(T, X, window) 函数对数据做偏移计算。

move(X, steps) 函数可根据交易日历对数据进行移动操作。以纽交所(XNYS)为例,将2022.12.30至2023年1月6日中的交易日对应的收盘价格向后移动两个交易日脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
X1 = indexedSeries(date, close)
move(X1, 2XNYS)# output#0                 ------
2022.12.30|
2023.01.03|
2023.01.04|100.1
2023.01.05|78.89
2023.01.06|88.99

tmove(T, X, window)函数可根据交易日历返回 T 中每个日期向前移动 window 个交易日所对应的 X 中的元素。以纽交所(XNYS)为例,返回将2022.12.30至2023年1月6日中的交易日向前移动两个交易日所对应的收盘价格的脚本如下:

date = [2022.12.30, 2023.01.03, 2023.01.04, 2023.01.05, 2023.01.06]
close = [100.10, 78.89, 88.99, 88.67, 78.78]
t = table(date, close)
select *, tmove(date, close, 2XNYS) from t# output| date       | close | tmove_date
------|------------|-------|-----------0    | 2022.12.30 | 100.1 |       1    | 2023.01.03 | 78.89 |       2    | 2023.01.04 | 88.99 | 100.1 3    | 2023.01.05 | 88.67 | 78.89 4    | 2023.01.06 | 78.78 | 88.99

本次更新后,DURATION 数据类型已支持交易日历,用户可以更加灵活地处理交易数据。我们将继续定期更新交易日历功能,为用户的投资研究提供更多便利。

  • 即刻下载试用 DolphinDB:产品 - DolphinDB
  • 了解交易日历具体使用教程:DolphinDB:如何使用 DolphinDB 交易日历

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

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

相关文章

企业微信设置机器人通过winform提醒WxWorkBOT

配置文件 private static string url ConfigurationManager.AppSettings["WxWorkBOTUrl"].ToString().Trim();启动发送 /// <summary>/// 初始加载 /// </summary>/// <param name"sender"></param>/// <param name"e&qu…

Tarjan算法学习笔记

目录 无向图的割点与桥 时间戳&#xff1a; 搜索树&#xff1a; 追溯值&#xff1a; 割边判定法则&#xff1a; 割点判定法则&#xff1a; 无向图的双连通分量 定理&#xff1a; 边双连通分量(e-DCC)的求法&#xff1a; e-DCC的缩点&#xff1a; 有向图的连通性 追…

智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

随着2024年春运帷幕的拉开&#xff0c;不少人的返乡之旅也即将开启&#xff0c;从这几日的新闻来看&#xff0c;高速上一路飘红。伴随恶劣天气&#xff0c;加上激增的车流&#xff0c;极易导致高速瘫痪&#xff0c;无法正常使用。为解决此问题&#xff0c;助力高速高效运营&…

一些你可能用到的函数和头文件

对于排序想必大家应该挺熟悉的&#xff0c;如果要是给一连串打乱的整数让你由小到大排序&#xff0c;常见的方法有冒泡排序法和选择排序法等&#xff0c;今天我就给大家介绍一个十分好用的方法&#xff0c;就是使用 sort 函数来进行快排。 sort 函数是位于头文件 #include <…

R语言分析任务:

有需要实验报告的可CSDN 主页个人私信 《大数据统计分析软件&#xff08;R语言&#xff09;》 实 验 报 告 指导教师&#xff1a; 专 业&#xff1a; 班 级&#xff1a; 姓 名&#xff1a; 学 …

Linux fdisk命令教程:磁盘分区工具轻松创建和操作磁盘分区表(附实例详解和注意事项)

Linux fdisk命令介绍 fdisk&#xff08;format disk&#xff09;是一个在Linux中用于创建和操作磁盘分区表的菜单驱动的命令行实用程序。它允许您创建最多四个主分区&#xff0c;逻辑分区的数量取决于您使用的硬盘的大小。 Linux fdisk命令适用的Linux版本 fdisk命令在所有L…

Three.js 纹理贴图 - 环境贴图 - 纹理贴图 - 透明贴图 - 高光贴图

文章目录 Three.js 纹理贴图纹理贴图 map属性纹理贴图的映射方式 texture.Mapping纹理贴图的色彩空间 texture.colorSpace中途更新纹理的色彩空间 texture.needsUpdate 纹理加载器 THREE.TextureLoader监听单个材质监听多个材质 - LoadingManager类 1. 颜色贴图与材质的颜色2.渲…

Linux——存储管理

文章目录 基本分区磁盘简介磁盘分类linux的磁盘命名磁盘的分区方式 管理磁盘虚拟机添加硬盘查看磁盘信息磁盘分区流程创建分区创建文件系统挂载mount查看挂载信息 剩余空间继续分区MBR如何划分更多的分区为什么只能有4个主分区扩展分区的引入 逻辑卷LVM是什么特点术语创建LVMVG…

【STL-常用算法】

常用算法 概述: 算法主要是由头文件 algorithm functional numeric 组成algorithm是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等numeric体积很小&#xff0c;只包括几个在序列上面进行简单数学运算的模板函数functional 定…

数据图表方案,企业视频生产数据可视化

在信息爆炸的时代&#xff0c;如何将复杂的数据转化为直观、生动的视觉信息&#xff0c;是企业在数字化转型中面临的挑战。美摄科技凭借其独特的数据图表方案&#xff0c;为企业在数据可视化领域打开了一扇全新的大门。 一、数据图表方案的优势 1、高效便捷&#xff1a;利用数…

vscode实时预览markdown效果

安装插件 Markdown Preview Enhanced 上面是搜索框 启动预览 右键->Open Preview On the Side 效果如下&#xff1a; 目录功能 目录功能还是使用gitee吧 push后使用gitee&#xff0c;gitee上markdown支持侧边生成目录

Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放,Kotlin

Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放&#xff0c;Kotlin class MyImageView : AppCompatImageView {private var mSrcBmp: Bitmap? nullprivate var testIV: ImageView? nullconstructor(ctx: Context, attrs: AttributeSet) :…

一步到位:用Python实现PC屏幕截图并自动发送邮件,实现屏幕监控

在当前的数字化世界中&#xff0c;自动化已经成为我们日常生活和工作中的关键部分。它不仅提高了效率&#xff0c;还节省了大量的时间和精力。在这篇文章中&#xff0c;我们将探讨如何使用Python来实现一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱。 这个任务可能看…

解决Linux Shell脚本错误:“/bin/bash^M: bad interpreter: No such file or directory”

在Linux系统中运行Shell脚本时&#xff0c;你可能会遇到一个常见的错误&#xff0c;错误信息如下&#xff1a; -bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory这个错误通常是由于Shell脚本文件中存在不兼容的换行符引起的。在Windows系统中&#…

YoloV8改进策略:Block改进|DCNv4最新实践|高效涨点|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.991,mAP50-95由0.737涨到0.753,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。…

Linux 系统开始配置

文章目录 备份源为root 设置密码安装基本工具切换root 用户删除snap从 Ubuntu 移除 Snap 后使用 deb 文件安装软件商店和 Firefox在 Ubuntu 系统恢复到 Snap 软件包总结 删除 vim安装neovim在线安装neovim压缩安装neovim安装lazyvim安装剪切板 安装qt配置 Qt 环境不在sudoers文…

链表中的数字相加

不能简单认为将两条链表转变为整数后进行运算&#xff0c;然后将结果转变为链表。因为如果链表很长&#xff0c;这可能会导致整数溢出。 在正常的两个整数加法运算时&#xff0c;我们是从低位开始&#xff0c;然后依次相加更高位的数字&#xff0c;所以不难想到我们需要将链表反…

Git提交忽略指定文件

1.创建.gitignore文件存放到和.git同级的根目录下 #提交git时要忽略的文件或者文件夹&#xff0c;根据自己的需求来写 .idea target*.log *.iml *.jar *.war *.nar *.ear *.zip *.rar *.tar.gz2.提交.gitignore文件文件到远程仓库 分两种情况 .idea、target等无关文件已经提交到…

(每日持续更新)jdk api之NotSerializableException基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

【动态规划】【记忆化搜索】【回文】1312让字符串成为回文串的最少插入次数

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 记忆化搜索 回文 字符串 LeetCode1312. 让字符串成为回文串的最少插入次数 给你一个字符串 s &#xff0c;每一次操作你都可以在字符串的任意位置插入任意字符。 请…