如何发现股票异动?
1、通过分析公司基本面去发现(这个需要花很多时间去深入研究,成功率不高) 2、通过数据来寻找(这个相对来说比较客观准确,但是需要一定的数据分析基础) 我目前主要就是通过第二种方法来发现个股的异动。 在实际运用过程中我一般先对沪深两市股价涨幅超过5%的所有个股进行筛选:排除ST股和还未开板的次新股之后,保留10%左右的样本量;然后采用多因素逻辑回归模型(Logistic Regression)来进行回测,根据回测结果将个股分成上涨可能高/中/低三组:
一、数据采集与筛选
在股市数据方面,常用的数据源有wind、同花顺iFinD及大智慧等,本文选取的大智慧金融终端专业版的日频量化数据作为研究对象。 首先,我们需要明确一个事实——即使我们通过多种渠道购买了大量的历史数据,也无法完整地获取过去所有交易日所有的交易信息,更无法将每笔成交信息对应到每一笔委托单上。所以,我们在实际操作中只能采用抽样的方式抽取部分有效样本来做统计分析。一般而言,我们按照一定的时间跨度来抽样,保证抽到的每一组样本能够代表当段时间的交易情况即可。那么究竟应该选多少天呢?这个问题没有固定的答案,需要结合实际情况来决定。如果所关注的股票数量较少且时间跨度较短,我们可以考虑选择短一点的周期来做分析;反之亦然。在实际操作过程中,为了追求数据的可靠性以及减少噪音的影响从而降低模型的复杂度,我在数据处理的时候统一选择了近两年的交易日数据。
另外,除了时间序列之外,我们还需要关注个股的基本面信息。虽然理论上讲个股走势是由供求关系决定,但基本面信息往往会对市场供求产生一定程度的影响。比如最近刚刚上市的寒武纪,其基本面并没有发生明显变化,然而上市首日即遭到爆炒,最高涨幅达694.73%,背后的原因可能就在于市场预期其未来业绩增长空间巨大吧!因此,我们也需要将基本面的相关信息纳入到我们的分析框架中来,尽可能排除因基本面差异带来的干扰。
最后,为了保证模型的准确性,对于个股的涨跌情况也应当剔除异常值,比如暴涨暴跌的情况就不符合我们的分析目的,因此也需要过滤掉。经过以上步骤后剩余的有效样本数约为80万条左右。
二、多因素逻辑回归模型构建 从上面的图表可以看出,个股在某个时间点是否会出现异动存在很大的随机性,不同个股的涨跌趋势也不尽相同,而且有些个股在涨完之后会持续下跌甚至进入跌势区,所以如果我们直接采用线性回归的话将会得到很多毫无意义的预测指标。 而多因素逻辑回归是统计学当中一种用来解决分类问题的算法之一[^1]。相较于其他分类算法(比如决策树, SVM 等)而言它最大的优势在于可以同时控制多个自变量的影响,并且可以直观地看出不同影响程度大小的因素对目标值的影响方向以及大小。
具体建模时我们将涨停或跌停作为一个二分类问题(=1表示涨停,-1表示跌停), 并将每天的收盘价作为自变量X_1,开盘价作为自变量X_2,当日累计换手率\[成交额/(收盘价*成交量)\]作为自变量 \[X_3=成交额/(收盘价*成交量); X_4 =成交金额/(开盘价*成交量)\],上一交易日收盘价作为自变量X_5,流通市值作为自变量X_6, 每股净资产作为自变量X_7,市盈率做为自变量X_8;同时将所属行业和所属概念板块作为虚拟变量放入模型当中。其中由于部分自变量的数值区间过大导致数据分布呈偏态分布,所以在做特征缩放时需要将其归至 [0,1] 之间。
三、回测与结果评估 根据上述模型,我们用剩余的约80万个有效样本数据进行训练并得出最终的结果,如下图所示: 上图给出了四种不同的阈值组合所对应的准确率。从总体来看各阈值的准确率差异并不大,最高的可以达到66%多的准确率,而最低的只有60%出头。考虑到我们最终的目的是希望找到那些上涨概率高的个股,因此我们选择使用准确率最高的阈值0.2192。
四、结果应用 第一步 我们利用筛选后的有效样本数重新构建了上述模型并对该模型进行了测试; 第二步 将该模型的预测结果映射为0-1之间的一个实数,并进一步划分为三个等级:0<y≤0.2(红色区域),0.2<y≤0.8(黄色区域), 0.8<y 第三步 对划分后的三级风险等级区域分别计算出每个等级的风险收益比例,结果如下图: 可视化的结果显示了风险与收益成反比的特性。例如位于第一等级的个股平均收益率高达8.7%,但同时平均风险水平也达到了惊人的15.3%,可见这种高风险投资行为仅适合于极少的投资者。相反处在第三等级的红色区域的个股却表现出了超高的风险承受能力,平均风险仅为1.3%,但其平均收益率也只有可怜的2.1%,可见这类稳健型的选手大多都具备很强的风险承受力……