R语言随机森林: 多元时间序列构造股票市场收益预测模型|预测模型
Posted R语言数据分析与实践
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言随机森林: 多元时间序列构造股票市场收益预测模型|预测模型相关的知识,希望对你有一定的参考价值。
随机森林也可以用于估计预测任务中变量的重要性. 本篇文章的目的是预测S&P 500指数在未来几天的市场变化趋势, 试图预测未来金融市场行为背后的主要假设是通过观察市场过去的行为可以对未来做出预测. 如果这个预测在未来被验证是正确的,那么机遇该预测下达的交易指令将是获利的, 据此可以及时进行交易以从中获利.
本文章时间采用ISO 8601格式标准.
预测目标
根据模型目标, 需要确定预测的对象——预测价格时间序列的未来值.
预测未来某个特定时间的报价目前可能没有好的方法, 因此,需要预测的是在未来几天中价格总的动态变化, 即未来几天的总体价格趋势, 而不是预测某个特定时间的一个特定价格.
数学模型
每天的平均价格可以由以下公式来近似:
Ci、Hi、Li分别为第i天的收盘价、最高价、最低价
算术收益:
Vi:未来k天的平均价格相对今天收盘价变化的百分比.
T: 将动态变化绝对值查过目标收益p%的变化进行累加作为一个指标变量
趋势指标T
构造T指标函数:T.ind:
T指标构造
函数说明:构造T.ind函数
T.ind函数将绝对值大的收益相加,当收益超过目标变化收益, 默认设置为2.5%
首先计算平均价格.
函数HLC( )从价格对象中提取价格的最高价、最低价、收盘价.
计算未来n.days天相对当前收盘价的收益.
函数next( )按时间(向前或后)平移一个时间序列.
-
Delt( )函数用于计算价格序列的百分比收益或者对数收益.
2
可视化分析
T指标性能可视化分析:
股票价格K线图
K线图用一个彩色的框和竖直的线段来代表每日报价情况:
竖线段代表当天的最高、最低价格
框代表开盘价、收盘价
框的颜色用来表示框的顶部所代表的价格(开盘价还是收盘价), 即在一天中价格是下降(R输出为橙色),还是上升(R输出为绿色)
函数candleChart( )绘制股票价格的K线图.
newTA( )可用于绘制新的函数指标并加入到已有的K线图中, 并返回一个绘图函数.
每一条指令把一个指标绘制到前面用candleChart( )输出的K线图中.
addAvgPrice( )参数为1, 表明该指标将会被绘制到第一个图形窗口中,即candleChart( )绘制出的K线图中.
3
指标说明
这里不使用T来预测未来价格, 预测未来价格不是指标T的目的, 其目的是把未来观测到的价格变化概括为一个单一的值.
T指标用来找出在k天内, 日平均价格明显高于目标变化的那些日期的变化之和:
大的正T值意味着有好几天的日平均报价高于今天的收盘价的p%, 这种情况表明有潜在的机会发出买入指令,因为有良好的预期价格会上涨.
大的负T值表明价格可能下降, 可以进行卖出行动,
T值接近0, 则可能是由于价格平稳波动或者价格涨跌互现,正的变化和负的变化互相抵消,此时交易方式为持有.
当有一系列的时期价格上升时, T值达到了最大.
技术指标
这些指标的大部分给出了多个值交易决策.
预测所使用的相关技术指标
指标说明:
ATR(Average True Range): 平均真实范围,该指标是衡量价格波动的指标
SMI(Stochastic Momentum Index):随机动量指标
ADX:威尔斯-威尔德(Welles Wilder)定向运动指数
Aroon指标:该指标找出开始的趋势
Bollinger Bands指标:该指标比较一段时间内价格的波动
Chaikin Volatility:蔡金波动指标
CLV(Close Location Value):收盘价位置价值,该指标把收盘价和其交易范围相联系
EMV(Ease of Movement Value):阿姆氏简易波动指标
MACD指标
MFI(Money Flow Index):资金流向指数
抛物线止损反转和波动性指标
随机森林
随机森林也可以用于估计预测任务中变量的重要性, 它在选择变量过程中需要用到模型的信息.
获取数据
使用getSymbols( )透明地从网站获取该股票的价格数据.(获取在线股票数据的方法请参看推荐阅读中往期文章.)
构建模型
建立训练数据
这是一个模型公式构造方法. 使用specifyModel( )来设定并获取建模数据.建模中的公式不一定和函数specifuModel( )参数重提供的公式完全一样. 这里使用2000年~2003年间数据建立模型.
在函数中设置importance=T, 这样随机森林将估计变量的重要性.
得到模型后,可以检查变量的熵, 即变量的重要性:
可视化
随机森林变量重要性
2
确定熵
现在需要一个界限值来选择重要性熵值较高的变量子集,根据上图的结果, 选出影响股票价格的内生变量:
因为这是一个简单的随机森林来选择变量的例子, 根据可视化熵值的结果, 使用8为界限值.
函数importance( )将得到每个变量的具体重要性分数, 然后用给定的界限值来筛选用于建模的变量子集, 最终得到用于建立模型的数据:
最终建模变量
推荐阅读
R语言数据分析与实践
建模专题
思想常新者,以数据为其探寻之源
以上是关于R语言随机森林: 多元时间序列构造股票市场收益预测模型|预测模型的主要内容,如果未能解决你的问题,请参考以下文章
R语言 | randomForest包的随机森林回归模型以及对重要变量的选择