首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DolphinDB:金融高频因子流批统一计算神器!

Flink支持SQL和窗口函数,高频因子用到的常见算子Flink中已经内置实现。因此,简单的因子用Flink实现会非常高效,运行性能也会非常好。但Flink最大的问题是无法实现复杂的高频因子计算。...3、响应式状态引擎(Reactive State Engine) 响应式状态引擎实际是一个计算黑盒,历史数据已经验证的DolphinDB因子代码(表达式或函数)以及实时行情数据作为输入,输出实时因子值...由于静态的历史数据集开发和验证高频因子远比流数据开发更为简单,响应式状态引擎显著降低了流式高频因子的开发成本和难度。...每一个算子(有状态和无状态)DolphinDB中都可以转化为一个唯一的字符串序列。据此,我们可以删除重复的算子,提高计算效率。 3.3 内置的状态函数 状态算子计算需要用到历史状态。...(tmp) 需要注意的是,如果多个状态引擎是同一个输出表,该输出表必须是一个共享表。没有共享的表不是线程安全的,并行写入可能会导致系统崩溃。

3.9K00

从计算、建模到回测:因子挖掘的最佳实践

流计算引擎的输出也是数据表的形式,因此多个计算引擎可以跟搭积木一样自由组合,形成流式处理的流水线。 4.1 流式增量计算 金融方面的原始数据和计算指标,时间通常有延续性的关系。...下面输入一些样本数据来观察流计算引擎的运行。...事实DolphinDB提供一种更为简洁的批流一体实现方案,那就是历史数据建模,通过数据回放,也用流引擎来实现计算。...实际考虑数据存储方案,需要从以下三个方面考虑: 选择 OLAP 引擎还是 TSDB 引擎。OLAP 最适合全量跑批计算,TSDB 则在序列查询优势突出,性能和功能上比较全面。...因此,做计算除了可以用 context by 组字段并行以外,还可以用 map 语句加速输出结果。

6.1K22
您找到你想要的搜索结果了吗?
是的
没有找到

新型行情中心:基于实时历史行情的指标计算和仿真系统

交易数据的不唯一性 时序数据库的一个表中,多个 tag 的组合构成唯一的时间序列。一个序列不同时间戳通常具有唯一值,例如一个物联网传感器,某一个时间点具有唯一采样值。...但是金融市场的交易规则决定了同一个股票同一间戳可以形成多笔交易(不同的对手盘导致)。很显然,对手盘的订单号、成交价格不适合作为新的tag,来确保唯一性。...最好能有一门SQL基础扩展的脚本语言来支撑复杂的计算需求。对于行情中心的计算需求,函数式编程和向量式编程可以提升开发的效率和运行的效率。...DolphinDB的co-location存储架构会强行将同一交易日的订单表和成交表存储同一数据节点中,关联计算只需要读取同一节点数据,如图7左侧所示。...DolphinDB中的即时编译功能显著提高了for循环,while循环和if-else等语句的运行速度,特别适合于无法使用向量化运算但又对运行速度有极高要求的场景。

3.2K21

硕士毕业半年的茫茫社招路

在学习这门课程之前,对TCP的理解基本停留在对中文教材上相关内容的背诵阶段,什么三次握手四次挥手之类的,说实在的与八股文无异;但在完成这门课的课程作业的过程中,实实在在地较深入地理解了为什么TCP...字节跳动抖音 最早大概是2020年的11月,HR领英勾搭,由于我一直忙着其他的事情,就没有开始他们的面试流程,直到2021年1月多的时候,才继续跟进他们的流程。...和他说,容再考虑考虑。 好在世事时常柳暗花明又一村。xj在读研之前曾经一家叫DolphinDB的时序数据库公司实习了相当长的一段时间。我们之前也聊起过多次他在那边实习做的许多有意思的工作。...有句话说“面试官是一家公司招人的门面”,这句话绝没有夸张的成分。所以很自然的,我会把DolphinDB的面试看作是一个很好的提前了解潜在的未来同事的机会。...之后主管问我对数据库有没有什么了解,只有对levelDB有一定的了解,于是主管和我深入探讨了时序数据库场景下应用LSMT(Log Structured Merge Tree)需要注意的问题和可优化的地方

1.2K31

随机森林 – Random forest

随机森林是由很多决策树构成的,不同决策树之间没有关联。...当每个样本有M个属性决策树的每个节点需要分裂,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。...本文对 scikit-learn、Spark MLlib、DolphinDB、XGBoost 四个平台的随机森林算法实现进行对比测试。评价指标包括内存占用、运行速度和分类准确性。...随机森林可以很多地方使用: 对离散值的分类 对连续值的回归 无监督学习聚类 异常点检测 百度百科+维基百科 百度百科版本 机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定...查看详情 维基百科版本 随机森林或随机决策森林是用于分类,回归和其他任务的集成学习方法,其通过训练构建多个决策树并输出作为类的模式(分类)或平均预测(回归)的类来操作。个别树木。

1.2K10

干货 | 高频多因子存储的最佳实践

最适合金融计算的输出方式 金融行业的数据分析通常需要以面板模式进行。...因子数据实际存储通常会有宽表和单值模型两种选择。...需要注意的是,由于此处因子值用的是随机浮点数,几乎没有重复,所以压缩比很低。...1、新增因子:新增因子的场景,窄表模式只需要进行 Insert 操作,将新增因子数据写入;而宽表模式需要先进行addColumn 操作,然后更新新增因子列数据,DolphinDB 目前的更新机制是重写...根据窄表模式下的分区规则,对指定因子数据更新,可以精确定位到因子所在分区,并进行修改,所以耗时秒级;而宽表模式的更新方式如上节所述原因,耗时非常长。

1.6K20

11年逆袭,寒门专升本职高生终成MIT博士生!自学CMU课狂发5篇顶会,全网热议

据说,周信静之前,Mike Stonebraker已经好几年没有招过学生了。 在这之前,他曾在杭电取得本科学位,浙大取得硕士学位。...同时,他靠着网上高质量的公开课,始终没有停下学习的脚步。 大专二年级,他写的项目就体现出了很高的代码水平,用c++实现了一个raft core。...而周信静面试,展现出的对raft协议原理和实现细节的熟悉程度,甚至让面试官惊掉了下巴: 30分钟的对话过程中,基本捋了一遍如何使用raft协议实现一个分布式数据库,从客户端到服务端的框架设计。...入职之后,便直接让他以实习生的身份参与到了DolphinDB分布式时序数据库的内核研发当中。 期间,团队在用哈希方法来改进SQL引擎分组计算的性能,遇到了瓶颈。...回顾这段经历时,周信静总结道:DolphinDB实习,自己发现了Andy的DB课程,被深深吸引。 他希望能将经典的idea应用到DB系统里,甚至创造一些idea。因此,他研究生入坑了DB。

44720

一些常见的新手问题

另一条是直接用文本编辑器写代码,然后命令行运行。文本编辑器推荐 SublimeText。 3. IDLE 里为什么只能写一行代码? IDLE 默认打开的是 Python 命令行,可用来调试语句。...写代码需要点击菜单的 File,选择 New File(有的是 New Window),新打开的文件中编写。写完后可以保存在电脑,点击菜单的 Run,选择 Run Module 可运行。...SublimeText 里的 input 代码为什么会报错? Sublime 的 Python 运行环境和命令行有一些差异,不能模拟输入,这一问题在很多在线运行环境中也存在。...所以编写输入相关的代码请在命令行或 IDE 中运行。 5. 输入为什么报错?输入的值比较大小为什么结果不对?...6. print 为什么报错? 需要输出一个已定义的值。输出字符串需要加引号。Python3 的 print 需要加括号。 7. 该学 Python2 还是 Python3?

72790

命令行的数据科学第二版 一、简介

如果是,那你为什么还要在意命令行能在数据科学领域做一些什么呢?命令行是不是有什么东西是其他技术和编程语言所没有的呢? 这些都是真实存在的问题。第一章,将如下回答这些问题。...第八章,解释了如何通过并行运行来加快你的命令行和工具的速度。使用一个叫做 GNU Parallel 的命令行工具,你可以将命令行工具应用于非常大的数据集,并在多个核心甚至是远程机器运行它们。...1.3 什么是命令行讨论“为什么你应该将命令行用于数据科学”之前,让我们先来看看“命令行实际是什么样子”(你可能已经很熟悉了)。...例如,Python、R 和 Apache Spark 允许你运行命令行工具并捕获它们的输出第十章中用例子证明了这一点。...此外,你的命令可以以一个特定的时间间隔运行远程服务器运行,并在许多数据块并行运行(更多信息请参见第八章)。 因为命令行是自动化的,所以它变得可伸缩和可重复。

30210

Linux退出命令为初学者解释(附例)

要访问其官方文档,请执行以下命令: help exit 的系统,上述命令产生以下输出: exit: exit [n]     Exit the shell.         ...现在,有些人可能会问为什么(或者说是什么时候)N是必需的。 那么,基本是退出状态的值 - 主要是脚本(bash脚本)中使用命令使用。 某些情况下,此值映射到人为可读的错误,警告或通知。...现在,这里是另一个例子,在这里没有显式地从root shell中传递任何退出状态,但是父shell中查询,返回了根shell中运行的最后一个命令的退出状态: 定义陷阱 如果需要,您还可以定义一些您希望系统...例如,使用以下命令: trap "rm hypotheticalfile.txt" EXIT 事实的系统没有这样的文件,所以执行exit命令后,shell应该显示一个错误。...有关陷阱的更多信息,请运行以下命令: help trap 结论 对于exit命令,没有什么学习曲线,特别是如果你是一个命令行初学者。 你现在可能会同意这一点。

1.7K20

Node.js CLI 工具最佳实践

在这个指南中,列出了各个重点领域的最佳实践,都是与 CLI 工具交互最理想的用户体验。 1 命令行的经验 本节将会介绍创建美观且高可用的 Node.js 命令行工具相关的最佳实践。...3 通用性 本节将介绍使 Node.js CLI 与其他命令行工具无缝集成有关的最佳实践,并遵循 CLI 正常运行的约定。 本节将回答以下问题: 可以导出 CLI 的输出以便于分析吗?...可以将 CLI 的输出通过管道传递到另一个命令行工具的输入吗? 是否可以将其他工具的结果通过管道传输到此 CLI?...❌ 错误: 由于错误的路径分隔符等因素,CLI 将在一些操作系统无法运行,即使代码中没有明显的功能差异。...➡️ 细节: 当您运行 CLI 并解析输出来测试 CLI ,您可能倾向于使用 grep 命令,以确保某些字符存在于输出中,例如在不带参数的情况下运行 CLI : const output = execSync

3.3K10

gtest参数化_gopro三折杆教程

不过总结一下,通常情况下,比较理想的优先级为: 命令行参数 > 代码中指定FLAG > 系统环境变量 为什么我们编写的测试案例能够处理这些命令行参数呢?.../foo_test 没有指定过滤条件,运行所有案例./foo_test –gtest_filter=* 使用通配符*,表示运行所有案例....使用过程中发现一个问题,当我同时设置了–gtest_filter参数输出的xml报告中还是会包含所有测试案例的信息,只不过那些不被执行的测试案例的status值为“notrun”。...而我之前认为的输出的xml报告应该只包含需要运行的测试案例的信息。不知是否可提供一个只输出需要执行的测试案例的xml报告。...这是曾经遇到过的一个问题,最后的处理办法是既代码中设置FLAG,又在命令行参数中传入–gtest_catch_exceptions。

67520

命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,这些都是啥意思?

不过对于刚接触 Linux 或者刚接触命令行界面的同学,可能会有些难以理解它们之间的区别(事实当初也是这样)。 虽然这个话题已是老生常谈,搜索一下应该也能找到大把的相关文章。...但事实,现在依然有着很多的软件开发者、系统管理员,或者是高级用户使用命令行界面操作计算机。其中很大一个原因,就是效率:熟记命令的前提下,使用命令行界面往往要比使用图形用户界面来得快。...Bash 为例),只需运行这么一句: rename 's/\.tpl$/\.blade.php/' ./**/*.tpl 命令行操作的高效率等优点,也是现在许多图形化的计算机系统依然没有放弃提供命令行操作方式的原因...就连 Windows 都有自带 cmd.exe 和 PowerShell 等命令行程序(事实搜索「批量重命名」,可以看到很多方案都是通过「Windows 命令提示符」实现的)。...我们可以终端窗口中上下翻页查看过去的输出内容,这完全是终端提供的 feature,与 Shell 没有半毛钱关系; 命令提示符 (Prompt) 是一个完全的 Shell 概念,与终端无关; 行编辑、

3.6K62

【Linux系统编程】Linux第一个小程序——进度条

它通常用于处理输入和输出操作,以提高效率和性能。 缓冲区相当于一个中间层,位于数据的来源和目的地之间。当进行输入或输出操作,数据先暂时存储缓冲区中,然后再批量地传输到目标位置或从源位置读取出来。...当进行输入或输出操作,数据先暂时存储缓冲区中,然后再批量地传输到目标位置或从源位置读取出来。 也就是是,不管我们有没有加\n,我们的hello world这个字符串都会被暂存到缓冲区里面。...当程序结束,通常会自动刷新输出缓冲区。这意味着程序执行完成后,输出缓冲区中的所有数据将被写入到相应的输出设备(如终端或控制台)并在屏幕显示出来。...那现在,想大家就明白了,为什么上面两个程序的结果有差异? 第一个程序我们加了\n,所以执行printf遇到\n就会刷新缓冲区,那么hello world就直接显示到了显示器。...实际我们无论打印什么类型的数据,显示器显示的内容都是一个个的字符,打印整数,它们也会以字符的形式显示屏幕

18710

dotnet 配置 Gitlab 的 Runner 做 CI 自动构建

为什么需要使用 Gitlab 的 Runner 做自动构建,原因是之前是用的是 Jenkins 而新建一个底层库项目想要接入自动构建等,需要来回 Gitlab 和 Jenkins 配置,大概步骤差不多有...于是就和头像大人商量使用虚拟机环境的方法,空闲的服务器安装了 VirtualBox 虚拟机,然后虚拟机部署 Runner 接着项目接入,这样就可以确定打包的环境,同时迁移服务器也比较方便 团队内负责团队各个项目用到的...分支被 push 触发发布 请注意在本地将上面命令运行一下,确定命令可以运行 为什么需要在 NuGet 使用 -ApiKey 输入全局配置的变量而不是使用 nuget.config 的配置?...如果服务器被弄坏了,只需要将备份的虚拟机硬盘拿出来重新新的服务器使用 如果存在全局的 Runner 设置,请在 job 输出看具体在哪个 runner 运行,如下面有一个全局共享的运行 Running...是否应该在手动推 Tag 触发打包,那么这个手动推的 Tag 如何关联到 NuGet 版本号 最好不要写脚本,因为脚本写起来只有了解版本的小伙伴才能了解,基本不可维护,除非只是调用这个命令行

2.2K20

一些常见的Python新手问题

PS:如果你是专业程序员,也可以考虑直接用文本编辑器写代码,然后命令行运行。文本编辑器推荐 SublimeText。 3. IDLE 里为什么只能写一行代码?...写代码需要点击菜单的 File,选择 New File(有的版本是 New Window),新打开的文件中编写。写完后可以保存在电脑,点击菜单的 Run,选择 Run Module 可运行。...SublimeText 里的 input 代码为什么会报错? Sublime 的 Python 运行环境和命令行有一些差异,不能模拟输入,这一问题在很多在线运行环境中也存在。...所以编写 input 相关的代码请在命令行或 IDE 中运行。 5. 通过 input 输入的值比较大小,为什么会报错/结果不对? Python3 的 input 对于任何输入都会当做字符串处理。...编程初学者如何使用搜索引擎 推荐方式: QQ 群讨论(155816967) 论坛发帖(bbs.crossincode.com) 提问尽量明确问题,附上: 想要实现的功能描述 代码 输出或报错信息 12

47260

【Nodejs】326- 从零开发一个node命令行工具

什么是命令行工具? 命令行工具(Cmmand Line Interface)简称cli,顾名思义就是命令行终端中使用的工具。...然后我们测试一下,终端中输入 kid,会提示: zsh: command not found: kid 为什么会这样呢?...回想一下,通常我们使用一个 cli 工具,都需要先安装它,比如 vue-cli,使用前需要全局安装: npm i vue-cli -g 而我们的 kid-cli 并没有发布到 npm ,当然也没有安装过了...这里我们引用一个专门处理命令行交互的包:commander。 npm i commander --save 然后改造index.js ? 运行 kid -h 会输出 ?...通过 kid proxy 和 kid tencent 两个命令即可轻松切换网络代理,妈妈再也不用担心 npm 安装不依赖了~ 尾声 最后别忘了将你的 cli 工具发布到 npm (tnpm),给更多的同学使用

2.1K20

【两天完成简书搬家】——第一天,NodeJS爬取简书数据

不过也可以理解一下,一个签约作者写这样的文章居然还能得到简叔的支持: · 饱醉豚:《不骂程序员低素质,只是去证明他们是低素质群体》 · 饱醉豚:《为什么有这么蠢的程序员?...单纯Chrome看是正常的: ?...image.png 然而当我们下载该页面文档内容,实际是这样的:“专题和文集”文字下面的div标签之间为空,因为【文集】和【专题】是通过js异步加载的,获取到页面文档它们还没有加载出来。...文集和专题没有加载出来 那好吧,想方设法做个延时加载再爬取,结果又发现这个问题:部分文集并不会显示出来,只有点击【展开更多】才会显示,这就涉及到网页交互操作的复杂处理。 ?...image.png 方案一: node-crawler里调用go命令行运行,把命令行输出内容保存: var Crawler = require("crawler"); // var mysql =

90830

用以检查Linux内存使用的5个命令

从简单的文件和目录工具到非常复杂的安全命令, Linux 中没有多少是你做不了的。而且,尽管普通桌面用户可能不需要在命令行熟悉这些工具,但对于 Linux 管理员来说,它们是必需的。为什么?...首先,你某些时候不得不使用没有 GUI 的 Linux 服务器。其次,命令行工具通常比 GUI 替代工具提供更多的功能和灵活性。...让我们深入了解各种 Linux 命令行工具,以帮助你检查系统内存使用情况。这些工具并不是非常难以使用,本文中,将向你展示五种不同的方法来解决这个问题。...虽然你无法没有显示器的服务器看到这种情况,但是你已经注意到打开 Chrome 使你的系统速度变慢了。运行 top 命令以查看 Chrome 有多个进程在运行(每个选项卡一个 - 图 1)。...输出的顶部,你将看到系统统计信息。的机器(System76 Leopard Extreme),总共有 16GB 可用 RAM,其中只有超过 10GB 的 RAM 正在使用中。

94830
领券