通过以下五大工程,我们希望让新手能更快的了解量 化、让老手能发现更多细节。
1.工程一:问题或任务界定
量化工程的第一步一定是明确要研究的问题或任务。实际上,市场中可以研究的问题很多 也很复杂,但并不能都通过量化思路去解决。我们认为,可以转化或利用量化工具去解决 的问题主要有三类: 第一类:因果推断及验证问题。典型就是 10 年期国债利率是否受到 PMI 数据的影响、政 策对股市的影响程度,当然最简单的就是做变量之间的相关性计算; 第二类:预测问题。比如 10 年期国债利率未来可能的走势、个股组合未来超额收益,问题 的结论往往是某个点位、变化幅度或未来走势; 第三类:分类问题。譬如股票量化里板块/个券轮动、固收量化里利率波段的属性、信用债 风险识别等。目前实战中最简单也最常用的方式其实就是打分表。 当然,实际中大多数投资者量化经历由策略回测开始。我们以策略回测最传统的三因子模 型为例,其问题是:市值因子、价值因子与市场收益是否有明显的相关性/因果性。验证相 关性后,用其发现的规律以作策略回测。
明确目的是处理问题的关键,这与主观层面完全一致。譬如我们在进行策略回测时,需明 确最终目标要么是高收益,要么是高夏普,但这两者对应的策略细节、处理方式、重要特 征可能完全不一样。
2.工程二:系统化数据处理
前文提到现实层面仅一部分问题适合量化思路解决,但实际上大部分问题都没有准确、足 量且“干净”的数据,这也是限制大多数从业者开展量化研究的最大困难。 从方法论上讲,数据处理永远都是量化研究的第一步、往往也是最重要的一步。通常来说, 我们直接获取到的数据大多是杂乱,数据存在缺失值、错误值、异常值等才是常态。如果 直接利用原始数据去进行量化手段,就类似处理“未放血的猪”。后续无论模型设计的多么 精妙,源头上的问题一旦过了就会出现很多无法解释的“Bug”。 规范的量化研究过程,通常至少要进行以下几个数据处理工作: 第一、数据清洗,最后要达到结果是——无缺失值、无极端值的面板数据。 无效值(Nan、None、Inf 等)处理,譬如 10 年期国债利率与 PMI 数据合并后的空值、公 司季度末财报数据为非交易日。解决办法通常有两大类:1、补充数据。合并数据后,前后 区间数据补充、前后区间数据平均值、各类模型补充区间值等;2、调整时间频率。譬如时 间区间补充为日历日、重采样将时间频率改为季度等。
极端值处理,典型如同比数据,如果去年同期基数过低,同比数据通常会出现单年的大幅 上行和大幅下行。解决思路主要有几类:1、选择基数正常年份,做 2 年同比或是 3 年同比; 2、利用分位数数据处理;3、设定上限值;4、直接剔除异常值。但要注意的是,对于不同 的极端值处理思路并不固定,最好基于指标背后的意义差异化处理。 异常值处理,譬如中途退市的个股,个股未按时发布财报等。对于部分异常值(无数据或 是全 0)我们可以直接剔除。但对于个股(回测区间内退市),我们可能不能直接剔除。毕 竟站在原始回测起点,我们可能并不知道个股未来退市信息,如果直接剔除本质运用了未 来数据,使得量化结果有效性明显降低了。
固收量化上,离散值处理成连续值也较为常见。典型就是收益率曲线,实际中均为离散点, 但数据通常需要连续曲线。当然,这部分处理方式与 nan 值处理有相似之处,市场中也有 不少成熟模型供投资者参考。
第二、数据规范化,最后要达到的结果是——得到可直接作为特征的面板数据。 数据规范早已隐藏在主观投资者分析过程中。大部分主观投资者对数据清洗已相对熟悉, 数据规范是很多主观投资者忽视的一部分。但主观投资者并不是没有做过数据规范,而是 隐藏在其分析框架中,而量化则是将数据规范更明确的表现。 典型就是:1、主观投资者在分析不同公司的估值时通常不会直接比较,譬如投资者可以给 成长风格公司更高估值,其实这已经内含了数据规范的中性化思路;2、对于中小盘公司波 动的承受能力更强,其中就有标准化思路; 数据规范化是为了获得更为有效、稳定的数据。以固收的转债为例,如果我们直接按估值 筛选相对便宜的个券,得到的通常是有信用风险的小票。但这并不符合我们的目的,且风 格过于集中。所以,在量化筛选之前我们通常需要对估值数据进行规模、行业、信用风险 等中性化,以得到更为有效的数据。
数据规范化常见的处理方式主要有: 1)中性化。一般用回归等方式,将行业、规模等隐含因子从目标因子中剔除。以下图转债 中性化平价溢价率为例,我们将平价、余额、行业、剩余期限等信息放入回归方程右侧。 即剔除这些自变量对平价溢价率影响,得到的残差 ??即为我们需要的中性化平价溢价率。
2)标准化。通常方式是 Z-Score、最大最小标准化、最大绝对值标准化等,当然特殊得数 据也可以通过对数变换等方式处理。
3)剔除未来数据。典型就是分位数、极值等数据,譬如在获取 23 年行业估值分位数时利 用了 24 年数据、判断某时点是否为极值是利用了后续时点数据。未来数据当然会让模型的 结果更符合目标,但整个研究的意义并不大,更像是“先射箭后画靶”。如下表,我们假设 极端情况,当使用了未来数据是,2022 年的分位数能看出明显“异常”。所以在分位数等 计算时,需要警惕未来数据影响。
第三、数据平滑,最后的结果是——减少无效波动(去除“毛刺”)、得到更稳定的数据。 在处理更长时间维度的策略时,我们通常需要平滑原始数据,使得后续结果更加稳定。毕 竟长时序下,无论调仓或是买入卖出点都不能过于频繁,原始的大幅波动数据明显不符合 我们的要求。通常的处理方式有:1、移动平均。有效、操作简单,但是可能会有顶底滞后 的问题。2、热方程法。顶底相对一致,但不同时间区间的平滑或有不同,稳定性更弱;3、 降频(重采样)。实质是日频变量转换为周频或月频,也是一种常见的平滑方式,但会丢失 部分信息。当然还有滤波等各类平滑方式,基于不同数据处理方式或有不同 第四、数据检测,目的是——判断处理后的数据是否有效,当然如果是深度学习等模型这 一步一般可跳过。检测主要包含: 1、多重共线性,即自变量相关性; 2、是否还存在异常值; 3、平稳性检测等。数据检测对不同数据可能略有不同,对于因子模型而言,是必不可少的 一环。 数据处理后,可得到一列漂亮的“因子”,也可以直接计算因子 IC。数据处理后所得的因子, 大部分都是有效、稳定且可以对抗风格。我们计算因子 IC 即能得知当前因子与收益的相关 性,为后续模型打下铺垫。
3.工程三:数据改造及特征扩展
数据处理后,我们能得到相对稳定且有效的部分因子。如果是多因子模型,数据量通常而 言是足够的。但如果使用 AI 等模型,数据往往不足以致最终结果可能并不理想。所以,特 征扩展也是构建数据较为重要的一环,典型的方式有: 1、最常用的方式是——多项式(平方、交叉等)、PCA 等数学工具,但这种方式在神经网 络等模型中改善有限。神经网络本就是非线性模型,已经能识别原始特征中的非线性关系。 多项式对模型改善可能相对有限。譬如在转债中平价溢价率与平价关系是非线性的,中性 化平价溢价率因子不仅需要加入平价项,也需要加入平价的二阶项。
2、通过低频数据转高频。譬如股价日内波动信息、日内换手信息等作为日频数据使用。在 固收领域中,主观投资者分析中也有利用,典型如利用高频数据对经济数据预测。譬如用 机器学习模型量价择券,日度量价特征相对较少。可以将 9 点 30 分股价、10 点 30 分股价 等一系列价格信号转换为日度特征,这部分特征能为模型提供增量信息,可能能更好的优 化模型。
3、文本等另类数据使用。量化中,文本数据使用相对方便,对于情绪等特定指标,有明显 改善左右。在固收量化中,政策等文本信息更为有效。譬如利率择时中,央行政策报告也 是重要的特征变量。我们可以用词向量或者 AI 接口等方式,将文本数据转换为特征,加入 择时框架。

4、增加数据分类信息,将连续变量“离散化”。譬如财务数据中的净利润同比增长,原始 数据差值过大,且数值间 1%的差距意义也并不大。此时将连续变量转换为离散变量类似(高 增、增长、微增、基本不变、下降、大幅下降)可能是一种更好的选择。
5、顶底等位置信息。利用模型将识别时序数据相互位置关系,不利用未来数据前提下加入 极值等位置信息。譬如股价中的极值信息,通过提前识别进行打标,可以加入(极大值点、 极小值点)等位置信息。
6、更高级的是使用遗传算法等技术对指标进行衍生与拓展。
4.工程四:模型设计与选择
在量化研究任务中,设计出合适的模型也是关键的一步。目前市场上最主流的还是“多因 子模型”,当然也有部分机构开始运用神经网络、AI 等机器学习建模,还有部分投资者聚焦 更复杂的数学模型去研究资产定价,再进行量化投资,最典型的就是西蒙斯的大奖章基金。
但在固收量化领域,不需要那么复杂的模型,多因子和深度学习处理当下市场中的问题已 足矣。分别来看: 1、多因子模型更适合做品种选择,也就是找α。而实战中多因子核心是发现异象、获取超 额。在学术界,多因子模型的主要任务是寻找解释股票收益率差异的特征,但在投研业界, 多因子模型更多用来寻找短期的“市场异象”(Anomalies),更简单地说就是市场的错误定 价机会。学术以传统 Fama-French 三因子模型为例,其主要是市场因子(MKT)、市值因 子(SMB)、价值因子(HML),它更多解释了不同股票波动不同、小盘股效应、价值效应 等。而实战中的多因子模型通常从估值、量价等出发,寻找多个特征与股票收益率的相关 性。而后利用各类加权方面合成相关性较高因子,进而尝试在市场中挖掘超额收益。 多因子模型有哪些优势?我们认为主要有:1、模型构建相对简单,易上手;2、市场使用 人相对较多,可参考资料较多;3、模型相对完善,从数据处理→模型构建→模型验证有完 善的流程;4、部分因子可主观层面解释。 但它也存在一些不足和问题,实战中需要多加注意或规避:1、过拟合问题,即加入的因子 数量过多,导致模型看似表现较好,实际背后更多是过拟合带来的;2、因子可能过于拥挤, 导致超额收益快速消失;3、因子需要长时序的数据,部分资产数据量并不足以支撑量化手 段;4、数据处理失误导致因子看似有效。超额收益来源更多是低流动性、高波动性、信用 问题、未来数据等。
2、机器学习模型更适合做预测和分类,也就是做择时、找β,主流思路如 RNN、LSTM、 GRU 等。主流的机器学习模型更多是神经网络:通俗来讲,神经网络就是利用历史数据构 建非线性函数,是一种可调节的“人造黑箱”。这种模型的内部有相对复杂的激活机制以及 函数,并且训练后的模型无法用数学公式将其表达。使用的方法是,将输入数据以设计好 的格式“喂给”神经网络模型,让其自行计算得出相应输出,类似人脑的工作原理,故名 神经网络。而所谓的 RNN、LSTM 以及 Transform(ChatGPT 等原始模型)等类型,底层 逻辑本质都一样,只是在构建函数中的取舍不同,譬如激活函数、优化器等,导致它们各 自适用的领域有所不同。
在固收量化领域,我们通常会尝试多个机器学习模型,常用的机器学习模型有: ①LSTM(长短期记忆网络),适合神经网络入门投资者使用。LSTM 是一种特殊的神经网 络模型,适合时序数据使用,尤其是金融时序预测。模型在构建黑箱时,考虑短期数据和 长期数据的取舍、复权,也相对符合主观看法。LSTM 模型较为成熟,资料、python 库等 丰富,很适合新手入门使用。当然,模型发布时间相对较长、使用者较多,可能很难再有 超额收益。
②XGBoost,适用于数据(特征)相对较少的分类问题。XGBoost 是强化机器学习的一类, 主要是将多个弱分类器结合成强分类器。模型的优势主要是,训练每一个弱分类器的残差 项顺延至下一个模型,能更好的减少模型带来的偏差。用通俗的语言来看则是,综合数个 研究员看法,汇总成一个更强的结论。每一个研究员忽视的部分问题,传递给下一个研究 员接着探究,可以减少研究过程中缺失的部分。所以 XGBoost 能够充分的识别数据中有效 信息,比较适合数据/特征相对较少的分类问题。当然,对应的是 XGBoost 可能有一定过拟 合问题,也就是研究员会考虑很多与核心逻辑无关的问题,模型也利用了正则等方式防止 过拟合。
③Random Forest(随机森林),适用于特征过多,削弱可能过拟合情形。随机森林(Random Forest)也是机器学习的一种,主要用于分类问题、回归问题。随机森林通过随机放回的取 样本、取特征,构建出多个弱分类器,再总结成一个强分类器。用通俗的语言来看则是, 随机的找市场不同的研究员、了解不同的问题,再把这些看法综合成更强的结论。特点是 可以规避类似研究员看法趋同的问题,在主观上也就是规避“信息茧房”。所以随机森林可 以有效的减弱高维特征过拟合问题,使得分类器更加有效。
④GRU(门控循环单元),神经网络的一种,也比较适用于金融时序问题。GRU 与 LSTM 类似,均为循环神经网络的变种。在时序问题中,常需要考虑过去很久的数据怎么影响现 在的决策?如果给过去数据赋权小于 1,则随时间推移,过去数据的权重指数级减小;如果 给过去数据赋权大于 1,则随时间推移,过去数据的权重指数级增大。这两种情况都会影响 模型使用。所以,GRU 利用门来控制长期数据影响,解决了长期数据影响消失或是影响过 大的问题。
落地至实战,除了模型我们还需要关注输入、输出,也就是回归模型中的 X、Y。神经网络 模型代码并不复杂,RNN、LSTM 等有相对成熟的包可以直接利用,即使 Transform 以及 其衍生模型在 Github 上也有对应的开源代码。所以模型方面,我们通常可以尝试切换不同 模型来面对不同种类的问题。而输入、输出同样是机器学习中十分重要的一环。 机器学习模型的输入端 X(数据、特征)需要注意三点:1、输入端数据量足够且干净,一 定要剔除未来数据影响,譬如 8 月 CPI 数据对应至发布日 9 月 9 日而不是日历日 8 月 31 日;2、输入端数据可以加入些另类数据,譬如央行执行报告等文本数据;3、如果是神经 网络模型,输入端数据 X 需要对应至神经网络节点数。 而输出端 Y 则需要注意:1、最后目标是分类还是预测,对应的因变量需要提前打标。譬如 分类问题,对应因变量应该是后续能否上涨(0 或 1);预测问题,对应因变量是未来 30 日 利率下修概率。2、选择相对合适的损失函数、学习率等一系列指标。 相比其他模型,神经网络的优势是:1、模型能容纳更多的数据,过拟合问题相对较小; 2、 市场相对不拥挤,仍能有明显超额;3、模型可能会自动学习数据中存在的变量,譬如有收 益率数据可能会自动延申出波动等数据。 当然,不足或问题也有两个:一是很难作主观解释,模型更多是黑箱,如果市场发生历史 上未曾有的变化,模型很难反应。也就是说,神经网络真的需要“不断学习”;二是部分模 型未被长期验证,短期的超额有可能是偶然造成,往往需要在理论层面反复论证。
5.工程五:任务结果评估
模型构建完成后,还需要测试,这与制造业的“质量控制”环节类似。因为在经过了几重 设计之后,仍有部分策略存在是数据驱动,也能得出相对漂亮的净值曲线,但实质是“伪 量化”。 “伪量化”主要是对当前市场判断意义不大,仅仅展示了过去数据。典型有: 第一、利用了未来数据,这当然会明显改善净值曲线,但明显意义不大。譬如:1、股市策 略中只选红利股,熊市当然有明显超额;2、对择券池优化,提前剔除了退市、违约风险券; 3、数据日期提前,个股年报数据时间点在年底而不是实际发布日。当然,还有一部分用了 隐形未来数据,譬如分位数、夏普等区间取值用全周期数据,而不是过去滚动数据。 不少策略隐藏着未来数据,简单分辨方法是“特殊值法”,即关注最特殊的时间节点: 1、择券策略关注市场大幅波动时,量化策略是否有明显回调。通常来说,择券策略很难规 避市场大幅回撤; 2、择时策略关注量化策略是否能精准选取最高点和最低点。市场常有超涨或超跌,很难有 精确的高低点择时;

第二、模型本身无效,超额收益更多是来源于β、风格等,或是忽视流动性、交易费用。 典型就是万德微盘股指数、万德连板指数等,并不能复制同样的策略。量化策略则重点关 注:1、是否风格过于集中;2、交易过于频繁;3、选择的个券流动性匮乏。
第三、策略收益更多来源于部分时间段或者部分个股,复制意义不强。分辨相对简单,重 点看策略曲线走势、策略择券池,因子模型则可以用 IC 等指标鉴别。
第四、策略曲线有一定超额,但仅局限于样本内。背后更多是模型运用了过多的特征向量, 使得模型过拟合。所以在样本内能很好的解释过去收益率变化,净值曲线当然也较好,但 并不能沿用至当下或是未来市场表现。分辨方法则是将过去数据分为实验集和测试集,或 是模拟盘检验。 所以在测试开始前,我们通常先检查数据的有效性: 1、重点当然看是否使用了未来数据。关注重点在:财务数据、经济数据等是否用发布日, 分位数数据是否用全局区间,择券池、风格等是否修改; 2、数据是否用非正常方式修饰。重点关注:除中性化、标准化以外的处理方式,中性化的 自变量等; 3、数据准确性、完备性。 因子模型评估来看,主要有 IC、IR、Rank-IC 等指标。因子模型评估中,重点关注因子的 有效性和稳定性。通常我们认为 IC 绝对值大于 0.03。因子相对有效,IC 绝对值越大,因 子有效性越强。当然如果 IC 绝对值过大,需要警惕因子中是否有未来数据等。IR 则是衡量 IC 值稳定的指标,计算方式则是 IC 均值/IC 标准差。 而机器学习模型更多只能依赖测试集以及实践检测。机器学习模型的有效性检测更多依赖 测试集,当然模型运用前还需要实践检测。从有效性检测中,我们也能发现机器学习模型 可能存在样本内有效、实践失效的问题。所以在运用机器学习模型是需要更加谨慎,也需 要相对长时间的实盘检验。 当然,量化模型最后也需要和宽基指数、主观判断等一起比较收益、波动、夏普等指标。