MATLAB连接CovenantSQL以及币价相关性的计算
一、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
相关文章