结合领域知识的因子分析:在金融风险模型上的应用

2022-02-17 10:47喻文健
自动化学报 2022年1期
关键词:估计值基本面最大化

冯 栩 喻文健 李 凌

金融分析中,风险管理对于合理地保护资产十分重要.通常,资产价值的波动性被定义为风险,而风险管理的目的则是合理的评估资产的波动性[1−7].风险模型(Risk model)是风险管理的重要方法,而多因子模型(Multiple-factor model)是一种能够有效分析资产风险的风险模型[3,8].多因子模型假设资产的回报被若干因子影响,例如国家经济水平、工业领域周期以及公司财务指标等等具有经济学含义的基本面因子,或者通过统计学方法计算出的统计学因子,其一般形式为

其中,yi是第i个资产的回报(i=1,···,m);xj表示第j个因子的数值(j=1,···,k);cij表示第j个因子对于第i个资产影响程度,被称为第i个资产在第j个因子上的暴露;而ri表示第i个资产的非因子回报,通常被看做拟合残差.式(1)显示所有资产回报都被k个相同因子驱动,并且这些因子反映资产间的相关性以及内在的波动性.每个因子xj和残差ri是不相关的,且每个残差ri之间也不相关.通过式(1),可以推导出风险的表达式[3]:

其中,var(y) 代表m个资产回报y=[y1,···,ym]T的协方差,C ∈Rm×k是m个资产对k个因子x=[x1,···,xk]T的暴露矩阵,X ∈Rk×k是因子x的协方差矩阵,而对角阵R∈Rm×m是残差矩阵.风险模型的生成则是通过实际观测到的回报和一些分布假设在限制因子数目的情况下计算出式(2)中的C、X和R得到风险矩阵,再通过风险矩阵来进行资产的选择和配置来规避风险从而最大化回报.通常情况下,风险模型需要每隔一天或者更短的时间生成一次,用于下一时段的资产选择和配置.

基本面因子模型(Fundamental factor model)和统计学因子模型(Statistical factor model)是两类经典的多因子模型[1−3,8],目前仍被广泛应用于金融分析领域.基本面因子模型使用观测到的领域知识在资产上的暴露,例如股息率、市盈率、市销率等等,求出这些领域知识因子(基本面因子)的数值和残差来生成风险模型[2−3,8−10].这些已知的基本面因子通常含有确切的经济学含义,因此得到的模型具有很强的可解释性,而模型的可解释性是对模型性能的重要保证[11−12].文献[2,9]使用最小二乘法生成基本面因子模型进行风险资产评估,并针对不同的真实数据进行了实验,显示出基本面因子模型的优良性能.然而由于能观测到的基本面因子数量有限,且不是都对生成风险模型有价值,因此文献[2,9]中方法需要手动挑选合适的基本面因子来生成更好的风险模型.统计学因子模型则使用因子分析(Factor analysis)生成模型[3],其通常采用期望最大化过程(Expectation-maximization process)来计算统计学因子及其暴露[13−18].尽管统计学因子模型生成的因子没有确切的经济学含义,容易在数据噪音较大时过拟合,却能够捕捉到基本面因子模型中缺失的因子及其暴露.由于基本面因子模型具有很强的可解释性,而统计学因子模型可以捕捉到隐藏在回报中的因子,因此需要构造一个结合领域知识且包含统计学因子的混合因子分析算法用来生成更准确的风险模型.

本文针对中国股市风险评估问题,将基本面因子暴露整合到统计学因子分析中提出一种新的混合因子分析方法生成中国股票的风险模型.首先,本文提出一种快速因子分析算法.其次,修改因子分析的期望最大化过程使其包含基本面因子暴露及一个用来调整基本面因子的大小和相关性的方阵,从而推导出新的混合因子分析算法.最后,基于混合因子分析算法提出了近似最优的基本面因子挑选算法,并将其与混合因子分析算法结合得到挑选基本面因子的混合因子分析算法.我们使用三个人造数据集和一个真实数据集来测试本文所提出算法的性能,实验结果表明快速因子分析算法在第一个人造数据集上能够带来31 倍以上的加速比,并且本文提出的挑选基本面因子的混合因子分析算法能够有效地构建准确且稳定的风险模型.在所有的人造数据集上,使用我们的挑选基本面因子的混合因子分析算法得到的风险模型的对数似然估计值(Loglikelihood)的均值都要大于统计学因子分析生成的模型,并且标准差基本相同甚至更小;在真实数据集上,该方法得到平均对数似然估计值为12.00,比因子分析构建模型的7.56 大4.44,同时前者的平均对数似然估计值的标准差为8.25,小于因子分析的9.06.

本文的剩余部分按照如下组织:第1 节为基于期望最大化过程的统计学因子分析的介绍;第2 节介绍我们的混合因子分析算法;第3 节为实验结果;最后一节为全文的总结.

1 期望最大化过程和统计学因子分析

1.1 期望最大化过程

期望最大化过程是机器学习中一个重要的学习方法,通过近似后验推断的过程学习包含隐藏变量的概率模型[13−16,19−24].以式(1)代表的多因子模型为例,其中y是已知的观测变量,而x是隐藏变量,在x属于特定分布的假设下,目标是计算出式(2)中的C、X和R使其能够最优拟合x和y的联合分布.文献[14]中首先提出了求解此类线性模型的期望最大化过程,它通过计算x在y下分布的期望并最大化x和y的联合分布的似然估计值均值,迭代计算C、X和R直到收敛.

对含有隐藏变量模型的随机梯度下降法可以看做是一种特殊的期望最大化过程,其最大化步骤由单独的梯度下降步骤组成;而其他一些期望最大化过程的变种还会包含更多额外的步骤[15].期望最大化过程有两个重要的特点:1)整个迭代过程是由对于变量分布的假设推导得到的,因此对一个完整的数据集,所有未知变量都可以通过期望最大化过程得到,但这个特点并不是期望最大化过程独有的;2)当期望最大化过程得到中间结果时,数据的分布假设可以被更改,从而继续新的期望最大化过程,而这个特点是其他机器学习算法中很罕见的[14].近年来,期望最大化过程被应用在各种不同的场景当中:例如使用期望最大化过程推测回声位置[19],使用期望最大化过程将自回归和非自回归模型进行结合,从而在保证精度的情况下降低模型延迟[20],使用变种的期望最大化过程对噪音程度未知的图像进行去模糊化处理[21],使用变种期望最大化过程进行径向基核函数网络自回归模型的参数估计[22],使用期望最大化过程进行非刚性点集配准研究[23]以及使用期望最大化过程与神经网络结合进行全重叠的手写数字识别与分离[24]等,这些应用都显示出期望最大化过程在当下仍旧是实用的算法.

1.2 统计学因子分析

因子分析是经典的统计学方法,被广泛应用于机器学习和金融等领域[15−18,25−29],例如利用因子分析方法处理语音系统中的说话人识别问题[26]和语音重建问题[27],将因子分析方法运用于场景图像识别的神经网络中[28],以及将变种的因子分析应用到脑神经数据的分析当中[29].而在金融领域中,因子分析通常被用于生成风险模型来评估资产风险[3].

金融领域所需的因子分析需要优化的问题,是通过对式(1)所示的多因子模型引入连续时间序列并对因子加上特定分布建立的模型.首先,在公式(1)的基础上假设所有因子均为隐藏变量并引入时间变量t(t=1,···,n):记yt ∈Rm为m个资产的价值在t时刻的一条观测数据,xt ∈Rs为t时刻不能被观测到的s个服从N(0,I) 分布的隐藏因子,其中,I表示单位矩阵,代表s个因子服从均值为0 方差为1 的正态分布,同时rt ∈Rm表示m个服从均值为0 方差为R正态分布的残差.根据上述的假设,因子分析的基本模型为[15−16]:

其中,C ∈Rm×s是因子的暴露系数矩阵且R∈Rm×m是残差对角阵,同时可知隐藏因子的协方差矩阵X ∈Rs×s为单位阵.基于式(3),可得[15−16]:

式(4)代表在式(3)的假设条件下,{yt}服从均值为0,方差为CCT+R的正态分布,因此评估相应资产的风险可通过因子分析方法计算出C和R并最终计算出风险矩阵(2)获得.

为了求解C和R使其拟合式(3)、(4)所代表的因子分析模型,一个思路是求解C和R使其最优拟合{xt}及{yt}的联合分布.文献[15−16]提出使用期望最大化过程求解C和R使其最优拟合{xt}及{yt}的联合分布,即最大化{xt}及{yt}联合分布的对数似然估计值均值[13−16].首先,根据期望最大化过程在期望计算步骤需要计算有关xt在yt下分布的期望及均值,可通过式(3)推导出:

借由式(5),可推导出xt在yt下的均值以及方差:

同时,xt在yt下协方差矩阵均值为:

由于因子分析需要最大化{xt}以及{yt}联合分布的似然估计值均值,因此首先引入最大化对数似然估计值表达式(9)[15−16],同时最大化式(9)等价于最大化其均值,因此推导出均值表达形式的式(10)[15−16],其中|R|表示R的行列式而 trace(·) 代表矩阵的迹,此时式(10)即为所求问题的表达式.由于需要最大化(10),因此通过对式(10)求偏导可以得到C以及R的迭代式(11)和(12),从而进行迭代求解以达到收敛要求,其中 diag{·}表示抽取矩阵的对角元形成对角阵而c表示常量.

基于上述的所有推导,因子分析的期望最大化过程为:1) 根据已有的C和R计算期望(6)~ (8);2) 通过已计算好的期望根据式(11)和(12)依次更新C和R;3)当迭代结果未收敛时重复前两步.由于因子分析的分布假设下{yt}数据服从式(4)的分布,因此可由式(4)推导出迭代过程的判定收敛的对数似然估计值均值式(13),其中Y=[y1,···,yn]∈Rm×n为m个资产在n个时刻上的回报矩阵,而收敛条件可写为两次迭代步之间(13)的变化小于预设的迭代收敛阈值ϵ.算法1 中整理了基于期望最大化过程的因子分析算法:

算法1.基于期望最大化过程的因子分析(FA)

记算法1 的总迭代步数为iter,由于每次迭代中时间复杂度最大的步骤为计算Y YT,因此每次迭代的时间复杂度是 O(m2n),故算法1 的时间复杂度为 O(iter·m2n) .

2 结合基本面因子的快速因子分析

本节首先介绍利用采样协方差矩阵加速因子分析的快速因子分析,并在快速因子分析的基础上推导引入基本面因子的混合因子分析,最后介绍近似最优选择基本面因子的混合因子分析.本文遵循Matlab 语言的习惯来表示矩阵中的部分元素,以及对矩阵的一些操作.

2.1 快速因子分析

实际情况中通常时刻数目n远大于统计学因子数目s,因此希望替换算法1中Y YT的计算来减少算法运行时间.记采样协方差矩阵S=Y YT/n,使用S代替Y进行迭代,则可以推导出:D=nSBT,G=n(I−BC)+nBSBT=n(I+B(D −C)),R=diag{S−CDT/n},并且式(13)中的trace(YT(CCT+R)−1Y)=trace (Y YT(CCT+R)−1)=trace(nS(CCT+R)−1).根据上述推导,借助采样协方差矩阵的快速因子分析整理于算法2 中:

算法2.快速因子分析(FFA)

由于算法2 中单个迭代步的时间复杂度为O(m2s),而算法2 只在第2 步计算了一次Y YT,因此算法2 总体时间复杂度为 O(iter·m2s+m2n),小于算法1 的O(iter·m2n).

2.2 结合基本面因子的混合因子分析

基本面因子模型使用资产的历史回报以及已有的基本面因子暴露,例如市值、市盈率、市销率和流动比率等,生成风险模型用以评估风险[2−3,9].基本面因子暴露在不同层面表征资产的金融特征,例如:市值表征一个公司的整体价值,而流动比率代表公司偿还短期债务的能力,因此基本面因子模型在金融风险管理中表现出很强的可解释性.算法3 是使用普通最小二乘法构建基本面因子模型的经典算法[2,9]:

算法3.普通最小二乘法(OLS)

由于基本面因子暴露C1∈Rm×f已知,借由式(1) 可以推出Y=C1F1+R1,其中F1∈Rf×n为基本面因子矩阵而R1∈Rm×n为残差阵,因此问题变为拟合Y=C1F1,之后计算残差R1,最后计算构造风险矩阵(2)的矩阵X和R.算法3 中的第1 步可由Y=C1F1等式两侧同乘得到构造;第2步表示根据计算残差矩阵R1;第3步表示求解残差矩阵R1的协方差以构造残差对角阵R;第4 步为计算基本面因子协方差矩阵X1∈Rf×f;最后返回X1和R.在算法3 执行完成后,使用即可得到式(2)中的风险矩阵.

为了将金融的领域知识集成到统计学因子分析中,需要推导新的期望最大化过程,而首先则需要将已知的基本面因子暴露固定到第1.2 节的原始模型中.由于基本面因子的值在假设中是不可及的,因此新优化问题的模型可修改为:

其中,A也需要在期望最大化过程中被迭代更新,并且可由式(15)推导出(2)中的全因子的暴露矩阵C=[C1A,C2] 用来进行期望最大化过程的迭代.因此新的混合因子分析需要求解的问题变为计算A、C2和R使其最大化{xt}及{yt}联合分布.

根据式(15)以及第1节中推导的期望最大化过程,首先推导xt,1和xt,2在yt下的期望:

根据上述的推导,新的期望最大化过程可表述为:第1 步,根据已有的A、C2以及R计算期望(8)(16)(17);第2 步,通过已计算好的期望以及式(22)、(23)、(12)依次更新A、C2及R;第3 步,当迭代结果未收敛时重复前两步.根据新的期望最大化过程和修改后的快速因子分析算法可整理出结合基本面因子的混合因子分析算法4:

算法4.结合基本面因子的混合因子分析(HFA)

当因子总数目相同时(设总因子数目为k),尽管算法4 和算法2 的时间复杂度相同,但算法4 的实际运行时间更短:由于算法4 中最大的矩阵求逆操作是对于(k−f)×(k−f) 的矩阵进行求逆,小于算法2 中k×k的矩阵求逆操作;同时算法4 中需要迭代更新的矩阵A和C2大小为k×k以及m×(k−f),比算法2 中的C的m×k小.因此在总因子数目相同时,算法4在f>0 时的运行时间要小于算法2.

2.3 近似最优的基本面因子选取算法

在实际情况中,被观测到的基本面因子数量众多,但只有部分对于生成风险模型更有价值,因此本节着眼于通过历史数据找到合适的基本面因子,并使用挑选出的因子联合算法4 生成更准确的风险模型.尽管第1 节、第2.1 节、第2.2 节均旨在最大化该时刻的对数似然估计来推导期望最大化过程,本节提出的基本面因子选择算法却旨在通过对未来时刻预测的对数似然估计值来选择最优的基本面因子组合.

记所有观测到的基本面因子总数目为F而风险模型的总因子数目为k,若需要得到t时刻最优的基本面因子组合,则要综合考察之前时刻所有基本面因子组合生成风险模型的预测结果.以t −1 时刻为例,当需要得到基本面因子的所有组合在时刻t−1生成的风险模型对于时刻t回报预测的对数似然估计值结果时,需要执行次算法4以得到完整的结果,代表从F个元素中选择i个元素的组合数,这意味着当F与k数量级相同时需要执行 O(2F) 次算法4.当t时刻之前的所有预测的对数似然估计值被累积好后,便选择使对数似然估计值最大的基本面因子组合来生成t时刻的风险模型.然而 O(2F) 次算法4 的执行需要花费大量时间,因此需要寻找一个近似最优的算法,能在更快的运行时间下得到合适的基本面因子组合.

为了快速找到合适的基本面因子组合,需要一个贪婪算法来搜索可能的解空间.首先,通过将每一个的基本面因子暴露在t−1 时刻的采样协方差矩阵上的拟合结果对基本面因子排序:记为所有基本面因子暴露矩阵,即将的每一列、t−1时刻的采样协方差矩阵和统计学因子数目k−1作为输入传入算法4,按照程序结束时风险矩阵对于输入回报矩阵的在式(13)上计算出的对数似然估计值对所有基本面因子进行降序排序,并记排序后的索引向量为d.之后使用t−1 时刻的采样协方差矩阵、统计学因子数目k−i以及基本面因子暴露矩阵,(i=1,···,min(F,k)) 通过算法4 计算风险矩阵,并使用风险矩阵计算对于t时刻的回报yt预测对数似然估计值(该预测的对数似然估计值在实验部分进行介绍),并将对数似然估计值累积到向量v∈Rmin(F,k) 中,而算法5 中的衰减率r被用来以一定的衰减率累积对数似然估计值.最后,通过找到v中最大值的下标d来确定t时刻风险模型所需的基本面因子组合d[1:d] 和基本面因子暴露矩阵算法5 描述了基本面因子挑选流程 (zeros(F) 为生成长度为F的零向量操作):

算法5.部分基本面因子挑选算法(FS)

算法5 在每个时刻使用了 O(F) 次算法4 来得到近似最优的因子组合,远小于搜索整个空间的O(2F).

先使用算法5 找到合适的基本面因子,再通过算法4 计算风险矩阵,即可得到实际应用中用以计算风险的算法6:

算法6.挑选基本面因子的混合因子分析(HFA +)

算法6 首先使用算法5 挑选出合适的基本面因子并更新回报矩阵到下一时刻,随后使用挑选出的基本面因子通过算法4 生成风险矩阵.算法6 中保持累积向量v的更新,使得算法6 能即时通过v挑选合适的基本面因子来生成更准确的风险模型,也因此算法6 中每一时刻选择的基本面因子组合及数目均有可能不同.

3 实验

我们在模拟实际情况的三个人造数据集和一个真实数据集上对本文算法进行了对比实验.实验平台为拥有Intel Xeon E5-2 680 CPU (2.50 GHz)的Cent OS 服务器.我们使用Python 3.6 实现了本文算法并记录它们运行所需的CPU 时间,单位为秒.实验中所有算法的迭代收敛阈值ϵ为 10−8.

3.1 实验准备

记Y=[y1,···,yn]∈Rm×n为m个资产在n个时刻的回报数据,F是基本面因子的数目而S是统计学因子的数目,通过以下4 个步骤可生成人造数据集(所有的随机阵均为标准高斯分布随机阵):

生成F×n的基本面因子随机阵以及m×F的基本面因子暴露随机阵

生成S×n的统计学因子随机阵以及m×S的统计学因子暴露随机阵

生成m×n的随机噪音阵E

使用滑动窗口来生成风险模型并评估风险,这样使得每次都使用最新的一部分数据来计算采样协方差矩阵,需要对回报矩阵做如下的操作以不同重要程度保留退出滑动窗口数据的历史信息:

真实数据来源于中国的股票市场.记pt为m支股票在第t天的价格数据,可以使用对数回报率来作为回报向量使用,即:

通常对数回报率被看做服从高斯独立分布.对数回报率矩阵同样进行了式(25)的操作.所有基本面因子暴露来自Tushare 金融大数据社区(https://tushare.pro/),同时按列进行了标准化处理.所有的人造数据矩阵、真实数据的信息和可运行的示例代码都被整理在 https://github.com/Exp-DataForRiskModel/ExpData 中.

实验结果的评价也很重要.记Ωt=CCT+R为算法1、2、4、6 在时刻t生成的风险矩阵,而为算法3 在时刻t生成的风险矩阵,且yt+1为t+1 时刻的回报数据,则t时刻的风险模型对于t+1 时刻回报预测的对数似然估计值为:

式中,因为mln(2π) 是正常数,预测的对数似然估计值只与Ωt相关.而Ωt是借助算法以及St计算得到,代表Ωt与St非常接近,当St的行列式小于1 时,ln|Ωt|会变得非常小而此时式(26)可能产出正数.由于对不同数据集式(26)计算的值的绝对大小会有所不同,因此单个实验内的相对大小的比较是关注的重点.在实验过程中统计单个算法在实验时间段内的平均对数似然估计值 (E(LL)) 以及平均对数似然估计的标准差σ(E),其中前者代表了所生成风险模型的准确程度而后者代表了生成风险模型的稳定性.同时标准差也是评价新算法是否显著的好于其他算法的重要指标.

由于实际情况下会以一天、半天甚至一个小时计算风险模型用以评估下一时段的风险,同时股票的实际数目有数千只,因此本文人造数据的实验着眼于m较大的情况来对比不同算法的运行时间.

3.2 人造数据集实验

本节在3 个人造数据集上进行了不同算法的对比实验:第一个人造数据集上的实验首先测试在相同的数据集下算法2 是否相对于算法1 在保持结果基本不变的同时获得了较高的加速;第二个人造数据集上的实验测试当基本面因子重要性更高时,算法4 的结果是否要优于算法1、2、3;第三个人造数据集上的实验则是测试提出的算法6 是否能在模拟真实情况的基本面因子中挑选出合适的基本面因子组合来生成比算法1、2、3、4 更好的风险模型.

第一个人造数据集的设置为:m=500,n=50 100,F=10,S=10,Σ1=5I,Σ2=3I,δ=5,10,h=60.Σ1=5I和Σ2=3I表示基本面因子的重要性高于统计学因子,而δ=5,10 表示不同程度的噪音.我们分别测试算法1 和算法2 在总因子数目为10 和13 时,从时刻50 000 到时刻50 100的预测结果,实验结果列于表1 中.除了对数似然估计值均值、标准差和时间外还统计了算法的平均迭代步数 (E(iter)) 和算法2 对算法1 的加速比.

由于噪音程度δ不同,对于回报矩阵的元素大小有影响,同时也会影响到最终求出的对数似然估计值的均值,而更大的δ会导致更大的回报矩阵数值,因此通过式(26)所求得的对数似然估计值就会更小.表1的数据表现出算法1 和算法2 在总因子数目相同时对数似然估计值均值和其标准差基本相同,同时迭代步数也基本相同(结果的波动则是由于数值精度误差所导致的),但由于时刻数n远大于总因子数目,因此算法2 在所有条件下都要比算法1 快31 倍以上,显示出算法2 良好的运行效率.

表1 算法1 和算法2 在第一个人造数据集上的实验结果Table 1 Results on first synthetic dataset of Alg.1 and Alg.2

第二个人造数据集数据集设置m=1 000,n=4 200,δ=3,5,10,其余设置与第一个数据集相同.δ=3,5,10用于分别模拟由低到高不同噪音程度的人造数据,而m=1 000,n=4 200 用于模拟更加真实的数据集的情况.第二个人造数据集用于测试在更重要的基本面因子被挑选出后算法3 和算法4 的性能.时刻4 000 到时刻4 100 被设置为实验区间来统计预测结果.由于基本面因子数量为10,首先分别测试了算法1 和算法2 有10 个统计学因子和算法3 有10 个基本面因子的结果,再测试了算法1、算法2 与算法4 在总因子数目为13 的实验结果,其中算法1 和算法2 使用13 个统计学因子而算法4 使用10 个基本面因子和3 个统计学因子.算法3 和算法4 都使用整个基本面因子暴露矩阵作为输入.

表2 中的结果表现出当总因子数目为10 时算法3 在所有噪音程度下都比算法1 拥有更大的似然估计值均值和更小的标准差,并且算法3 的运行时间最少,表现出基本面模型的优良性能;但算法3的结果却比算法2 在总因子数目为13 的结果差,表现出统计学因子分析良好的扩展性.由于时刻n与总因子数目比例变小,算法2 相对算法1的加速比只有2 倍以上,符合第2.1 节中的推导.表2 中算法4 的结果表现出当总因子数目为13 时,算法4的运行结果优于算法2,因为算法4 相对于算法1、2拥有更大的对数似然估计的均值以及更小的标准差,同时算法4 的运行时间更短;算法4 与算法3相比,算法4 拥有更大的对数似然估计值,表现出混合因子分析算法优良的性能.当δ=3 且总因子数目为13 时,算法4的对数似然估计值为−3564.72,大于算法1 的−3 617.34 且拥有表中最大的差值52.62;此外,算法4 的标准差为25.94 小于算法1 的33.82,此时算法4 相对于算法1 拥有超过6.3 倍的最大加速比.所有的结果都显示出算法4 在合适的基本面因子已知时能够比算法1、2 和算法3 生成更准确的风险模型.

表2 算法1、算法2、算法3 和算法4 在第二个人造数据集上的实验结果Table 2 Results on second synthetic dataset of Alg.1,Alg.2,Alg.3 and Alg.4

第三个人造数据集的m、n、F、S、h和Σ2都和第二个人造数据集相同,Σ1的对角元被设置为[5,5,5,3,3,3,3,1,1,1],被用来模拟真实数据中基本面因子重要性高低不同的情况,代表部分基本面因子的重要性高于统计学因子,而另一部分的重要性则弱于统计学因子.第三个人造数据集用于测试算法6 能否挑选出重要性更高的基本面因子来生成更准确的风险模型矩阵.算法6 设置衰减率r=0.7,从时刻4 000 到时刻4 100 累积对数似然估计向量v,并记录从时刻4 100 到时刻4 200 的预测结果.其余算法设置时刻4 100 到时刻4 200 为测试时段.算法1、算法2、算法3 和算法6 在总因子数目为10的结果以及算法1、算法2、算法4 和算法6 在总因子数目为13 的结果都被记录在表3 中,其中算法3、算法4 和算法6 都使用整个基本面因子暴露矩阵作为输入.

表3 中因子数s+f=10,13 表示限定算法6 的总因子数目为10 和13,但具体选择基本面因子与统计学因子数目在每个时刻是不固定的,以δ=10为例,算法6 在总因子数为10 时平均使用约5.39 个基本面因子和4.61 个统计学因子,而当总因子数目为13 时平均使用约5.79 个基本面因子和7.21 个统计学因子.表3 的结果表现出无论在总因子数目为10 还是13 的情况下,算法6 对数似然估计值均值都大于其他算法,同时由于n与总因子数目的比值与第二个人造数据集接近,算法2 相对算法1 的加速比与第二个人造数据集实验结果相似.从表3中可以看出,当基本面因子未经过挑选时,即直接使用算法3 和算法4 生成风险模型进行预测,其表现在相同总因子数目的算法中最差,甚至不如算法1、2 代表的统计学因子分析,这意味着基本面因子需要经过适当的挑选才能生成更好的风险模型.当总因子数目为10 时,算法6 的表现在δ=3 上最好,其对数自然估计均值达到−3 561.04,比算法1 的−3 594.51 大33.47,同时算法6 与算法1 的标准差基本相同;当总因子数目为13 时,算法6 在δ=5时表现最好,其对数自然估计值达到−3 522.23,比算法1 的−3 550.65 大28.42,同时算法6 与算法1的标准差基本相同.这些结果都显示出算法6 要显著地比算法1 表现好.尽管算法6 的运行时间比算法1 略长,增长的运行时间仍旧在可接受的范围之内,表示算法6 能够和算法1 在相同的时间间隔上生成更优的风险模型.

表3 算法1、算法2、算法3、算法4 及算法6 在第三个人造数据集上的实验结果Table 3 Results on third synthetic dataset of Alg.1,Alg.2,Alg.3,Alg.4 and Alg.6

3.3 真实数据集实验

真实数据集挑选了中国股票作为资产.由于股市的历史数据影响深远,因此设置半衰期h=200 .在实验中挑选了22 个包含了市值、市盈率、流动比率等的基本面因子,设置2010 年1 月3日为第一天,且随机挑选了194 支股票价格信息及基本面信息相对完整的股票.算法6 从第900 天到第1 300天累积对数似然估计向量v,同时算法1、算法2 和算法6 第1 300 天到1 500 天总因子数目为15 的风险模型预测结果被记录在表4 中,同时加入了使用全部22 个基本面因子的算法3 作为基本面模型预测结果对比,此时算法3 和算法6 都使用所有22个基本面因子的暴露矩阵作为输入.同时表4 中记录了算法6 在不同衰减系数r下的实验结果.图1为算法1、算法3与算法6 在r=0.9 时前30 天的对数似然估计值.

表4 算法1、算法2、算法3 和算法6 在真实数据集上的实验结果比较Table 4 Results on real-world dataset of Alg.1,Alg.2,Alg.3 and Alg.6

图1 算法1、算法3 和算法6 (r=0.9) 前30 天风险模型在真实数据集上预测的对数似然估计值的结果Fig.1 The predicted log-likelihood of the risk models estimated by Alg.1,Alg.3 and Alg.6 (r=0.9)on first 30 days

算法6 在r=0.6,0.7,0.8,0.9 时分别平均使用了约7.54、7.45、7.47、7.40 个基本面因子,剩余的为统计学因子.图1中表现出算法6 在大部分时间的预测值是要好于算法1 的,并且在表现如不算法1的时间点相差也不大;同时图1中算法3 的效果说明使用所有的基本面因子尽管在少数时间的效果要好于算法1 和算法6,但由于基本面因子没有经过挑选,因此会出现波动巨大的情况.表4 中的结果显示出尽管算法3 总因子数目最多,但其对数似然估计值均值却远小于其他算法,并且均值标准差大于其他算法,显示出算法3 生成了更坏而且更不稳定的风险模型;同时算法2 仍旧能比算法1 有将近三倍的加速比,且对数似然估计值均值和标准差相同.表4 中 E(LLAlg.6−LLAlg.2) 表示算法6 与算法2 对数似然估计值差的均值,值越大代表算法6 的性能越比算法1 好,而σ(E(LLAlg.6−LLAlg.2)) 表示该均值的标准差,用来显示算法6 优于算法2 的显著程度.由于真实数据的对数回报数值较小,因此最后计算出的对数似然估计值较大.表4 中的结果显示出在不同r的取值下算法6 的结果都要优于算法1.不同r取值的结果表现出算法6 可通过调节r来改善预测结果.当r=0.9 时,算法6 拥有最大的 E(LLAlg.6−LLAlg.2)=4.44 且σ(E(LLAlg.6−LLAlg.2)=1.58,并且算法6 的σ(E) 为8.25 小于算法2 的9.06,显示出算法6 显著好于算法1 并且更稳定.尽管算法6 运行时间更长,增长的时间仍在可接受范围内.

4 结论

针对金融数据中的风险模型生成问题,本文提出了快速因子分析算法,同时提出了结合领域知识的混合因子分析算法以及在实际应用中使用的挑选基本面因子的混合因子分析算法.实验结果显示快速因子分析算法在人造数据集上能够达到最多31倍的加速比,同时挑选基本面因子的混合因子分析算法在人造数据集和真实数据集上均有更好的表现,并且运行时间的增长也在可接受范围内.

猜你喜欢
估计值基本面最大化
2022年7月世界直接还原铁产量表
2022年6月世界直接还原铁产量表
2022年4月世界直接还原铁产量表
股田制让种粮效益最大化
勉县:力求党建“引领力”的最大化
Advantages and Disadvantages of Studying Abroad
刘佳炎:回国创业让人生价值最大化
如何快速判读指针式压力表
关于证券投资的行业选择与上市公司分析
对伟星股份的基本面分析