目录
基于文本挖掘和 SVM 的股票市场择时交易研究
中南财经政法大学
刘晔诚、田鹏飞、林海潮
摘要
近年来,随着计算机计算能力的提高以及人工智能的飞速发展,量化投资开
始在中国金融市场崭露头角。借助于大数据的发展趋势,机器学习逐渐在量化投
资领域发挥出优势。本文主要研究机器学习技术在量化投资领域的应用。
学术研究表明,投资者的情绪能够影响股票市场的未来走势。为合理量化投
资者情绪,本文首先利用 Python 编写网络爬虫程序,在东方财富网“股吧”爬
取了 200 万条标题文本数据,进行分词处理、词频统计后,得到初始关键词库。
之后利用百度指数相关搜索词功能将关键词的个数扩充至 69 个,并通过 Elastic
Net 和主成分分析法构造投资者情绪指数。同时,本文使用上证指数 2011 年 3
月 24 日至 2017 年 5 月 24 日共 1500 个交易日的数据,经过特征工程处理,建立
了基于支持向量机(SVM)的股票市场择时交易模型,使用 Sliding Window 法进行
最优参数的学习,从而对股市的未来趋势进行预测,得到未来每个交易日的操作
信号。最后,将基于文本挖掘所构建的投资者情绪指数作为数据的一个特征代入
SVM 中,探讨其是否能提升模型的预测性能。
本文经过研究主要得到两个结论:一是经过特征工程对原始数据进行处理后,
基于 SVM 所建立的股票市场择时交易模型对于上涨市、下跌市、震荡市均有较高
的预测精度,且在震荡市捕捉到了更多的交易信息,相比买入并持有策略有更高
的年化收益率。二是基于文本挖掘所构建的投资者情绪指数能在一定条件下提升
模型对股票市场未来趋势的预测性能。
关键词:文本挖掘;投资者情绪指数;SVM;择时交易
I
Abstract
In recent years, with the rapid development of computer computing power and
artificial intelligence, quantitative investment began to emerge in China's financial
markets. By means of the trend of Big Data, machine learning gradually play an
advantage in the field of quantitative investment. The application of machine learning
technology in quantitative investment field is mainly studied in this paper.
Academic research shows that sentiment of investor can affect the future trend of the
stock market. In order to quantify the investor's mood reasonably, the Python software
is used to write the web crawler program firstly, obtaining 2 million title text data in
the Oriental wealth net “stock”. After the word processing and the statistic of the word
frequency, the initial key word list is formed. Then related search word of the
Baidu-index is used to expand the number of keywords to 69, and the investor
sentiment index is computed through Elastic Net and principal component analysis.
Meanwhile, using a total data of 1500 trading days of the Shanghai Composite Index
from March 24, 2011 to May 24, 2017, the stock market timing trading model is built
based on support vector machine (SVM), after the feature engineering processing.
Then the optimal parameter is learnt by Sliding Window method, so as to predict the
trend of the stock market and the operating signal of trading day in the future. Finally,
the investor sentiment index based on text mining is substituted into SVM as a feature
of the data, discussing if it can improve the predicting performance of the model.
Two conclusions are draw in this paper: First, after the processing of original data by
the feature engineering, the stock market timing trading model based on SVM both
has high prediction accuracy for the rising market, the falling market and the volatile
market. Specially, it captures more of the trading information in volatile market.
Compared to the “buy and hold” strategy, it has a higher annualized rate of return.
Second, the investor sentiment index based on text mining can improve the predicting
performance of the model.
Key words: Text Mining; Investor Sentiment Index; SVM; Timing Trade
一、问题描述
一、 问题描述
(一) 研究背景
近年来,互联网和人工智能技术飞速发展,推动传统金融行业的大踏步前进,
尤其是量化投资领域。虽然目前中国市场的量化交易占总交易量的比重微乎其微,
但是量化投资因其内在交易机制的客观理性以及稳定收益的可实现性,将成为金
融投资领域未来的主流发展方向。
借助于计算机硬件的发展以及计算能力的显著提高,加之创新性的新算法对
计算速度的进一步提升,机器学习的威力开始得以发挥,国内一些私募基金开始
将机器学习融入到自己的交易策略中。机器学习在量化投资领域有着独特的优势。
对大多数量化交易而言,主要是借助于计算机来构建大型的模型,这些模型在某
种意义上是静态的,当市场发生变化,效果或许会削弱,需要人工调整去适应市
场的变化。机器学习算法则能够高效分析大量的数据和特征,并且在学习过程中
自我改进以适应市场变化这部分因素。不会被情绪等主观因素干扰是机器学习的
另一个优势。人的情绪会对预测的模式和判断产生某种影响,不同情绪的影响叠
加,可能会产生截然不同的结果,机器可以完美地克服这一问题。另一方面,伴
随着“大数据”的兴起,尤其是金融领域的数据优势,为“数据为王”的机器学
习技术提供了最佳应用场景。
本文顺应金融投资领域主流发展趋势,结合大数据背景下的文本挖掘技术,
探讨机器学习在股票市场择时交易策略设计方面的可行性和有效性。
(二) 文献综述
本文主要借鉴了如下几篇国内外学者关于文本挖掘和机器学习用于量化投
资研究的文献:
Kalev P S. et al(2004)应用朴素贝叶斯、KNN 和反向神经网络等机器学习
方法,在给定金融词典定义的情况下,根据金融市场与关键词之间的关系生成概
率规则,对于规则技术关于股票的价格走势影响的有效性进行了研究,研究结果
证实了有效性并展示了其预测的准确性。Antweiler W.et al(2004)采用 SVM 算
法分析了股票价格和华尔街日报流行专栏内容之间的关系,研究发现媒体对于股
价的悲观态度会显著导致股价下跌,并且悲观程度会影响交易量的大小。Li
F.(2010)通过对雅虎财经和 Raging Bull 网站上关于 45 家公司 150 万条消息的
1
挖掘,分析其对公司道琼斯指数的影响,发现股市评论可以对股票市场的价格波
动进行预测,且交易量增加很大程度上和消息的分歧程度相关。张世军等(2013)
通过对网络的评论进行爬取、分类获得网络舆情,结合股票的开盘、收盘价格构
建起了基于网络舆情的 SVM 回归模型,并对股票价格的走势进行了预测。Junqué
de Fortuny E.et al(2014)根据 SVM 算法对文本进行分类,并利用 Python 对评
论进行了标注,选用乖离率、心理线、威廉指标和强弱指标等技术指标验证了非
理性指标预测股票价格走势的有效性。
二、 研究思路
特征
工程
Label
Sliding Window 法
SVM
回测
是
否
提
升
模
型
性
能
中文分词
词频统计
百度指数
Elastic Net
PCA
图 1:研究思路图
三、 数据来源与指标选择
(三) 数据来源
1. 用于投资者情绪指数构建所需数据来源
本文在投资者情绪指数的构建过程中所涉及的数据如表 1 所示:
一、问题描述
表 1:数据来源表
数据内容
数据来源
数据量
数据用途
关于股票的挖掘文本
关键词每日搜索量
东方财富网“股吧” 200 万 关键词库的构建
108261 情绪指数的构建
百度指数
2. 用于股票市场择时模型构建所需基础数据来源
在基于 SVM 的股票市场择时交易模型的建立过程中,我们使用的是 python
财经数据接口包 TuShare 提供的腾讯财经接口。TuShare 是一个免费、开源的
python 财经数据接口包,主要实现对股票等金融数据从数据采集、清洗加工到
数据存储的过程,能够为金融分析人员提供快速、整洁和多样的便于分析的数据。
由于上证指数反映了 A 股市场价格的总体变动趋势,本文借助于该数据包得到了
上证指数自 2011 年 1 月 1 日至 2017 年 6 月 9 日期间的开盘价、收盘价、最高价、
最低价、成交量等基础数据。
(四) 软件说明
本文在数据处理和建模过程中用到的软件如表 2:
表 2:软件一览表
软件名称
软件用途
爬虫程序
股票相关文本及百度指数的挖掘
Python
Scikit-learn
Jieba、wordcloud
SPSS
基于 Elastic Net 的重要关键词选取、
基于 SVM 的股票市场择时模型的建立及
相关训练特征的创建
文本分词、过滤、词频统计、词云
基于 PCA 的投资者情绪指数的构建
(五) 百度指数
百度指数是以百度海量网民行为数据为基础的数据分享平台,是当前互联网
乃至整个数据时代最重要的统计分析平台之一,自发布之日便成为众多企业营销
决策的重要依据。借助于百度指数,可以研究关键词搜索趋势、洞察网民需求变
化、监测媒体舆情趋势、定位数字消费者特征;还可以从行业的角度,分析市场
特点。
依照本文的研究目的,我们用到了百度指数的两大功能:(1)相关词分类中
的搜索指数:反映中心词所有相关词中搜索指数热门的关键词,即与网民所搜索
的某一关键词相关的其他关键词。我们选取与文本挖掘所得关键词相关的搜索热
度排名前十的词语,剔除掉与股票市场无关的词语,对初始关键词库进行扩充。
(2)指数趋势:包含 PC 搜索指数和移动搜索指数,由于 PC 搜索指数可从 2006
年 6 月 1 日查询,移动搜索指数只能从 2011 年 1 月 1 日开始查询,而实际使用
的两者相加所对应的整体搜索指数,所以本文使用各关键词 2011 年 1 月 1 日至
2017 年 6 月 20 日的整体搜索指数。
四、 基于 Elastic Net 和 PCA 的投资者情绪指数的构建
(一) 基于词频的初始候选关键词库的构造
本文首先利用 Python 软件的 Requests 库、Re 库、bs4 库等编写“爬虫”
程序,从东方财富“股吧”论坛爬取了 200 万条论坛标题的文本数据。选择东方
财富“股吧”文本数据作为候选关键词的数据来源,一方面是考虑到东方财富网
是中国乃至全球访问量最大、影响力最强的财经门户网站,在中国财经网站中,
其多项统计数据位居第一;其次是因为东方财富“股吧”论坛的历史数据可追溯
事件较长,数据量大,易于获取,对于关键词的提取意义重大。
得到文本数据之后,利用 Python 的 Jieba 中文分词库进行分词以及词频统
计,对于无实际意义的词进行滤除,得到词频统计表(限于篇幅,仅展示词频排
在前 20 的词语)如表 3 所示:
表 3:词频统计表(前 20)
词语
公司
市场
股票
公告
主力
组合
股份
中国
股价
投资
词频
305732
269402
264657
242398
239299
219902
218061
211454
200235
199192
词语
散户
股东
涨停
资金
股市
大盘
反弹
下跌
实盘
指数
词频
178921
178021
177729
159823
143245
142098
132903
129876
127987
119982
更清晰明了地展示词频统计的结果,利用 python 的 wordcloud 库可构建词
频统计的词云图,如图 2 所示:
三、数据来源与指标选择
图 2:东方财富“股吧”标题文本词云图
(二) 利用百度指数进行候选关键词库的扩充
扩充后的词库可由表 4(共计 69 个词)进行描述
表 4:扩充后词库
公司 市场 股票 公告 主力 组合 股份 中国 股价 投资 散户 股东 涨停
资金 股市 大盘 反弹 下跌 实盘 指数 行情 走势 基金 买入 利好 黄金
石油 停牌 业绩 希望 减持 银行 科技 机会 新股 跌停 上市 操作 机构
证券 上涨 收购 筹码 重组 出货 分红 价值 板块 新三板 融资 回调
原油 融资 风险 成本 解套 时间 技术 趋势 重大 清仓 持股 庄家 收盘
收盘 拉升 尾盘 龙头股 模拟
(三) 爬取关键词库词语的百度指数
百度指数中整体指数对关键词的整体搜索量进行了比较好的描述,数据量大
且较稳定,直接关系到关键词筛选以及情绪指数的构建。但从网页爬百度指数的
每日搜索量数据并不简单,网站对于其原始数据进行了加密,无法直接取得。因
此本文采用图像识别的间接爬取方式:利用 python 编写程序控制鼠标在浏览器
上的移动,并即时下载其生成的图片并识别其中数字,最终获取每日数据。考虑
到爬取速度的限制,本文采用了多线编程爬取技术。
(四) 基于 Elastic Net 的重要关键词的选取
为了保证我们所构建的投资者情绪指数与股票市场的价格波动高度相关,需
要从候选关键词库中挑选出重要的关键词,我们初步以上证指数的收盘价为响应
变量,对 69 个关键词对应的按日搜索量进行多元线性回归,发现部分关键词之
间存在多重共线性的问题。若使用常用的变量选择方法 LASSO,将不会得到正确
的结果。本文使用 Elastic Net 方法,有效地克服了多重共线性的问题。Elastic
Net 是一种将 LASSO 和 Ridge 回归的惩罚项线性组合在一起的正则化形式,其目
标函数为如下形式:
min
y X
1
2
2
1
2
2
2
2
对于具有强相关变量组的数据,其可以有效地将强相关变量组全部选入或全
部剔除模型。
为便于最优参数的选取,上述目标函数可改写为下式:
min
y X
1
2
2
1
2
2
2
其中
2
,
1
1
1
2
。越大,对参数的惩罚力度越大,对应越多
的参数趋于 0。
0,1
,且 1 时,Elastic Net 退化为 LASSO,
0 时,退
化为 Ridge 回归。
利用 Python 软件将上证指数收盘价作为响应变量,将 69 个关键词的百度指
数按日搜索量作为预测变量,运用 Elastic Net 方法。使用 BIC 作为度量标准,
挑选出最优参数为: 2500
, 0.2 。此时筛选出的重要关键词为 45 个,剔
除的 24 个关键词如表 5 所示。
表 5:剔除的关键词
股东 利好 买入 股价 尾盘 机构 行情 收购 投资 回调 持股 反弹
涨停 分红 公司 重组 走势 筹码 出货 上涨 实盘 操作 解套 收盘
(五) 基于 PCA 的投资者情绪指数的构建
主成分分析(PCA)是通过正交变换将一系列可能相关的变量转化为彼此线性