交易品种(板块)相关性分析的MATLAB实现-基于Matlab的量化投

本讲的目的是实现期货交易品种(板块)的相关性分析,相关性分析的作用有很多种,主要有:1.检测品种的相关性,可以挑选相关性高的品种(板块)进行对冲操作;2.通过检测品种的相关性,可以监控整个市场的系统性风险,进而进行实盘交易品种的选择和交易仓位的调整。

         交易品种(板块)的相关性分析不单单是学术层面,还是比较“接地气”的(贴近实战)。

         有关期货交易品种(板块)的相关性分析的实现和图形展示,还是涉及到挺多细节的,主要会碰到的问题和解决方案:

设全市场又N个品种,对于任意的品种A、品种B,下面只要把计算A和B的相关性的相关的问题解决,那么N个品种中任意两个品种的相关性的计算就都可以解决了。

 

1.计算A、B相关性的时间周期、时间长度(时间窗口长度)的选择

         由于相关性是一个偏长期的一种统计所以时间窗口长度可以尽量选择长一些,但可能由于数据质量或者有些品种交易初期并不是非常活跃,我选择2010年至2013年这个区间为时间窗口长度,但由于可能A或者B是某一时间点后新上的合约,这样可以选择2010年至2013年之间的某一个时间长度子集作为计算A和B的相关性的时间窗口长度。

         在时间周期方面,选择日线数据数据应该就足够了,当然为了更加精确也可以选择更加高一些频率进行计算,但相应的计算量也会上去。

         在时间窗口长度的选择方面,这里多说一句,如果时间窗口长度选的过短(比如几个月),然后进行窗口滚动动态计算某两个品种的相关性,有的品种的相关性会发生动态变化,可能高相关的品种在某一时间段内会出现低相关甚至负相关的现象,相关的测试我们团队都做过,个中道理看官您可以自己提取理解。

 

2.时间周期、时间长度(时间窗口长度)确定后,A和B品种的时间轴校正

      在确定时间周期、时间长度(时间窗口长度)确定后,还需要对A和B的时间轴进行对齐校正等处理,因为可能在A和B的共同时间窗口内,A在某一时点T上有数据,而B在这个时间T上却没有数据,需要用算法做一些处理。

       最简单的方法就是若A在某一时点T上有数据,而B在这个时间T上却没有数据,那么就把A在这个时点T上的数据剔除,这种方法最简单直观,但也带来一定的问题,如果A和B的数据整体数据量相对较多,这么做没有问题,剔除一些数据是可以的,若A和B的数据量相对较少,这样做就是比较不明智的,因为本来数据就不多再这样随便剔除,最后可能计算A和B的相关性就有几十或几百个数据点来计算,这样会带来最后的相关性计算失真。

       我个人本身可能更偏向于结合使用剔除数据+采用一些简单的插值计算来处理时间轴的校正对齐的问题。当然这个问题见仁见智。

 

3.相关性的图形展示问题

         计算好了所有品种的相关性的数值,可能我们还需要进行一些图形展示,毕竟图形的东西传递的信息更多更直观,这里可以采用我们论坛(MATLAB技术论坛)谢老师matrixplot函数来实现,matrixplot.m函数源码如下:

利用MATLAB绘制矩阵色块图

【例1】绘制网格线,网格中显示矩阵元素。
显示黑色文字:

>> x = [1,-0.2,0.3,0.8,-0.5
   -0.2,1,0.6,-0.7,0.2
    0.3,0.6,1,0.5,-0.3
    0.8,-0.7,0.5,1,0.7
   -0.5,0.2,-0.3,0.7,1];
>> XVarNames = {'xiezhh','heping','keda','tust','tianjin'};
>> matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames);

效果图1:

根据矩阵元素值自动设置文字颜色:

>> matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor','Auto','ColorBar','on');

 效果图2:

【例2】绘制实值矩阵各元素对应的色块,通过不同的“参数/参数值”控制色块的形状、大小、颜色等属性。
方形色块,充满方格,灰白色字体

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor',[0.6,0.6,0.6],'ColorBar','on');

 效果图3:  

方形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on');

 效果图4:

椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','e');

 效果图5:

圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','c','FigStyle','Triu');

效果图6:

六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','on','FigSize','Auto','ColorBar','on','FigShape','h','FigStyle','Tril');

效果图7:

表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体

>> matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Full','ColorBar','on','FigShape','d');

效果图8:

【例3】读取真彩图片,绘制伪红外图。

>> I = double(imread('kids.tif'));
>> matrixplot(I,'DisplayOpt','off','colorbar','on','grid','off');

效果图9:

最后做出来的期货交易品种(板块)的相关性分析图形展示为,其中其中板块的划分采用文化指数划分方法

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
相关推荐
相关下载
登录后评论
Copyright © 2019 宽客在线