量化投资:MATLAB数据挖掘技术与实践(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.1 衍生变量

5.1.1 衍生变量的定义

衍生变量,顾名思义是由其他既有变量通过不同形式的组合而衍生出的变量。例如,已经知道一个细长形物体的质量、长度、体积,现在就可以通过对现有三个变量的组合得到一些有用的衍生变量,如密度=质量÷体积,线密度=质量÷长度。

在数据挖掘过程中,通常需要对现有的变量进行各种形式的衍生,以得到更多可用的变量。虽然衍生变量与原始变量有一定的相关性,但能更直观反映事物的某些特征,表现在数据上就会更直接,所以某些衍生变量在数据挖掘过程中反而更有用。就像上述提及的密度和线密度,如果要研究哪些物体可以漂浮在水面上,只要根据密度这一衍生变量就可以判断。但并不是所有的衍生变量都有意义,所以衍生变量也要适度。

在量化投资领域,很多变量都是衍生变量。在股票市场,得到的原始变量是日期、开盘价、最高价、最低价、收盘价、成交量和复权价,但经过衍生,可以得到形形色色的变量,如平滑异同平均线、能量潮、心理线、乖离率等。各个投资机构常用的多因子模型,其本质差异在于不同投资者所用的因子不同,而这些不同的因子很多情况是投资者所用的衍生方法不同导致的。所以,探索衍生变量是数据的探索阶段的一个非常重要的环节,尤其在量化投资领域。

5.1.2 变量衍生的原则和方法

变量衍生的方法多种多样,没有统一的标准。所以,对于任何一个数据挖掘项目,都有无数个衍生变量。不能穷尽所有变量,也不需要这样做,那么,应该怎么办呢?其实,从数据挖掘的角度,变量的衍生也要遵守一定的原则,这样产生的变量才更有效。一般在探索衍生变量时,可以遵循如下两个变量衍生的原则:

(1)衍生变量能够客观反映事物的特征。

(2)衍生变量与数据挖掘的目标有一定的联系。

当然在这两个原则指导下的衍生变量还是很宽泛的,往往还要按照一定的方法,再融入对业务的理解产生衍生变量。这里面提供了如下几个基本的变量衍生的方法:

(1)对多个列变量进行组合。例如,身高的平方÷体重(肥胖指数),负债÷收益,总通话时间÷总呼叫次数,网页访问量÷购买总量等。

(2)按照维度分类汇总。例如,在分析无线通信客户流失现象时发现,按照手机型号分类汇总的流失率比单纯用手机型号分类的数据更有用。

(3)对某个变量进一步分解。例如,对于日期变量,可进一步分解为季度、节假日、工作日、周末等变量。

(4)对具有时间序列特征的变量可以进一步提取时序特征,如一段时间的总开销、平均增长率、初始值与终值的比率、两个相邻值之间的比率、顾客在假期购物占年度购物的比例、周末电话平均长度与每周电话平均长度等。

5.1.3 常用的股票衍生变量

当前,证券市场上的各种技术指标数不胜数,其中的绝大多数是衍生变量。例如,相对强弱指标(RSI)、随机指标(KD)、趋向指标(DMI)、平滑异同平均线(MACD)、能量潮(OBV)、心理线、乖离率等。这些都是很著名的技术指标,在股市应用中长盛不衰。而且,随着时间的推移,新的技术指标还在不断涌现,包括DMI(趋向指标)、EXPMA(指数平均数)、TRIX(三重指数平滑移动平均)、ASI(振动升降指标)、EMV(简易波动指标)、WVAD(威廉变异离散量)、SAR(停损点)、CCI(顺势指标)、ROC(变动率指标)、BOLL(布林线)、WR(威廉指标)、KDJ(随机指标)、MIKE(麦克指标)等。这里不再一一列举证券市场的这些指标。

为了用数据挖掘方法来研究量化交易策略,需要用到这些衍生变量。这里将选择或改造几个指标来作为数据挖掘的备选指标,同时介绍如何产生和计算衍生变量。下面的程序中,包括10个衍生变量的详细计算过程和其中4个变量的变换趋势图。关于衍生变量的计算过程,也在程序中有明显的提示。相信读者根据程序就能清晰地知道这些变量的计算过程,这里不再赘述。

第1步,环境准备及读取原始数据。代码如下:

第2步,计算衍生变量。代码如下:

第3步,收集并保存数据。代码如下:

第4步,数据可视化(选择4个变量作为代表)。

(1)dv1——股票当日涨幅。代码如下:

上述程序执行后,将产生如图5-1所示的股票涨幅散点图。通过该图,可以大致知道这只股票的特性,如波动性、周期性等特征。

图5-1 股票涨幅散点图

(2)dv4——10日相对强弱指标RSI。代码如下:

上述程序执行后,将产生如图5-2所示的股票RSI的可视化结果。通过该图,可以大致知道股票RSI具有连续性和惯性,这对于股票指标的设计很有帮助。

图5-2 股票RSI的可视化结果

(3)dv8——9日RSV。代码如下:

上述程序执行后,将产生如图5-3所示的股票RSV的可视化结果。通过该图,可以大致知道股票RSV能够很好地监测股票的变化情况。

图5-3 股票RSV的可视化结果

(4)dv10——OBV量比。代码如下:

上述程序执行后,将产生如图5-4所示的股票OBV量比的可视化结果。通过该图,可以大致知道股票OBV量比指标能够很好地监测股票变化的异常情况。

图5-4 股票OBV量比的可视化结果

5.1.4 评价型衍生变量

用于评价被挖掘事物的好坏的衍生变量,称为评价型衍生变量。为什么要探索评价型衍生变量呢?这是因为数据挖掘中很多的算法都是机器学习算法,这类算法的典型特点是需要有输入和输出的样本训练机器,然后才可以用这个机器对新样本的输入进行计算,得到所需要的输出。而在实际的原始数据中,并不存在可以用作训练样本输出的变量,这时就需要通过衍生方法得到这类衍生变量。

在量化投资中,需要用这类变量来评价股票的好坏,为此可以根据数据挖掘的目标衍生评价型衍生变量。

下面的程序是基于股票交易数据衍生的变量,具体实现过程如下。

(1)环境准备及数据读取。代码如下:

(2)计算评价型衍生变量。代码如下:

(3)收集并保存数据。代码如下:

(4)数据可视化dv1。代码如下:

本节程序执行后,将产生如图5-5所示的好坏股票可视化结果。

图5-5 好坏股票可视化结果

5.1.5 衍生变量数据的收集与集成

当产生衍生变量后,为了便于后续的数据处理,通常要将数据收集在一起,如果数据在不同的文件或表中,也常常将它们合并在一张表中。

在上述程序的基础上,将产生指标型衍生变量和评价型衍生变量的程序修改为MATLAB的函数形式,然后就可以重复调用这些函数,计算所有股票数据文件夹下所有股票数据对应的衍生变量。最新的MATLAB具有表这种数据类型,所以很容易实现对这些数据的收集和集成。只需要使用join这一函数即可将不同表格中的数据集成到一张表格中,具体实现程序如P5-1所示。