量化研究体系:以7大模块为核心
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

0.1.4 工具库

工具是算法的具体运用。算法只是一种实现某种优化的数学方法,这种方法结合了具体的业务场景就形成了工具。举个例子,如果我们想要寻找某一个策略的最优参数,在参数不太多的情况下可以遍历,但是如果参数比较多,遍历所耗费的时间和计算资源是灾难性上升的,这时我们就需要选择更加聪明的参数寻优方式,比如用遗传算法来沿着特定的路径在参数空间中寻优,这样就不必遍历整个参数空间了。本书中工具库的开发是依照量化研究的逻辑顺序展开的:①数据发现;②主成分分析和去噪;③模式定义;④模式识别;⑤模型建立;⑥回测平台;⑦交叉验证回测;⑧模型优化。与之相对应,我们也需要一系列工具来应对逻辑链上的每一步。①数据发现:对于多标的问题,运用“因子挖掘程序”来分析横截面数据,也可以运用“先行滞后因果分析”或其他因果分析来分析某个时间序列数据与时间序列目标之间的因果关系;如果问题可以定义为一个集合问题,那么还可以用某些关联算法来发现一些频繁数据集,以解释这些数据集和目标之间的关系,等等;并且也可以结合“可视化库”来人为观察和展示,所以数据发现的形式是多种多样的。②主成分分析和去噪:我们可以采用傅里叶分析、主成分分析(PCA)、奇异值分解、小波分析等多种数学手段对原始数据进行滤波和去噪,去掉噪声后的数据使得模型对于特征的学习更加明确,从而有利于预测准确率的提高。③模式定义:量化研究的许多问题最终可以归结为模式识别问题,而进行模式识别之前如何定义一个模式会在很大程度上影响后续研究的发展。这个环节没有太多的套路可寻,往往会针对研究的问题而有所变化,是量化研究的核心环节之一,但基本的思想是相同的,即针对问题提出一项理论来描述它,然后寻找相应的数据来实例化这项理论的各个方面,进而再结合理论对数据的特征进行判别。举个例子,如果我们要识别某个生物是人还是猴子,首先会借助生物学定义来寻找人和猴子的特征差异,比如“语言”。那么我们可以记录这两个生物一段时间内的声音数据,如果声音数据更有规律则往往更富有意义,这就更加接近于“语言”,而声音数据无规律则表明无意义,这些数据更加接近噪声,所以我们可以根据声音数据的规律性来判定其是否为语言,进而判定发出这些声音数据的生物是人类还是猴子。在整个研究和判定过程中,我们无须理解这些声音数据具体表达什么,也不需要语言学的专业知识,我们仅仅根据“人类拥有语言”以及“语言的发声有规律”这两个特征就可以做出识别来判定生物的所属类别。④模式识别:这一步是对于模式定义的实践,与模式定义息息相关。模式识别的方法有很多种,但基本的思路都差不多,那就是判断当下考察的样本的特征与模式定义下的几种模式特征哪一种更加接近,或者与其他模式更加疏远,或者概率最大,或者错判风险最小,等等,总之是基于某一种与目标相关的准则,然后将考察样本归入最符合准则的那一种。举个例子,在KNN算法的思想中,认为同一种类别的样本在特征上应当比较接近,而不同类别的样本在特征上差别会比较大,那么如果将特征数字化,用样本空间来刻画,同一类别的样本在空间中距离会比较接近从而形成簇状,而不同类别的样本在形态上就显示为几个不同的簇。这样一来,通过定义某种距离函数比如欧氏距离或者余弦距离,就可以衡量考察样本与空间中哪个簇更加接近——或者是与簇中心的距离或者是与簇边缘的距离,从而判定考察样本的归属。⑤模型建立:当我们很好地诊断问题、定义模式,并进行了模式识别以后,量化研究的问题已经解决了一大半,接下来只需要基于这种模式识别建立一个模型,将识别的结果运用到具体场景中即可。比如,我们已经定义好了“好股票”和“坏股票”的模式特征,然后通过一些数学或智能算法判断当下可交易的股票的归属类别,接下来只需要做多“好股票”、做空“坏股票”即可,那么如何在各个“好股票”和“坏股票”中分配仓位和资金、何时开仓和平仓、预留多少风险准备金,这就是投资策略构建的问题了,这个策略构建的过程就是模型建立的过程。而即使是这个过程也是与前面两步(模式定义和模式识别)息息相关的——一般来说越“好”的股票仓位就应该越重,这就取决于“好”在模式识别环节中的定义了。其他策略构建的细节也是一样的道理。⑥回测平台:在量化投资策略开发过程中,策略回测是非常重要的环节,许多策略回测时非常成功,但到了实盘交易结果却惨不忍睹,究其根本原因是在回测时没有考虑许多实盘的限制条件,比如低估了交易成本、购买了限制股票盘(涨跌停限制或某些法律限制)、由于计算机网络延时或设备等技术问题无法及时成交目标或无法以最优价成交,等等。这些问题需要在回测平台中体现出来,使得回测结果尽可能真实地还原市场交易。⑦交叉验证回测:一个好的投资策略不仅仅是要盈利,更重要的是在突发市场情况时,能够很好地回避风险,因此需要模拟各种特殊行情来进行压力测试,从而考察投资策略整体的稳定性,这就是交叉验证和压力测试的意义。⑧模型优化:一个好的模型需要在实践中不断优化,并非一朝一夕能够完成的,所以无论是参数优化还是模型结构优化都需要持之以恒地进行。因此,在回测结束以后,需要根据回测的结果,考察模型的缺点和弱势,运用“参数优化程序”或者其他工具库中的程序重新调整模型。