1. 引言
1.1. 研究背景及意义
股价波动由背后众多潜在因素及组合所驱动,是一个动量过程,是一个始终处于不断演变的动态系统。这些潜在因素和动量不能直接观察,但可以通过观察序列具象化。隐马尔可夫模型(Hidden Markov Model, HMM)在股票市场研究中具有广泛的应用和意义。HMM可以用于对市场状态进行建模,将市场状态表示为一个隐藏的马尔可夫链。通过观测到的股票价格等市场数据,可以推断识别出隐藏的市场状态模式和趋势,结合其他技术指标和市场数据制定交易信号,优化交易策略。
本文的主要工作和研究意义主要包括:(1) 把基于高斯分布的隐马尔可夫模型(Gaussian HMM)应用在对中国股票市场数据中。给出完整的数据集汇编方法和模型训练流程。(2) 基于Gaussian HMM的能力编码观测序列的隐含状态序列,提出了一种新的具有市场风格识别能力的双策略模型的构建方法,提供择时信号,进一步提出了一种新的行业轮动策略模型。(3) 构建策略回测框架对策略进行回测,并通过不同的策略探索并验证HMM在中国股票市场中潜在风格的挖掘能力。(4) 通过本文给出的完整实践流程和策略效果理,提供基于市场状态识别的量化策略制定,降低投资者应用HMM模型到量化策略的门槛。
1.2. 国内外研究现状
隐马尔可夫模型(HMM)在量化投资领域的应用已经成为金融工程和风险管理中的一个重要研究方向。HMM是一种统计模型,用于描述一个含有隐含未知参数的马尔可夫过程。在量化投资中,HMM被用来预测市场趋势、优化交易策略、进行资产选择和行业轮动等。
虽然应用在股市预测的数据挖掘的技术工具很多,包括SVM、神经网络、HMM等 [1] ,但李嵩松 [2] 、Badge [3] 等人从股票价量动态过程的角度认为在股价预测中使用 HMM 更加合适。黄敬峰 [4] 的研究认为对比时间序列中的ARIMA模型更有效果。赵俊 [5] 的研究工作实验认为市场价格预测本质是金融时间序列的问题,Zhang M等人 [6] 还结合了沪深300指数,提出了一种基于高阶HMM的股票市场价格趋势预测方法,认为高阶HMM比一阶HMM具有更好的识别市场价格趋势的能力。
HMM在量化金融中的应用历史可以追溯到20世纪90年代。王犇 [7] 和Nguyen N [8] 均有对国内外HMM在金融领域的应用概览进行了总结,从早期应用到当前在量化分析中的核心角色。Nguyet N [9] 还在2015年提出HMM在选股中的应用,但本质还是股票择时问题。给定交易时间选择股票只是逻辑上先后次序的差别,因此傅中杰和吴清强 [10] 认为,隐马氏模型主要能力还是在于择时。龚健 [11] 则是利用模型的价格预测能力,输出择时信号。此外Chen J [12] 还给出了一个基于HMM的行业轮动策略方案。
在模型训练方面,杜世平 [13] 理清了HMM参数估计学习问题、观测序列概率评估问题和解码问题的思路。还提出了Baum-Welch的改进算法 [14] 。在解决高斯分布的参数估计算法EM,Bilmes J A [15] 对其进行了优化。除了训练方式,特征因子和隐含状态数的选取也显著地影响模型的效果,喻永生等人 [16] 提供了一个完整的解决思路。
2. 相关概念和理论基础
2.1. 高斯分布
高斯分布(Gaussian Distribution),又称正态分布(Normal Distribution),其一维概率密度函数表示如下:
(1)
这里,
是均值,
是标准差。在一维高斯分布的基础上,可定义两个独立一维正态分布随机变量的二维高斯分布,其概率密度函数为:
(2)
同样地,有D维高斯分布的概率密度函数
(3)
其中,
是大小为
的协方差矩阵,
表示为的行列式。对于给定观察序列,根据据公式(3),可计算其高维概率密度。此外,对于多维高斯在本文的应用在于拟合多维的特征向量,D维数应与特征因子数相同。为了简化计算,便于计算机处理防止精度溢出,一般采用对数概率(似然率)。
2.2. 隐马尔可夫模型描述
隐马尔可夫模型(Hidden Markov Model, HMM)是一种描述具有未知参数的马尔可夫过程的统计模型,常用于对具有隐含状态的序列数据进行建模。该模型包含两个随机序列,即不可观测的状态序列(隐藏状态序列)和可观测序列。状态序列可以影响观测序列,但无法直接观察或获取。在研究市场状态和行为时,市场的状态就是隐藏序列。可观测序列在状态序列的影响下可以直接观察或获取。在研究市场状态和行为时,可以从市场中获取的各种历史数据,即可观测序列。在HMM中,隐藏序列J的形式为:
,每个隐含状态都对应着不同的概率值
,且
。可观测序列O的形式为:
,每个观测状态
也对应着不同的值
,且
。
在HMM中,隐藏马尔可夫链可随机生成一个状态序列I,然后从状态序列的每个状态生成观测序列O。HMM可以用初始概率分布
、状态转移矩阵
和发射矩阵
来表示。其中,初始概率分布
表示不可观测状态的初始概率分布,即
。状态转移矩阵
表示在时间t时隐藏状态为
的情况下,时间
时隐藏序列为
的概率:
,
。发射矩阵
表示在时间t时隐藏状态为
的情况下,观测序列为
的概率:
,
。
对于HMM,存在两个重要的假设:第一个是齐次马尔可夫假设,这个假设指的是隐藏状态序列满足马尔可夫性质,即隐藏序列在任意时刻的状态只与前一个状态的隐藏序列状态有关;第二个是观测独立假设,表示在任意时刻,观测序列的状态只与该时刻的隐藏状态有关,独立于其他因素。
2.3. 基于高斯分布的隐马尔可夫模型
2.3.1. Gaussian HMM描述
在量化交易策略中,股票市场的价格、收益等指标往往具有连续性,而传统的离散分布无法很好地对其建模。高斯分布隐马尔可夫模型(Gaussian HMM)作为一种连续概率分布,能够灵活地对数据进行建模,通过设定合适的均值和协方差矩阵等参数,更好地适应连续观测数据的特性,更准确地描述不同状态下的数据分布情况,解决HMM中的隐含状态到观测值概率的模拟问题。即对连续型隐马氏模型使用高斯分布概率密度函数去拟合特定隐含状态到连续观测值的概率映射,是离散状态下隐马氏模型的发射矩阵的模拟。在本研究策略中训练数据构造的因子是多维(D维)特征向量,因此使用D维高斯分布。
2.3.2. Gaussian HMM参数初始化和训练
首先利用参数选取准则(详见2.4节)确定合适的隐含状态个数,而后将数据按照隐含状态个数进行划分。为训练不同隐含状态的D维高斯分布模型,采用K-means聚类算法确定D维高斯分布模型的初始参数:均值矩阵和协方差矩阵。采用 EM 算法迭代估计模型的最优参数,并根据数据训练Gaussian HMM模型。最终得到的Gaussian HMM,带均值矩阵和协方差矩阵参数的D维高斯分布概率密度函数,以及隐含状态转移矩阵和初始状态矩阵。
2.4. 参数选取AIC与BIC准则
AIC (Akaike Information Criterion)是一种常用的参数选择准则,用于在统计模型中选择最佳模型。AIC准则基于信息论的概念,旨在平衡模型的拟合优度和模型的复杂度。其计算公式如下:
(4)
其中,L是模型的最大似然估计值,k是模型的参数个数。AIC准则的基本思想是,模型的最大似然估计值越高表示模型对数据的拟合程度越好,而参数个数越多表示模型越复杂。需要将不同模型的AIC值进行比较,并选择具有最小AIC值的模型作为最佳模型。
BIC (Bayesian Information Criterion) 准则类似于AIC准则,用于在统计模型中选择最佳模型。BIC准则基于贝叶斯统计学的概念,旨在平衡模型的拟合优度和模型的复杂度。其计算公式如下:
(5)
其中,n是样本的大小。BIC准则在惩罚参数个数方面比AIC准则更为严格。BIC准则中的参数惩罚项
中的
部分对参数个数的惩罚更大,特别是在样本较小的情况下。相比之下BIC准则倾向于选择更简单的模型。使用BIC准则时,同样需要选择最小BIC值的模型作为最佳模型。
2.5. 特征因子
借鉴经典多因子选股模型的建立过程,提炼出关于因子的以下几个步骤。一般遵从候选因子的选取、特征因子有效性检验、冗余因子的筛除、因子权重即对收益效果的贡献度、因子迭代替换适应市场风格切换。根据股票数据指标的分类,一般以技术面和基本面指标为主。在利用隐马氏模型进行中高频交易的使用场景中,更倾向于高频变化指标。目的是从价量数据中挖掘潜在的动量状态和模式。
2.5.1. 特征因子和原始数据
在将市场数据用作隐马尔可夫模型的观测值时,存在一个权衡:一是直接使用原始市场数据,一是首先进行因子构造。这取决于多个因素,包括数据的性质、模型的复杂性、以及希望模型捕捉到的市场特性的具体类型。因子构造会导致一些信息的损失,特别是如果因子没有正确地捕捉到市场的所有重要方面。有时这种损失是可以接受的,甚至是有益的,因为能帮助模型专注于最重要的信息。使用原始数据可能需要更复杂的模型来捕捉所有的细节和噪声。而使用因子允许使用更简单的模型,这会提高计算效率并减少过拟合的风险。具体需求也会影响这个决策,如策略对市场的某个特定方面感兴趣,并且有一个与该方面紧密相关的因子,那使用这个因子比使用原始数据更有意义。具体对比看表1。
故本文策略数据侧重使用技术面因子,如价格、交易量、换手率、交易金额等,围绕收益率相关性建立模型适用的特征因子。
2.5.2. 特征因子有效性检验
特征因子的IC检验是量化投资中评估因子预测能力的重要方法。IC检验通过衡量预测值与实际观测值之间的相关性,评估模型预测准确性和信息含量,从而判断因子的选股能力。进行IC检验的原因在于,它有助于投资者筛选出与目标变量具有显著关联且能有效预测未来市场表现的特征因子。
具体实践中,IC检验通常包括皮尔逊相关系数、斯皮尔曼相关系数和Rank-IC分析等方法。计算方式上,IC值通过计算股票在调仓周期期初排名和调仓周期期末收益排名的相关系数获得。信息比率(IR)则进一步考虑了超额收益与风险的关系,通过计算IC值的均值与标准差之比来衡量选股能力和稳定性。
(6)
不同计算方式各有特点:皮尔逊相关系数简单直观,但受线性关系限制;斯皮尔曼相关系数能捕捉更广泛的关系,但可能不如Rank-IC敏感;Rank-IC分析则更适用于实际投资策略,直接反映因子在构建投资组合时的效用。IC值接近1或−1表示因子选股能力强,接近0则无相关性;IR值较高表示因子在承担风险的同时能获得更多超额收益。这些指标共同帮助投资者全面评估特征因子的有效性,为构建有效模型提供关键依据。结合价量因子、RSI和交易量等特征因子的IC检验,我们能够筛选出那些具有显著预测能力的因子,为构建有效的隐马尔可夫模型提供关键支持。有助于提升投资策略的准确性和稳定性。
2.6. 行业轮动
考虑市场的周期性和非周期性行业。行业轮动作为一种投资策略,它基于不同行业在特定时期内的相对强势和表现,在不同行业之间进行资金调配。其目标是利用经济周期和趋势对不同行业产生的影响,以最大化回报并降低风险。周期性行业包括汽车制造、房地产、建筑、旅游酒店、航空航天、金属和采矿等。中国股票市场中,适合进行行业轮动的行业通常是那些受季节性和宏观经济环境影响较大的行业。在经济扩张期,这些行业通常会受益于增加的需求和投资活动。相较于周期性行业,非周期性行业的经营表现相对独立于经济周期,规律更不容易把握。行业轮动需要对市场条件进行积极的监控,研究一个经济周期中行业轮动顺序,持续分析行业趋势。根据确定的行业趋势和前景做出动态的投资决策。
2.7. 投资组合评价指标
量化策略指标主要包括:年化收益率、最大回撤、夏普比、胜率等。而不同的策略只看这些指标还不够,需要有对比标的。如在行业指数选股策略中,则比较的是超越指数的收益,以及其他市场指数的阿尔法收益。针对隐马尔可夫模型(HMM),使用价量因子等技术面因子构建的投资组合,其评价指标的选择既要全面反映策略性能,又要具备与基准的对比能力,从而确保评价结果的客观性和有效性。一般有以下指标:
(1) 年化收益率。年化收益率越高,表示策略盈利能力越强。但需注意和历史时间的整体表现相关,表现优异的年份会拉升平均收益率。投资是面向未来的行为,历史收益率应只作参考。
(2) 最大回撤。最大回撤越小,说明策略风险控制能力越强。投资者通常对回撤幅度有严格的限制,以避免损失过大。
(3) 胜率。胜率越高,说明策略在市场中的胜算越大,但还需结合其他指标综合判断。
(4) Alpha收益。Alpha收益为正且稳定,说明策略能够持续战胜市场,为投资者创造价值。
(5) 超额收益。策略收益与基准收益的差值即为超额收益,和阿尔法收益类似,对策略评价时选取不同的参考标的作为基准,追求超越基准的投资回报,也是部分投资者大费周章构建策略的目的所在。
3. 模型与策略构建
本章数据源来自聚宽投研平台,共选取600个连续交易日数据,开始时间为2021-07-14,截止时间为2023-12-31,具体标的和数据字段如表2。
![](Images/Table_Tmp.jpg)
Table 2. Specific object and data field of the dataset
表2. 数据集的具体标的和数据字段
3.1. 因子相关性与IC检验
本节从A股市场中筛选出较有代表性的个股、混合指数以及行业指数,在使用的实验数据中,对特征因子与收益率相关性分析即Rank-IC值的计算分析。其中收益率为五日收益率;特征因子为基于所选标的每日的市场基础数据,如:最高价、最低价、开盘价、收盘价、前收盘价等。我们已通过预筛选调研从而得出市场量化策略中常见的因子构造方式。基于上述基础数据构建出特征因子,如:(收盘价 − 前收盘价)/前收盘价等。在本节作为特征因子与收益率的ic检验,对原始的因子构造有进一步的简化,比如上述构造方法中,(收盘价 − 前收盘价)/前收盘价 = 收盘价/前收盘价 − 1,在此统一去掉减一,保留收盘价/前收盘价,来进行后续IC检验的相关计算。
于相关系数而言,在策略中倾向于选取绝对值较大的因子作为策略的特征因子。由表3、表4数据可知:一、在上述因子中基于收盘价和最高价参与的构造因子相关系数绝对值相对较大,当中对数构造的特征因子绝对值明显较低。二、基于价格因子构建的特征ic值显著大于价量因子rsi和volume,但要注意价量因子刻画更多的是市场的动量,在风格明显的市场中价量因子往往能很好的预测市场趋势,因此会有短期收益率的相关程度不如价格因子的情况。而具体数值大小的偏差也与实验标的和数据时间选取有关。在选择特征因子时,优先考虑对价格因子进行特征因子构建,结合价量因子完成后续模型训练。
![](Images/Table_Tmp.jpg)
Table 3. Spearman correlation coefficient of each factor with 5-day yield-Rank IC value
表3. 各因子与五日收益率的斯皮尔曼相关系数-Rank IC值
![](Images/Table_Tmp.jpg)
Table 4. Pearson correlation coefficient of each factor with 5-day yield-Rank IC value
表4. 各因子与五日收益率的皮尔逊相关系数-Rank IC值
3.2. 隐含状态数的确定
本节根据AIC与BIC准则从多个预备隐含状态数参数中选取最优隐含状态个数。LL是对数似然值,从图1(a)中可见,对数似然值随着状态数增加而增长,故这个指标在本参数选取中不具备参考性。
通过图1(b)不同隐含状态数对应的AIC和BIC图,结合不同特征因子选取情况,即在特征因子数据中加入了交易量和交易金额两个因子,也不影响看出当隐含状态数n取10时,有接近最小的值。并且随着n的增大,BIC值逐渐变大。AIC曲线则明显随着n的增大而减小,但在n为14时,下降幅度波动收窄,值的增长趋势不明显。
(a)
(b)
Figure 1. AIC and BIC values of different implicit state number models. (a) Contains logarithmic likelihood value LL; (b) Lack of logarithmic likelihood value
图1. 不同隐含状态数模型的AIC值与BIC值。(a) 含对数似然值LL;(b) 不含对数似然值
AIC准则和BIC准则的主要区别在于它们对模型复杂度的惩罚方式不同。AIC准则主要关注模型的拟合优度,而BIC准则则在此基础上增加了对模型复杂度的惩罚,且这种惩罚随着样本量的增加而增加。因此,当样本量很大时,BIC准则倾向于选择更简单(即隐含状态数更少)的模型,以避免过拟合。因此对于模型参数选取来说,AIC和BIC值越小越好,但同时BIC会模型复杂度的惩罚限制参数的无限增长。故本文参考以上结果选取n的范围为9~12作为后续策略中HMM模型的隐含状态数。
3.3. Gaussian HMM模型搭建与训练
3.3.1. Gaussian HMM的模型构建
Gaussian HMM的训练算法核心在于通过多轮迭代来最大化参数估计,旨在寻找最有可能生成观察序列的模型参数。在这个过程中,参数的初始化至关重要。传统的做法通常是随机赋予初值,但这种方法可能导致模型收敛速度较慢或陷入局部最优。因此,本文采用了一种更高效的方法:利用K-means算法对实验数据进行预训练。通过K-means算法,我们可以得到均值矩阵和方差矩阵,这些矩阵能够很好地反映数据的分布特性。随后,我们将这些矩阵的值赋给n维高斯分布模型作为初始参数,旨在提高模型的收敛速度和训练效率。这种初始化方法不仅保留了数据的内在结构,还有助于模型更快地收敛到全局最优解。具体实验数据如表5、表6。
3.3.2. Gaussian HMM的训练
与需要带标签数据的有监督模型不同,HMM 模型输入的是观测数据,由HMM参数来计算对应隐含状态。如把观测数据对应的隐含状态看作是标签,即数据标签能依靠训练好的模型输出。而本文策略目的之一为得到不同时间对应的隐含状态序列,是利用HMM模型训练以后的参数,进一步计算得到,和训练算法非同一算法。如第二章所述,在观测数据为连续序列的情况使用EM算法迭代使重估计后的参数估计最大化。输出参数如表7。
![](Images/Table_Tmp.jpg)
Table 5. Short sequence and long sequence matching graph (partial position)
表5. 上证红利指数实验数据
![](Images/Table_Tmp.jpg)
Table 6. Short sequence and long sequence matching graph (partial position)
表6. 比亚迪股票实验数据
![](Images/Table_Tmp.jpg)
Table 7. Obtained parameters from Gaussian HMM
表7. Gaussian HMM输出参数
3.4. 隐含状态序列处理
本节分别使用表3两组特征因子:rsi、成交量以及特征1~特征4,训练Gaussian HMM模型,利用模型的参数进一步对输入的观测数据编码成隐含状态序列。利用这个隐含状态序列分别构建两个预测择时策略,对比选择效果更好的策略进行行业轮动模型策略的构建。
3.4.1. 隐含状态编码
估计当前训练HMM模型产生观察序列X的概率问题称为问题一。对输入观测数据测试序列X的隐含状态编码问题称为问题二。
问题一使用前向/后向算法来高效计算给定模型参数下观测序列的概率。这个算法利用了动态规划的思想,避免了直接计算所有可能状态序列的概率,从而大大降低了计算复杂度。
问题二使用维特比(Viterbi)算法通过迭代的方式计算每个时间步的状态转移概率和观测概率的乘积,并保留到达当前状态的最大概率路径。在每一步中,算法会考虑所有可能的前一状态,并选择那些导致当前状态概率最大的路径。通过这种方法,Viterbi算法能够有效地避免计算所有可能路径的概率,从而降低了计算复杂度。对计算得到的隐含状态序列与收盘价共同呈现在对应日期上(如图2),多数隐含状态难以在现实市场状态找到映射,但不难看出红色部分和市场中的底部特征非常相似。如有足够置信度,可以把解释为遇到超卖信号,未来预期大概率有反转趋势。实际代码运行输出的状态在表示上不一定每次相同,即不一定每次都是相同颜色表示,但所在位置是一致的,这个多次实验即可验证。如上两图对比不难看出,HMM 模型对数据的建模是具有稳定性的,只要能每次对有关键特征的隐含状态映射配对到交易市场上的特征,即可作为买入卖出的参考信号,制定相应的策略。
![](//html.hanspub.org/file/30-1141040x45_hanspub.png?20240604165253569)
Figure 2. Date corresponds to implied state scatter plot (broken line is closing price)
图2. 日期对应隐含状态散点图(折线为收盘价)
3.4.2. 距离计算——基于位置加权的相似度算法
利用已训练的HMM模型,输入观测序列,对隐含状态序列进行编码,即问题二。输入300天的观测值序列可得长度同为300的隐含状态序列。假设策略预测周期为5个交易日,则截取范围为[295:300]长度为5的短隐含特征序列(简称短序列),到长度为300的长序列(简称长序列)中进行匹配。
本策略使用的序列相似度为,基于位置加权的相似度算法:除了考虑元素本身的相似性外,还可以根据元素在序列中的位置赋予不同的权重。从价格动量的角度认为序列开始和结束位置的元素更为重要,因此给它们赋予更高的权重,往中间线性递减到最小值(本文设为0.05)。这样,即使两个序列的元素不完全相同,但只要它们在相同或相似的位置上出现,也可以认为这两个序列是相似的。对于加权的位置匹配算法并不考虑使用动态规划算法,本文利用简单的线性扫描逐一匹配。匹配效果如下:
![](//html.hanspub.org/file/30-1141040x46_hanspub.png?20240604165253569)
Figure 3. Short sequence and long sequence matching graph (partial position)
图3. 短序列与长序列匹配图(部分位置)
如图3所示,使用相同颜色对短序列和长序列中相似匹配序列进行标记。通过粗略观察无/少重叠部分发现,匹配序列的走势基本一致,符合收盘价为隐含状态的显性表示的预期。本图部分短序列在展示上存在匹配位置重叠为颜色覆盖属于正常现象,不影响后续策略构造。
3.5. 市场风格双策略模型构建及效果对比
利用模型生成的隐含状态序列和短序列匹配的定位结果,衍生出两个策略思想方向。
3.5.1. 策略一:历史状态匹配策略
对于参考过去一段时间的隐含状态序列,推断股价的动量预测形成交易信号。具体就是近N天(N为仓位变动周期天数)隐含状态序列找历史匹配位置。通过历史时刻股价变化,预测当前变化。设定近N天为300个交易日,训练并编码出长度也为300的隐含状态序列原始串。提取近10个交易日的隐含状态短序列为匹配子串,到原始串中找到距离最小的历史位置并记录。子串相似度值越大大,距离越小,且相似度取值范围为0~10。对于训练数据划分,即把固定长度为300个交易日划分训练数据,随时间往后滚动。每次的训练数据为包括当前日及前299个总共为300个交易日,当前日数据可取收盘前30分钟的收盘价等数据进行模拟,以规避使用未来数据。
策略构造:如图4相同颜色框选部分箭头指示,对比历史时段尾部的收盘价与后一个交易日(即历史时段尾部往后一个交易日)的收盘价,制定交易信号。具体策略参数需要根据实盘交易实际时间作相应调整,这里经过大量实验以及效果对比,选定策略参数见表6。
为了最大化展现模型收益效果,采取买入时全仓,卖出时清仓的交易策略,策略开始前一天全仓买入。尽量去除市场波动的阿尔法收益,凸显策略的贝塔收益。本文主要目的是阐述基于隐马氏模型构建策略的思路以及论证策略的可行性,具体策略调优提高收益率不在本文重点论述范围。对于可卖空标的,通过双向策略更能放大模型效果,本文实验以A股市场数据为主,故不设置做空策略实验。
![](//html.hanspub.org/file/30-1141040x47_hanspub.png?20240604165253569)
Figure 4. Implicit state sequence similar interval segment matching
图4. 隐含状态序列相似区间段匹配
![](Images/Table_Tmp.jpg)
Table 8. Strategy parameters from Gaussian HMM
表8. Gaussian HMM策略参数
本策略参数如表8。表9策略收益效果是经过大量实验进行调优,最终选定收益较好的策略参数和标的进行展示。在策略中导致效果最显著变化的是“调仓周期”,通过比对不同历史调仓周期等参数的表现效果,来确定后续时间段的回测参数。这样仅仅是调整了交易频率,减少决策,但不改变模型整体的胜率,策略收益率和所在时间段市场行情的相关性更大。所以我们更应该追求模型本身的胜率、真正率和假负率等,对策略交易收益可依赖实盘经验和市场政策逐渐调优。对此在下一节做了策略训练的整体重构,模式匹配的思想不变,真正率和假负率有明显的提高。
![](Images/Table_Tmp.jpg)
Table 9. Statistical table of strategy-related indicators
表9. 策略相关指标统计表
3.5.2. 基于递增滑动窗口模型训练的历史状态匹配策略优化方案
如上节,为了提升一部分和决策胜率相关的指标,减少调仓周期的不稳定性,提高策略择时的可操作性。本节提出基于滑动窗口思想的模型训练方案。
优化点一:如图5所示,本节数据划分策略在上节固定窗口长度的基础上进行调整。目的是用更多的市场数据训练模型,更全面地刻画市场隐含状态情况和趋势,同时规避未来数据的使用和上节保持一致,当前日数据可取收盘前30分钟的收盘价等数据进行模拟。
优化点二:设定输出阈值并记录达到阈值的迭代日,输出换仓日及交易信号的键值对数组。在子串匹配中计算相似度时,选取子串长度为11,输出阈值范围为9,根据位置加权相似度算法,意为允许有一个交易日状态不匹配,且忽略全匹配的情况。经大量实验观察隐含序列产出,发现隐含序列状态容易扎堆出现,序列容易有连续重复的相同状态输出。如序列隐含状态相似日数选11或以上,容易匹配到连续重复的相同状态输出,本策略大量实验认为,模型产出连续重复的相同状态输出说明拟合效果不好。选低于10日的情况,历史匹配位置较多,不利于决策。故选10日为相似日数阈值,相似度阈值为9。
![](//html.hanspub.org/file/30-1141040x48_hanspub.png?20240604165253569)
Figure 5. Sliding window data set partition timing
图5. 滑动窗口数据集划分时序
基于上述两个优化点,重训模型并调整策略换仓周期,根据限制阈值后输出的键值对数组,重构策略流程。构建了对不同标的、隐含状态和特征因子组的对照实验,实验效果如下表10:
![](Images/Table_Tmp.jpg)
Table 10. Statistical table of related indicators of optimization strategy
表10. 优化策略相关指标统计表
根据表10进行分析,能看到:(1) 隐含状态数选11时,模型胜率略高于10。(2) 因子选取rsi数据强弱指标、维度统一后的交易量这种价量因子时,模型胜率明显高于原始数据字段开盘价、收盘价、前收价、成交量。(3) 对于指数和个股,模型的表现能力相似,并无刻意选择回测标的,读者可利用给出代码自行验证。
由此可初步分析,隐含状态数的充足有利于对不同情况市场状态的刻画,在特征因子方面。隐马尔可夫模型在训练过程中具有一定的数据加工能力,对于原始因子输入和构造因子相比虽保持较大的信息完整度,但一定程度上影响模型的收敛和效果。对于构造的价量因子,虽然损失了一定的信息完整度,但带来的信息增益有助于模型挖掘市场动量趋势,提升模型胜率。因此特征工程对于模型策略构建来说是十分重要的,好的策略收益需要对特征因子进行更进一步的打磨。根据如上统计表,整理最好策略收益参数表11并给出策略收益图如下:
![](Images/Table_Tmp.jpg)
Table 11. Trategy one optimized parameter table
表11. 策略一优化后的参数表
![](//html.hanspub.org/file/30-1141040x49_hanspub.png?20240604165253569)
Figure 6. Sliding window data set partition timing
图6. 优化策略收益效果图
如图6所示为上证红利指数和比亚迪的收益图,策略开始的时候和基准一样是全仓买入,所以起点一致,开盘天数模调仓周期即为交易日。粗略看图分析可见策略曲线多处为横平,即清仓状态,因此能规避一些大跌,但也有一定概率错过上涨。由于策略本身交易方式为全仓和清仓,所以自带回撤控制,属于保守型策略。对于具体训练周期和调仓周期等策略变量,以及模型变量跟据具体交易标的情况,需要进一步调整。经过大量实验,本策略给出的变量选取具有一定的可参考性。根据统计表分析可知,在具体策略的执行时,比对真正率和假负率(看涨胜率和看跌胜率),动态调整仓位投入。如当真正率显著大于假负率时,买入保持全仓,卖出执行半仓或者根据假负率削弱卖出仓位,以对冲模型误判,提高策略收益。这属于策略简单调优,本文不作重复演示。
3.5.3. 策略二:未来状态观测值预测策略
对于参考前一天的隐含状态,计算后一天并选出概率最大的隐含状态,并通过所预测的后一天隐含状态和模型pdf的均值和协方差矩阵计算在正常股价波动范围内的最大概率预测值。
如图7所示,根据模型训练的产出物:状态转移矩阵和高斯分布pdf,推测未来观测值。具体如下:
(1) 提取最后一个状态,通过状态转移矩阵计算,找到概率最大的转移状态作为下一日的隐含状态
。
(2) 设定波动范围为正负10%,基于前一个交易日的观测值向量,生成100个观测数据样本。计算每个样本在隐含状态为
时观测数据的概率密度,找到对应概率最大的观测值组合。
(3) 提取前后两个交易日观测值向量中的收盘价进行对比,构建交易信号。
![](//html.hanspub.org/file/30-1141040x52_hanspub.png?20240604165253569)
Figure 7. Forecast process of the observed value of the trading day
图7. 交易日观测值的预测流程
由表12可知,隐马氏模型事实存在数值预测能力,并且范围控制在给定的区间正常输出。但在量化策略领域人们普遍认为,相比于准确地预测价格数值,更愿意研究趋势的预测。市场是复杂和动态的,量化模型做不到完全适应市场的变化。此外,数据的质量和模型的准确性也会影响预测结果的有效性,因此通常不会做数值预测相关的研究。但本研究目的为探索HMM的能力,数值预测也是其能力之一。表13是经过一系列的实验做的数据统计,显然模型预测的数值的准确度未达到量化策略可参考的要求。
![](Images/Table_Tmp.jpg)
Table 13. Statistical table of strategy-related indicators
表13. 策略相关指标统计表
3.5.4. 市场风格双策略回测效果总结
通过对比上面两小节的实验数据结果,从收益率胜率等指标来看,策略一的优化版本在对照的隐含状态数和特征因子组中,整体表现较优。其中看涨胜率和看跌胜率等关键收益指标也基本高于为优化前的策略一和推算具体观测值的策略二。结合模型多次实验和分析可知,隐马尔可夫模型对历史数据建模挖掘出的隐含状态在一定时间内是固定的,和实验次数无关。即对数据隐含状态的分类在给定的时间范围内,类别(隐含状态)明确。但对于超出时间范围内的数据,需要重新训练分类找到所属隐含状态,对范围外的数据显然不能使用已有的隐含状态来归类。这也是时间序列方法对股票市场数值状态预测的弱点和通病,即只能预测大致趋势,却无法具体刻画某时刻的趋势状态,更无法准确预测具体数值。故选取优化的策略一继续构建后续的行业轮动模型。
3.6. 行业轮动模型
3.6.1. 模型策略构建
预选4~6个行业指数参与行业轮动,利用上节优化后的策略一对于每个行业指数标的交易信号构建。基准对比为沪深300指数。使用近N(实验数据显示N取11,相似度阈值取9效果更佳)日的短序列在长序列中找到历史匹配位置,构建买入卖出信号。对于指数池中待选指数,每个仓位变动周期统计买入和卖出指数队列。对待卖出的指数队列进行清仓卖出处理,对待买入的指数队列按当前可用资金平均划分后买入,目的是最大化闲散资金以及策略总收益。而不是让不同行业各自回测后,进行无相关性地累计。下表14为策略参数。
![](Images/Table_Tmp.jpg)
Table 14. Parameters for industry rotation model
表14. 行业轮动模型参数
3.6.2. 策略回测效果
收益效果如图8。经过多轮对照实验能发现,由策略一构建的行业轮动策略在回测中对最大回撤有着较好的控制。也符合部分投资者追求行业轮动策略原因之一是中低风险偏好,因此最大回撤也是一个重要的指标之一,在控制风险的前提能够获得高于市场回报的收益即可。本策略中的胜率类指标计算做了特殊处理,分别计算各行业交易次数和胜率,汇总成整体的胜率。见表15。
![](Images/Table_Tmp.jpg)
Table 15. Statistical table of related indicators of strategy
表15. 策略相关指标统计表
4. 总结
本研究首先通过AIC和BIC准则选取合适的隐含状态数以及K-means算法确定Gaussian HMM的初始参数值,随后训练模型以拟合市场数据。在模型构建过程中,本研究考虑了市场因子、价量因子等特征因子,并通过相关性和Rank-IC检验验证了其有效性。对于隐含状态序列的处理,本研究采用了基于位置加权的相似度的距离计算方法,更准确地匹配市场隐含状态。通过生成的交易信号构建新的量化策略。主要工作内容和总结如下:
梳理了隐马尔可夫模型在股票市场的应用情况,针对当前研究现状进一步探索隐马尔可夫模型结合高斯分布在股票市场当中的能力,充分发掘模型在识别市场风格以及市场状态切换的能力,并试验和实践了其在行业轮动中的应用。
构建和训练基于高斯分布的隐马尔可夫模型,从交易数据中解码出市场状态的隐含序列,提出了两种构建交易信号的方法,分别构建历史状态匹配策略和未来状态观测值预测策略,并进行了多轮长期交易回测检验,在排除未来数据的影响下验证了策略的有效性。进一步利用交易信号构建行业轮动策略,验证了策略的可行性。提供了新的模型应用思路。
构建了完整的模型使用链路,包括数据获取方式,因子选取和构造,参数的确定和初始化,模型训练,利用模型参数计算解决HMM中的编码和估计问题,给出了观测值预测的计算思路,提出隐含状态序列的应用方案,构造基于市场趋势识别的量化策略,对模型策略效果建立回测框架和方式。
验证了HMM在中国A股市场中的潜在价值以及Gaussian HMM在识别市场风格及市场状态切换方面具有较高的准确性,能够为投资者提供有效的量化投资策略。
至此,本研究给出了完整科学且专业的隐马氏模型能力探索思路,给出可参考的实验路径,有助于普通投资者和不具备专业编程能力的人士,更好地入门结合高斯分布的隐马氏模型,在量化策略中的应用。后续期望基于模型输出的交易信号,微调交易策略参数,结合市场环境探索出更具可行性的量化策略,以适应市场的最新变化。