随机森林预测股价走势的策略复现
由ypyu创建,最终由qxiao 被浏览 661 用户
更新
本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明
新版量化开发IDE(AIStudio):
https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW
新版模版策略:
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
新版数据平台:
https://bigquant.com/data/home
https://bigquant.com/wiki/doc/dai-PLSbc1SbZX
新版表达式算子:
https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS
新版因子平台:
https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5
\
导语
之前分享了一篇用随机森林预测股价走势的论文,本文就是对论文的策略复现。 原文:
《Predicting the direction of stock market prices using random forest》
上篇帖子提到,作者思路是:
数据收集 - 指数平滑处理 - 特征提取 - 随机森林集成学习 - 股票市场预测
本文复现也就是按照这样的思路进行的。
数据收集:m4
首先新建一个可视化空白策略,拖入“共享模块”里的”csv_read“模块,这个模块的目的在于读取收集好的股价走势数据表格(提取码: 7unb),本文策略复现用的是苹果公司(NASDAQ:AAPL) 2010-03-31到2014-12-09的交易日股价走势数据。
指数平滑:m5
接下来一个模块对数据进行指数平滑,去除历史数据中的噪音,展现历史数据的实际规律。指数平滑的$\alpha$值设置为0.9。
特征提取:m10
标签设置 $ target_i = Sign(close_{i+d} - close_{i})$ $d$是预测的时间窗口,本文策略复现里用的是10天。 $Sign$是符号函数。当$target_i$的值为1,代表在$i$这个时刻看,d天后的收盘价比今天的收盘价高,也就是说股票在d天后上涨;反之下跌。 $target$是模型需要预测的目标,在策略中体现为”label“。
分类特征 技术指标是在股票分析里用于判断熊牛的重要的信号,文章中运用六个技术指标作为分类的标准,让随机森林模型去学习这些特征。指标列举如下:
RSI 相对强弱指数 Stochastic Oscillator 随机指标 Williams %R 威廉指标
MACD Price Rate of Change 价格波动率 On Balance Volume 能量潮指标
此模块输出:(1)处理过的数据集 (2)特征列表
随机森林集成学习
分离训练集与测试集:m2
用前三分之二的数据(2010-2013年)做训练集,用剩下的数据做测试集。
随机森林训练:m9
输入m2输出的训练集和m10输出的特征列表,进行随机森林训练。 需要选择算法类型为classifier分类,剩下的属性供使用者调整参数。 本文策略使用了65个决策树。
一般来说树的个数太少,容易欠拟合,树的个数太多,计算量会太大,并且树的个数到一定的数量后,再增大树的个数获得的模型提升会很小,所以一般选择一个适中的数值。
股票市场预测
随机森林预测:m3
输入m9的随机森林模型和m9的测试集,输出预测结果。
随机森林准确度:m11
输出预测结果的准确性指标。
- precision 精确率:在所有预测为1(上涨)的样本中,预测正确的概率。
- recall 召回率:在所有实际为1(上涨)的样本中,预测正确的概率。
- f1:综合反映了Precision和Recall,是两者的在模型中的综合体现。
- accuracy 准确率:在所有样本中,预测正确的样本占总样本的比例
可以看出模型的准确率大概能达到70%,对于上涨样本的预测准确率更高。
策略案例
https://bigquant.com/experimentshare/342ed4a6211f477cbd75e847bd703b8c
\