MATLAB连接CovenantSQL以及币价相关性的计算

2022-04-11 00:00:00 序列 数据 可以用 价格 相关性

一、MATLAB连接CovenantSQL


目前CovenantSQL 已经兼容MySQL方式链接了,所以我们在使用MATLAB访问CovenantSQL的时候,只需要使用MySQL的源生JDBC Driver就可以了。


首先,去MySQL官网下载JDBC Driver:


因为Oracle在MySQL 8.0改了协议,所以目前使用个旧一点的JDBC Driver就可以了,比如5.1,附上官网链接:

https://dev.mysql.com/downloads/connector/j/5.1.html

 


然后我们选择一个下载就可以了,windows系统还是下面的zip压缩包更容易使用。


将下载好的zip包打开,将其中




红圈的那个jar包解压到以下文件夹或者自己创建一个妥善的文件夹中




然后我们进入以下地址




用文本编辑器打开classpath.txt,在后一行加上




$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.47.jar

如果是自选文件夹的话,请填上刚才解压之后jar包的完整路径,注意这里用'/'符号


然后保存之后,重启MATLAB,就加载好了MySQL的JDBC Driver了,接下来

我们就按照MySQL方式链接我们的CovenantSQL的数据库。

按照如下命令:


CONN = database('数据库名称','用户名','密码','com.mysql.jdbc.Driver', 'jdbc:mysql://数据库地址:端口/数据库名称')

来链接



然后我们可以用 exec函数来执行SQL语句来查看表名、表结构或查询等等,例如

我们可以用


tables=exec(CONN,'show tables'); 

tables=fetch(tables); 

tables=tables.Data;


来查看表名:




查得有2002个表

然后用


struct=exec(CONN,'desc xxxxx'); 

struct=fetch(struct); 

struct=struct.Data;


可以查看xxxxx表的表结构:



接下来,笔者要选用CovenantSQL上面的市场数据,来计算一下2018年之后,BTC与ETH的价格涨跌幅相关性:


首先,我们从CovenantSQL中提取出BTC以及ETH两个比2018年1月1日起的价格数据:




然后就用剩余导出了2018-01-01之后的BTC以及ETH的5分钟价格,成交量,市值等数据,根据我们之前查询的表结构:

可以看到第六列是价格序列,于是:


btcp=cell2mat(btc(:,6)); 

ethp=cell2mat(eth(:,6)); 

btcret=price2ret(btcp);

ethret=price2ret(ethp);


btcret以及ethret就是我们要的收益率序列


使用MATLABD的corr函数后


correlation=corr(btcret,ethret)


结果为:



小伙伴们该提问了,这和我们平时观测到的情况并不相符啊。那是因为是5分钟数据,所以看出两者价格相关性就很低了,这时候我们可以先把数据处理为日线:


同样是取价格,因为一天有288个5分钟数据,所以每隔288取一个数据,这样取到日价格序列,然后用price2ret处理成收益率序列后,我们可以用corr来计算:


btcp=cell2mat(btc(:,6));

ethp=cell2mat(eth(:,6));

btcp=btcp(1:288:floor(length(btcp))); 

ethp=eth(1:288:floor(length(ethp)));

btcret=price2ret(btcp); 

ethret=price2ret(ethp);


计算相关性:




结果为0.81,说明ETH和BTC还是比较高度相关的,这也跟我们的认知相同了。看到这里,小伙伴们是否觉得这个结果符合我们日常的观测预期了呢?

来源 https://www.modb.pro/db/192278

相关文章