AI量化知识树

随机森林预测股价走势的策略复现

由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

\

评论
  • 计算指标都计算不清楚 用了未来函数 假的一批
  • 指标算的错了,列表长度都不一样直接join到df中
{link}