1. 引言
金融业是国家经济发展的重要行业之一,股票市场是我国金融业的重要组成部分。自从股票市场诞生以来,产生了很多理论研究股票市场的相应规律,例如量价关系理论、均线理论、江恩理论等,这些理论在对于股市的研究中发挥了较大的作用。上世纪80年代以上,统计和数据挖掘理论迅猛发展,2010年以来,以机器学习、深度学习为代表的数据分析技术的发展也步入了快车道,各种模型和算法都在不断地被应用到股票的走势预测和影响因素分析等方面。
从股票操作的一般规律来说,随着股票价格的下跌,股票的投资价值不断提高,如果股票下跌一段时间后,成交量开始放大,这表明有可能有资金在相对底部买入,后续该股票有上涨的可能。
本文用技术手段抓取中国A股中下跌一定幅度并且底部放量的股票,并且定义其底部放量后两个交易日的K线的基本形态和大盘的涨跌情况,并且抓取放量后n个交易日的最高收益为判断标准,采用随机森林模型判断底部放量后的股票的各种K线形态、大盘指数等对于后续盈利情况的影响。本文的研究是大数据以及决策树和随机森林理论的验证、补充和拓展。
2. 文献综述
采用随机森林模型的金融方面的论文并不是很多,该模型在金融方面的主要应用有预测、分类以及影响因素分析等几个方面。
在业务预测方面,刘微、罗林开、王华珍(2008)首先通过对基金重仓股的财务指标和市场指标的分析建立一套基金重仓股指标体系,并利用随机森林模型建立基金重仓股的预测模型,最后通过实验验证了方法的有效性[1]。方匡南、朱建平、谢邦昌(2010)利用2006年12月至2008年10月我国股市大涨大跌期来检验交易策略引入一种新的非参数随机森林方法预测我国基金超额收益率方向,并和自回归移动平均、随机游走、支持向量机等方法进行比较,发现随机森林方法在收益率方向预测上有很好的效果,并在一定程度上证明了我国金融市场的可预测性[2]。王淑燕、曹正凤、陈铭芷(2016)通过分析国内外量化选股模型采用的指标体系,使用指标相关性分析方法,提出了八因子选股模型指标体系,选用了2013年3月200只股票的样本数据,使用随机森林算法实现了对2013 年4月股票涨跌情况较高精确度的预测[3]。林娜娜、秦江涛(2018)针对传统预测模型易陷入过拟合、缺失数据敏感、计算量大等不足,利用随机森林算法的双重随机性、处理数据集优异等特点,对A股股票涨跌预测进行研究。通过不同指标体系的对比,验证实验过程的正确性。并对比不同建模方法的实证预测结果,表明随机森林模型比传统机器学习方法二元logistic回归在性能上更优越,具备较高的预测准确度[4]。周亮(2021)利用23个常见因子建立随机森林模型,对中证500指数成分股收益率进行预测并构造投资组合,发现随机森林模型能够对个股的相对收益率进行较好的拟合和预测[5]。
在业务分类方面,曹正凤、纪宏、谢邦昌(2014)选用了2012年1月至2013年2月间360多支股票的样本数据,使用随机森林算法实现了较高正确率的股票分类,并通过分析优选后的股票在行业平均收益等方面的实际表现,验证了该分类选股模型[6]。
在影响因素分析方面,李靖宇、郭湘媛等(2024)基于2012~2022年46家中国上市金融机构的实证数据采用随机森林模型进行分析,所构建的网络能够清晰识别不同因素对风险关联的直接或间接影响作用,并且揭示了因素的影响路径,从而提供更为系统全面的影响关系刻画结果[7]。
综上所述,前人的文献主要集中在对于股票财务指标对股票收益率的影响的分析上,对于股票实际操盘中的K线形态、量价关系、大盘涨跌等对于个股收益率的影响很少触及,本文主要考虑在一段时间内下跌一定幅度的股票在底部放量后特定的K线形态之后的收益率的分析,有一定的创新性,对股票市场操盘有一定的参考价值。
3. 研究设计
3.1. 总体思路
本文立足于中国A股的日线数据,抓取在一段时间之内下跌一定幅度的股票,并且在相对底部该股票的成交量有所放大,并且观察2个交易日左右,并以第二个交易日的收盘价为计算标准,测算后续数个交易日的收益,如图1所示,并收集该股票K线形态中的若干特征,进行相应的分析,以找出满足一定的交易收益的股票的影响因素,最后给出相应的研究结论和股票操作建议。
Figure 1. Schematic diagram of profit after stock price decline with increased trading volume
图1. 股票下跌后放量后的收益测算示意图
如图1所示,股票价格在相对高的位置下跌一定幅度,例如下跌20%后进入股价的相对底部,这时如果底部放量,这表明有买家认为该股票的价格已经比较低,有一定的投资价值,于是开始买进并导致成交量放大,底部放量是股票后续价格走势趋好的重要标志之一,本文就是研究股票下跌一个较大幅度后底部放量后续的价格走势。
为了更方便地理解本文研究的股票形态,见图2,图2的上方是股票K线图,下方是成交量图,股票价格从近期高点32.3元下跌一定幅度,在图2中红圈所在的位置成交量开始放大,这说明可能有资金认为该股票价格已经有一定的吸引力从而买入了该股票,随后该股票进入了一段时间的上升期。
3.2. 数据选取与处理
3.2.1. 基础数据选取
本文选取中国A股全量股票的从股票上市时间起到2024年12月20号的所有日线数据作为研究对象,从全量数据中根据以下的条件进行股票筛选。
Figure 2. Performance trend after bottom volume expansion in A-share stocks following a decline
图2. A股中的股票下跌后底部放量后的走势图
(1) 相对于近60个交易日之内的价格高点,股票价格下跌了10%以上;
(2) 当日涨幅超过4%,当日量比超过1.4;
(3) 该交易日之后的两个交易日的日线K线均为小实体;
通过以上三个条件的筛选,从股票上市时间到2024年12月20日,共获得数据满足以上三个条件的日线数据23,598条。
以下是关于筛选日线数据所涉及的一些指标的解释:
量比是股票形态判断中的一个重要概念,量比通常是某股票当天的成交量与前五个交易日的成交量的平均值的比值,量比的计算公式如下:
(公式1)
公式1中a0表示当日的成交量,a-1表示前一个交易日的成交量,a-2表示前两个交易日的成交量。
量比是观察股票形态的重要指标,如果量比较小,例如<1,则表示股票的成交量比较小,股票受到的关注比较小,用通俗的话讲,就是“该股票无人问津”,如果量比比较大,例如>5,这表明股票的成交量比较大,按照股票“有买必有卖”的原则,股票成交量大则说明买卖双方分歧比较大,说明股票后续有可能会下跌。
“实体”也是股票形态中非常重要的指标形态,股票的K线图由四个价格组成:开盘价、最高价、最低价、收盘价,见图3。
在图3中,K线图中的实体是股票收盘价和开盘价的差值的绝对值,如果收盘价高于开盘价,则K线被称为阳线,如果收盘价低于开盘价,则K线被称为阴线。K线的实体比例的计算公式:
(公式2)
公式2中的abs表示绝对值函数。
K线实体比例这一指标如果过小,例如<0.2,这表明股价多空方面力量比较平衡,价格在一个比较小的范围内波动,K线实体比例这一指标如果比较大,例如>0.5,则表明股价买卖双方力量差距比较大,后期股票价格波动的概率比较高。
Figure 3. Illustration of stock open, high, low, and close prices
图3. 股票中开盘价、最高价、最低价、收盘价示意图
在数据选取中,选择了底部放量后两个交易日均是小实体,并且以第二个小实体的收盘价作为买入价,来衡量后续多个交易日的最高收益(为叙述方便,下文简称最高收益)。见图4。
Figure 4. Maximum return analysis after two small-body candlesticks following a high-volume day
图4. 放量日之后两根小实体K线后的最高收益分析
在图4中,可以看到8根K线图,这对应着8个交易日的K线形态,第1根K线是底部放量日,第2和第3根K线是两根小实体K线,第3根K线的收盘价作为买入价,第4~8根K线的最高价记录着第3根K线的收盘价作为买入价之后的5个交易日之内的最高收益。
以上仅仅是股票量价关系和K线形态方面的一些指标,考虑到后续股价的波动趋势,还需要考虑其他一些因素。
3.2.2. 指标的补充
从股价预测的视角看,对股价的影响因素很多,包括:
(1) 大盘指数
覆巢之下无完卵,大盘指数对于个股往往起到决定性的作用,对于大部分股票而言,大盘上涨,股价都会不同程度地上升,反之大盘下跌,股价会不同程度地下跌。
描述大盘涨跌的指数品种很多,最常用的有上证指数、深成指等,考虑到大盘指数通常是考虑一定数量的成分股计算而成,其实可以通过拉抬大市值股票从而比较轻易地拉抬大盘指数,因此近年来比较倾向于采用A股中上涨的股票的个数在总体股票个数中的占比来描述大盘指数,例如5000只股票中有4000只上涨,则大盘盈利指数为4000/5000 = 0.8。
(2) 板块因素
A股市场上有很多板块,实际上任何一只股票都处在一定的板块中,例如人工智能板块中包含了A股中和人工智能产业链相关的多只股票。在股票市场中有一个著名的“板块联动”现象,即同一个板块中的股票往往出现同涨同跌的情况,即使一个板块中的股票在经营业绩上差别很大,但是一个板块如果最近有利好消息,往往该板块中的大部分股票会上涨,反之则该板块中的大部分股票会下跌。
(3) 个股因素
个股也包含一些影响股价的因素,例如个股中的一些利好或者利空的因素,个股的财务数据对股票的波动的影响也比较显著。
(4) K线形态
如上文提及,个股的量价关系以及均线系统等对于个股的影响往往也比较大,例如我们经常提及的“天价天量、地价地量”,也就是说个股的成交量放大并且股价处于高位时,往往股价有下跌的可能,如果个股的成交量缩小并且股价处于低位时,股价有上涨的可能。
在均线系统中,使用频率较高的是5日均线、10日均线、20日均线等,均线指的是个股股价的近n日的平均值,例如5日均线就是股价的近5天的平均值。我们经常使用均线系统来判断股价的强弱,例如如果股价在5日均线以上,则认为股价在短期内比较强势,如果股价在5日均线以下,则认为股价在短期内比较弱势。与此类似,20日均线用来反映股价在中期内的强弱,股价在20日均线上/下反映股价在中期的强弱。
在本文的研究数据中,我们收集了大盘指数,大盘指数数据中包括了上证指数以及股票盈利个数占比,即当天股票价格上涨的个数除以股票总数,同时我们收集了股价和5日均线和10日均线之间的关系,即股价是否在5日均线和10日均线之上。至于板块数据和个股的上市公司财务数据,由于时间精力和篇幅的限制,本文没有收集,留待后续研究。
3.3. 指标转换
我们计算的指标和关心的目标变量都是以连续值的方式出现的,为了模型运行便利,我们需要将这些连续数据离散化,同时也将自变量和因变量用字母方式命名,见表1。
Table 1. Definition of feature variables
表1. 特征变量定义
指标类型 |
指标细分 |
指标小类 |
指标意义 |
日期 个股形态 |
date diefu |
|
底部放量日的日期 |
1 |
近期跌幅超过30% |
2 |
近期跌幅在20%~30% |
3 |
近期跌幅在10%~20% |
|
liangbi |
1 |
量比 < 2 |
2 |
量比在2和3之间 |
3 |
量比在3和4之间 |
4 |
量比在4和5之间 |
5 |
量比 > 5 |
|
1(2)_day_zdf |
1 |
股票跌幅超过3% |
2 |
股票跌幅在0~3% |
3 |
股票涨幅在0~3% |
4 |
股票涨幅超过3% |
|
1(2)_day_st |
1 |
实体比例 < 3% |
2 |
实体比例在3%~5% |
3 |
实体比例 > 5% |
above_5_ave |
1 |
股价在5日均线以上 |
0 |
股价在5日均线以下 |
above_10_ave |
1 |
股价在10日均线以上 |
0 |
股价在10日均线以下 |
大盘指标 |
dp_1(2)_day_zdf |
1 |
大盘跌幅超过3% |
2 |
大盘跌幅在2%~3% |
3 |
大盘跌幅在1%~2% |
4 |
大盘跌幅小于1% |
5 |
大盘涨幅小于1% |
6 |
大盘涨幅在1%~2% |
7 |
大盘涨幅在2%~3% |
8 |
大盘涨幅超过3% |
|
dp_1(2)_day_benefit_index |
1 |
股价上涨 < 0.3 |
2 |
股价上涨在0.3~0.5 |
3 |
股价上涨在0.5~0.7 |
4 |
股价上涨 > 0.7 |
模型的因变量以股票放量日算起的第二个小实体收盘价起算的5个交易日之内的最高收益,如果收益超过2%,则记为1,如果收益不到2%,则记为0。
有读者可能认为2%的收益甚微,实际上在股票市场中,交易的收益达到2%并不容易,考虑到交易手续费在千分之二左右,实际上2%的收益几乎就是交易纯收益,如果能维持比较高的交易胜率,2%的单次交易纯收益是相当可观的。
3.4. 模型构建
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林既可以用于处理分类和回归问题,也适用于降维问题,其对异常值与噪音也有很好的容忍,相较于决策树有着更好的预测和分类性能。
考虑到要分析的数据是12个自变量对1个因变量,传统意义上的回归、方差分析等已经不再适用,单纯的决策树也解决不了较多的自变量对1个因变量的问题,作为由多个决策树构成的随机森林成为针对多自变量对1个因变量的建模的比较合适的模型。
本文首先考虑全样本情况下12个自变量对1个因变量的随机森林分析,考虑自变量对于因变量的权重的排序。
4. 实验与结果分析
4.1. 全样本随机森林输出
在Python中采用随机森林模型对数据进行相关分析,决策树的数量设为100,分析结果图示如图5。
Figure 5. Random forest analysis results on full-sample data
图5. 全样本数据随机森林分析结果图示
从图5可以看出,根据随机森林中的feature importance指标,量比(lb)分值为0.15左右,在所有自变量中排名第一,这说明量比指标对于股票获得2%以上的收益的贡献是最大的,紧随其后的是大盘第二个交易日的涨跌幅(dp_2_day_zdf)、大盘第一个交易日的涨跌幅(dp_1_day_zdf)、大盘第二个交易日的盈利指数(dp_2_day_benefit_index)、大盘第一个交易日的盈利指数(dp_1_day_benefit_index)、个股第二天的涨跌幅(2_day_zdf)、个股第一天的涨跌幅(1_day_zdf)等指标。
以上指标feature importance的排序如表2。
Table 2. Feature importance rankings from full dataset analysis
表2. 全量数据分析的feature importance值排名
lb |
dp_2_day_zdf |
1_day_
zdf |
dp_1_day_zdf |
2_day_
zdf |
dp_1_day_benefit_
index |
dp_2_day_benefit_
index |
2_day_st |
diefu |
1_day_st |
above_10_ave |
above_5
_ave |
0.15 |
0.11 |
0.10 |
0.10 |
0.10 |
0.10 |
0.10 |
0.08 |
0.06 |
0.06 |
0.03 |
0.01 |
4.2. 分时间段的随机森林输出分析
中国A股“牛短熊长”,即行情好的牛市的时间比较短,行情差的熊市的时间比较长,股市大盘的牛熊对于个股的影响很大,在牛市的时候,大部分个股即使自身业绩一般,往往也能有较大的上涨空间,反之在熊市的时候,大部分个股的表现都比较差。
考虑到本研究数据涉及的时间段是从2005-3-15到2024-12-4,我们将2005~2024年的时间段按照牛熊分为以下多个阶段.
Table 3. Bull and bear market classifications in China’s A-shares (2005~2024)
表3. 中国A股从2005到2024年的牛熊判断
时间段 |
牛市/熊市 |
2005~2007 |
牛 |
2008 |
熊 |
2009 |
牛 |
2010~2014年6月 |
熊市 |
2014年7月~2015年6月 |
牛 |
2015年6月~2018年 |
熊 |
2019~2021 |
牛 |
2022~2024 |
熊 |
从表3中可以看出,2025~2007年,A股大涨,因此定义为牛市,随后的2008年A股大跌,因此2008年定义为熊市,下同,不再赘述。
按照表3中时间段将研究数据分成若干个部分,并且分别进行随机森林分析,见表4。
Table 4. Random forest analysis of A-share returns across bull and bear markets in China
表4. 中国A股分牛市熊市的A股收益率的随机森林分析
年份 |
diefu |
lb |
dp_1_
day_
zdf |
dp_1_
day_
benefit_
index |
1_day_
zdf |
1_day_
st |
dp_2_
day_zdf |
dp_2_
day_
benefit_
index |
2_day_
zdf |
2_day_
st |
above_
5_ave |
above_
10_ave |
2005~2007 |
0.12 |
0.10 |
0.18 |
0.00 |
0.10 |
0.05 |
0.19 |
0.00 |
0.13 |
0.09 |
0.01 |
0.04 |
2008 |
0.18 |
0.10 |
0.14 |
0.00 |
0.15 |
0.07 |
0.13 |
0.00 |
0.10 |
0.04 |
0.01 |
0.10 |
2009 |
0.07 |
0.02 |
0.26 |
0.00 |
0.06 |
0.07 |
0.10 |
0.00 |
0.03 |
0.00 |
0.30 |
0.08 |
2010~2014 |
0.13 |
0.17 |
0.20 |
0.00 |
0.12 |
0.06 |
0.10 |
0.00 |
0.13 |
0.01 |
0.05 |
0.03 |
2015~2017 |
0.10 |
0.10 |
0.21 |
0.00 |
0.13 |
0.06 |
0.14 |
0.00 |
0.17 |
0.05 |
0.02 |
0.03 |
2018 |
0.13 |
0.16 |
0.16 |
0.00 |
0.16 |
0.07 |
0.09 |
0.00 |
0.08 |
0.06 |
0.02 |
0.07 |
2019~2021 |
0.10 |
0.13 |
0.11 |
0.05 |
0.13 |
0.07 |
0.15 |
0.04 |
0.10 |
0.05 |
0.03 |
0.04 |
2022~2024 |
0.07 |
0.15 |
0.10 |
0.10 |
0.10 |
0.06 |
0.10 |
0.09 |
0.10 |
0.08 |
0.01 |
0.03 |
平均数 |
0.11 |
0.11 |
0.17 |
0.02 |
0.12 |
0.06 |
0.12 |
0.02 |
0.11 |
0.05 |
0.05 |
0.05 |
中位数 |
0.11 |
0.11 |
0.17 |
0.00 |
0.12 |
0.06 |
0.12 |
0.00 |
0.10 |
0.05 |
0.02 |
0.04 |
从表4可以看出无论从平均数还是中位数看,跌幅(diefu)、量比(lb)、放量后第一天和第二天的大盘涨跌幅(dp_1_day_zdf和dp_2_day_zdf)、放量后第一天和第二天的个股的涨跌幅(1_day_zdf和2_day_zdf)对于放量后以第二个交易日收盘价买进的连续5个交易日中的最高收益的影响较大,而其他因素的影响则较小。
4.3. 分时间段的随机森林输出分析优化
剪枝是决策树、随机森林等技术处理的常用技术,其主要目的是通过削减决策树或者随机森林的枝干,达到简化分析过程、凸显分析效果的目的。根据3.2的分析结果,我们将feature importance中较小的影响因素删除,只保留feature importance平均值在0.1以上的影响指标,再重新进行随机森林分析,得到结果如表5。
Table 5. Results of pruned random forest analysis
表5. 剪枝后的随机森林分析结果
dp_2_day_zdf |
dp_1_day_zdf |
lb |
1_day_zdf |
2_day_zdf |
diefu |
0.25 |
0.21 |
0.20 |
0.13 |
0.13 |
0.08 |
从表5可以看到,大盘第二天的涨跌幅对于以第二天收盘价买入的连续五个交易日的最高收益的影响最大,其次是大盘第一天的涨跌幅以及量比。
从股票操作的实际经验上来看,表5的分析结论也有较高的准确度,如果放量之后的第一天和第二天的涨跌幅较大,而放量之后的两个交易日能保持小K线的实体形态,这表明主力资金可能对个股的把控程度比较高,后续该股票有较好表现的可能较大,股票成交量在股票交易中的重要性自不待言,量比自然对股票后续表现的影响较大。
5. 结论与研究拓展
本文通过对中国A股日线级别数据下跌一定幅度后股票低位放量后的最高收益的影响因素进行分析,采用A股个股的K线形态数据、成交量数据、均线数据以及大盘指数涨跌数据作为自变量,股票底部放量之后的连续两个小K线实体中的第二个交易日的收盘价作为买入价,以此买入价计算的后续连续5个交易日的最高收益作为因变量,构建了一个12个自变量对1个因变量的数据矩阵,采用随机森林模型分析诸多自变量对于因变量的影响,按照对于后续最高收益的影响权重,得到结论如下:
(1) 放量日之后大盘第二天和第一天的涨跌幅对于最高收益的影响最大,这表明在大盘波动较剧烈时,个股的实体小K线表示主力资金的控盘能力较强,因此后续的收益较好;
(2) 放量日当天的量比对于最高收益的影响也比较显著,这有效地证明了量价关系在证券分析中的重要性;
(3) 放量日之后个股第一天和第二天的涨跌幅对于最高收益的影响也比较显著,在大盘波动的情况下个股涨跌幅越小,同样也表明主力资金的控盘能力较强,从而预示着后续的收益也较好;
(4) 个股的前期跌幅对于后续的最高收益的影响也比较显著,在股市里面机会是跌出来的,往往下跌得越多,跌幅对于后续最高收益的影响也在意料之中,不过在随机森林的分析结果中,跌幅这一因素的贡献并不是最靠前的因素。
本文的研究拓展在于如下几个方向:
(1) 本来在运用python做随机森林时,选择固定的决策树个数进行分析,后续研究可以考虑决策树数量可变、树的最大深度可变等方式进行研究。
(2) 本文只考虑了日期因素对于随机森林结果的影响,后续可以考虑股票板块对于随机森林的影响。
(3) 在自变量方面,可以考虑更加深层次的剪枝对于随机森林结果的影响。