本发明涉及计算机数据处理、传输技术领域,具体涉及金融量化分析数据传输方法。

背景技术:

数据在互联网传输之前一般要经过序列化处理,数据经过序列化之后,更变网络传输,解析和储存。但是序列化同时使得数据传输的性能降低。而在金融量化分析的应用中对数据传输的性能要求是极其高的,同时对数据的安全性也有一定的要求。

目前常用的序列化方法有两种:

第一种:把数据序列化为字符串传输,比如xml,json,这种方法的优点是序列化后的数据的可读性很高,缺点就是可读性强带来的不安全,还有转换速度非常慢、且转换后数据所占用的字节数变大,导致传输时间增加。

第二种:把数据转换为二进制传输,目前流行比较广的有protocol buffer。Protocol buffer对比xml,json等序列化方法性能有所提高。但是其序列化后的内容附带了相应的反序列化信息,如果数据被拦截很容易解析出其中的数据,同时其在处理整型的数据是动态变化的,因此可能会导致所占用的字节数过大,导致传输效率降低。

对于金融领域,尤其是量化投资、证券交易的场景下,往往需要快速的对数据进行分析、处理从而在最短的时间内做出交易决策。因此需要的数据序列化方法必须满足以下特点:高性能,具有一定的安全性。又因为金融量化常用的编程语言有:matlab、python、R等。目前市场上尚未存在完全支持matlab、python、R等语言的二进制序列化协议。

技术实现要素:

本发明的目的在于提供用于金融领域的更安全、更快速的,同时支持matlab,python,R等常用的金融量化语言的金融量化分析数据传输方法。

本发明采用以下技术方案:

金融量化分析数据传输方法,其特征在于,包括以下步骤:

发送方对第一数据结构进行描述,生成描述文件;

其中,所述描述的信息包括数据结构中各个成员变量的数据类型及其位置;

发送方保存该描述文件,并将该描述文件提供至接收方;

发送方根据所述描述文件,生成所述第一数据结构的序列化代码;

发送方计算所述第一数据结构当前各个成员变量所包含的第一数据序列化后所占用的总内存大小;

发送方根据所述计算的总内存大小申请相应内存;

发送方将所述第一数据及所申请的内存作为参数传入序列化代码,将当前各个成员变量所包含的第一数据进行序列化,序列化后生成的第二数据保存在所述申请的内存;

发送方将所述第二数据发送至接收方;

接收方根据所述描述文件生成第二数据结构以及反序列化代码;

接收方将所述第二数据作为参数传入所述反序列化代码,进行反序列化后解析出第一数据,将所述解析出的第一数据保存在第二数据结构。

本发明提供的金融量化分析数据传输方法适用于金融领域,具有更安全、更快速,同时支持matlab,python,R等常用的金融量化语言的优点。

附图说明

图1为本发明实施例提供的金融量化分析数据传输方法的流程图。

具体实施方式

以下结合附图及具体实施例对本发明作进一步说明。

参照图1。本实施例提供的金融量化分析数据传输方法,包括以下步骤:

发送方对第一数据结构进行描述,生成描述文件;

其中,所述描述的信息包括数据结构中各个成员变量的数据类型及其位置;

发送方保存该描述文件,并将该描述文件提供至接收方;

这里,发送方将描述文件提供至接收方的方法为:通过线下物理介质的方式;

发送方根据所述描述文件,生成所述第一数据结构的序列化代码;

发送方计算所述第一数据结构当前各个成员变量所包含的第一数据序列化后所占用的总内存大小。

所述计算总内存大小的方法为:

规定各个金融量化语言都支持的基本数据类型以及数据类型所占用的内存大小,对数据类型用一个数字进行标示。

目前金融量化后台系统软件主要采用C++语言开发,金融量化分析前端软件主要采用matlab语言开发,现以C++、matlab交互举例。

matlab支持的数据类型有int、double、int64、string等,C++亦支持上述数据类型,因此这几种数据类型可用于C++、matlab之间的数据传输。

各个类型所占的字节数分别为:int=4字节,double=8字节,int64=8字节,string=2字节+字符串内容的长度。

根据以上的规定,计算内存占用总大小的C++代码举例如下:

第一数据结构为:

总字节数量,根据之前约定的double占用8个字节,字符串string的字节数量为2+字符串长度(注:这里的wstring是utf16编码因此所占用的字节数量为字符串长度乘以2),可计算出当前第一数据demo所占用的字节数为:8+2+5*2=20。

采用以上所述计算总内存大小的方法,具有以下优点:内存占用精确到字节,不会占用过多的内存及带宽。

发送方根据所述计算的总内存大小申请相应内存;

发送方将所述第一数据及所申请的内存作为参数传入序列化代码,将当前各个成员变量所包含的第一数据进行序列化,序列化后生成的第二数据保存在所述申请的内存;

其中,将当前各个成员变量所包含的第一数据进行序列化的方法为:将第一数据的内容拷贝到申请到的内存里面,并且明确标识出所拷贝的内容大小。

采用该序列化的方法具有以下优点:序列化后的数据的排列是按照1字节紧密排列,发送时不占用过多的内存和带宽。

将数据进行序列化为二进制数据后进行传输,相对于将数据序列化为字符串进行传输,由于二进制数据相对于字符串的可读性更低,因此本方法传输数据更安全。

将第一数据序列化为二进制数据、再将序列化为二进制的数据反序列化解析出第一数据,该序列化以及反序列化均使用二进制进行操作,相对于使用字符串进行序列化以及反序列化的方法,具有速度快、内存占用小的优点。

以C++为例:

对double的序列化的C++代码为:

从上面代码可看出,对double序列化时只占用了8个字节,同时把占用的字节数作为返回值返回给调用方。

对wstring的序列化为:

从上面代码可看出,对wstring序列化占用2个字节加上字节长度,又因为wstring的字符集编码为utf16,因此所占用的字节数量必须乘以2。同时把所占用的字节数返回给调用方。

对Demo的序列化代码为:

从上面代码可看出,序列化Demo时,根据序列化wstring和double的返回值调整下一个成员变量将内容序列化到buffer的位置,从而达到1字节紧密排列的目的。

发送方将所述第二数据发送至接收方。

接收方根据所述描述文件生成第二数据结构以及反序列化代码;

接收方将所述第二数据作为参数传入所述反序列化代码,进行反序列化后解析出第一数据,将所述解析出的第一数据保存在第二数据结构。

上述计算内存占用总大小的C++代码中的数据结构Demo生成的描述文件,以接收方采用Matlab语言的举例,接收方根据所述描述文件生成第二数据结构以及反序列化代码;接收方将所述第二数据作为参数传入所述反序列化代码,进行反序列化后解析出第一数据,将所述解析出的第一数据保存在第二数据结构的两个步骤的Matlab代码举例如下:

综上,本实施例提供的金融量化分析数据传输方法,具有以下优点:

1.内存占用精确到字节,不会占用过多的内存及带宽。

2.序列化后的数据的排列是按照1字节紧密排列,发送时不占用过多的内存和带宽。

3.将数据进行序列化为二进制数据后进行传输,相对于将数据序列化为字符串进行传输,由于二进制数据相对于字符串的可读性更低,因此本方法传输数据更安全。

4.将第一数据序列化为二进制数据、再将序列化为二进制的数据反序列化解析出第一数据,该序列化以及反序列化均使用二进制进行操作,相对于使用字符串进行序列化以及反序列化的方法,具有速度快、内存占用小的优点。

5.序列化代码和反序列化代码在数据传输之前已生成,因此对数据进行列化及反序列化时不需要再生成序列化代码和反序列化代码,因此因此对数据进行列化及反序列化的速度快。

6.发送方生成描述文件之后,一方面自身保存该描述文件,另一方面该描述文件通过线下物理介质转存至接收方,由此描述文件非线上传输至接收方,从而避免线上传输描述文件时该描述文件泄漏等安全问题。

7.接收方收到该描述文件之后,根据该描述文件生成第一数据结构的反序列化代码。由于接收方本地存在反序列化代码,故发送方在发送序列化后的第二数据的时候,不需要再向接收方发送反序列化信息,由此减少数据的发送量,并且避免了反序列化信息线上传输泄漏的问题,从而提高了数据传输的安全性。

8.发送方采用线下物理介质的方式将描述文件提供至接收方,故描述文件不会在线上传输时外泄,序列化后的数据内不包含任何反序列化信息,因此在没有描述文件的情况下,从序列化后的数据中难以反序列出数据,因此传输的数据安全性高。

9.由于发送方生成的描述文件的信息包括数据结构中各个成员变量的数据类型及其位置,因此,接收方可以根据描述文件生成反序列化代码以及存储反序列化后的数据的数据结构。

10.通过规定各个金融量化语言都支持的基本数据类型以及数据类型所占用的内存大小,对数据类型用一个数字进行标示,由此该金融量化分析数据传输方法同时支持matlab,python,R等常用的金融量化语言。

matlab对数据的量化分析方法,金融量化分析数据传输方法与流程相关推荐

  1. Matlab中将数据保存为txt或dat格式四种方法

    转载于 Tsingke 老师的文章--Matlab中将数据保存为txt或dat格式四种方案 - Tsingke - 博客园.                                       ...

  2. python金融量化分析 | 闲杂笔记

    最近事情好像有点多,处理得心不在焉.之前国庆计划把张五常老师的经济解释卷二看完,但也是只把第三章生产的成本看了一下,哈哈~ 这是一篇python金融量化分析的闲杂且入门的笔记,感觉学习价值较低,我只是 ...

  3. 【Python金融量化】零基础如何开始学?

    前言 Python可以说是当前非常流行的编程语言,甚至有点"网红"的感觉.网上还流行一句话"Life is short, I use Python"(人生短暂, ...

  4. python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书

    如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...

  5. 后端开发、爬虫开发、人工智能、金融量化分析、大数据跟Python是什么关系?

    Python是一种计算机程序设计语言,又被称为胶水语言,可以用混合编译的方式使用c/c++/java等语言的库.你可能已经听说过很多种流行的编程语言,比如在大学里感觉非常难学的C语言,进入社会非常流行 ...

  6. python量化分析岗位_量化金融有哪些职位可以选择?

    机会成本 之前写了自己如何从自动化领域转行到金融领域,后台很多朋友私信问自己的背景适不适合转行做量化,或者是如果想做量化需要做什么准备,虽然简单的回答了一些,但是由于平时工作和学习实在太忙,难免相对简 ...

  7. python与金融工程的区别_科研进阶 | 纽约大学 | 金融工程、量化金融、商业分析:Python金融工程分析...

    科研进阶 | 纽约大学 | 金融工程.量化金融.商业分析:Python金融工程分析(2021.2.6开课)​mp.weixin.qq.com 课题名称 = Python金融工程分析 = 项目配景 大数 ...

  8. 【统计分析】(task5) 金融量化分析与随机模拟(通过随机模拟估计看涨期权的报酬分布)

    内容总结 学习datawhale的gitmodel教程.小郭为了锁定价格波动风险,签订合约即买进看涨期权:提前给榴莲超市2块权利金,现在榴莲30元一块(期权的标的资产),下个月能用20元买到一块榴莲( ...

  9. 【Python金融量化】财经新闻文本分析

    内容来自:微信公众号:python金融量化 关注可了解更多的金融与Python干货. 引言 "80%的商业信息来自非结构化数据,主要是文本数据"(Seth Grimes),这一说法 ...

  10. python数据分析及可视化(十六)金融量化(金融工具、金融分析、Tushare安装使用、双均线分析)

    金融介绍 金融就是对现有资源进行重新整合之后,实现价值和利润的等效流通. 比如小明想把手里的资金投资给小李,而小李有好的增值项目但是缺少资金,如果小李的项目创业成功,小明的资金就会增长. 金融工具 在 ...

最新文章

  1. debugInit.c tomcat启动错误
  2. angular父组件通过@ViewChild 主动获取子组 件的数据和方法
  3. HDU2521 反素数【因子数量+打表】
  4. Oracle学习(十五)PLSQL安装
  5. pve 不订阅更新_??“吃鸡”体验服已无更新,暗夜危机2.0或将被1款新游代替
  6. 蓝牙连接不上车要hfp_鹅厂又要霸屏,连接四部剧将袭,冲着主创颜值不追不行啦...
  7. 背包——多重背包(hdu2191)
  8. SQLite数据库浅谈
  9. 运筹作业题:一个正三角形平面,在三个角的部分减去一部分,然后沿着剪开部分折叠起来,使折叠后的三棱台体积最大
  10. 有趣的圣诞节 库的打包
  11. 以虚拟现实骨灰级开发者视角,来看VR智能硬件平台
  12. 远程连接 Mysql 失败的解决方法
  13. 嵌入式ttf字体裁减说明
  14. C语言指针申请与释放
  15. SPSS教程:单因素重复测量方差分析,超详细图文教程
  16. ## 7.1 奇异值分解SVD和对称矩阵谱分解
  17. 全面解读数据中台、数据仓库和数据湖
  18. matlab中功率因数模块,最经典的功率因数控制器设计方案
  19. PTA 水题之7-20 镜子碎了
  20. java鬼吹灯搬山法杖_《[鬼吹灯/怒晴湘西]搬山小师妹》漂流瓶中的罗小黑_【衍生小说|言情小说】_晋江文学城...

热门文章

  1. Stata: 协整还是伪回归?
  2. 如何写一篇杀手级的软件工程师简历
  3. 蔡司数码视疲劳测试软件_[专题]重度近视别担心!!蔡司数码型镜片真实测评,带给我不一样的体验...
  4. 假装自己升级了Win11~
  5. 原创|分享2个赚零花钱的小技巧
  6. mtk audio笔记
  7. 千万级中文公开免费聊天语料数据分享
  8. Google Guava与字符串操作相关的类
  9. 解决萤石云sdk语音对讲功能(实现)
  10. C语言程序计算自己活了多少天