关于算法:R语言使用ARIMA模型预测股票收益时间序列

48次阅读

共计 4068 个字符,预计需要花费 11 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=2831

“预测十分艰难,特地是对于将来”。丹麦物理学家尼尔斯·波尔(Neils Bohr)

很多人都会看到这句名言。预测是这篇博文的主题。在这篇文章中,咱们将介绍风行的 ARIMA 预测模型,以预测股票的收益,并演示应用 R 编程的 ARIMA 建模的逐渐过程。

工夫序列中的预测模型是什么?

预测波及应用其历史数据点预测变量的值,或者还能够波及在给定另一个变量的值的变动的状况下预测一个变量的变动。预测办法次要分为定性预测和定量预测。工夫序列预测属于定量预测的领域,其中统计原理和概念利用于变量的给定历史数据以预测同一变量的将来值。应用的一些工夫序列预测技术包含:

  • 自回归模型(AR)
  • 挪动均匀模型(MA)
  • 节令回归模型
  • 散布滞后模型

什么是自回归挪动均匀模型(ARIMA)?

ARIMA 代表 Autoregressive Integrated Moving Average。ARIMA 也被称为 Box-Jenkins 办法。Box 和 Jenkins 宣称,通过对系列 Y t 进行差分,能够使非安稳数据安稳。

ARIMA 模型联合了三种根本办法:

  • 自回归(AR)– 在自回归的一个给定的工夫序列数据在他们本人的滞后值,这是由在模型中的“P”值示意回归的值。
  • 差分(I-for Integrated)– 这波及对工夫序列数据进行差分以打消趋势并将非安稳工夫序列转换为安稳工夫序列。这由模型中的“d”值示意。如果 d = 1,则查看两个工夫序列条目之间的差分,如果 d = 2,则查看在 d = 1 处取得的差分的差分,等等。
  • 挪动平均线(MA)– 模型的挪动均匀性质由“q”值示意,“q”值是误差项的滞后值的数量。

该模型称为自回归整合挪动平均值或 Y t 的 ARIMA(p,d,q)。咱们将依照上面列举的步骤来构建咱们的模型。

第 1 步:测试和确保平稳性

要应用 Box-Jenkins 办法对工夫序列进行建模,该系列必须是安稳的。安稳工夫序列示意没有趋势的工夫序列,其中一个具备恒定的均值和随工夫的方差,这使得预测值变得容易。

测试平稳性 – 咱们应用 Augmented Dickey-Fuller 单位根测试测试平稳性。对于安稳的工夫序列,由 ADF 测试失去的 p 值必须小于 0.05 或 5%。如果 p 值大于 0.05 或 5%,则能够得出结论:工夫序列具备单位根,这意味着它是一个非安稳过程。

差分 – 为了将非安稳过程转换为安稳过程,咱们利用差分办法。辨别工夫序列意味着找出工夫序列数据的间断值之间的差分。差分值造成新的工夫序列数据集,能够对其进行测试以发现新的相关性或其余乏味的统计个性。

咱们能够间断屡次利用差分办法,产生“一阶差分”,“二阶差分”等。

在咱们进行下一步之前,咱们利用适当的差分阶数(d)使工夫序列安稳。

第 2 步:辨认 p 和 q

在此步骤中,咱们通过应用自相干函数(ACF)和偏相关函数(PACF)来确定自回归(AR)和挪动均匀(MA)过程的适当阶数。

辨认 AR 模型的 p 阶

对于 AR 模型,ACF 将以指数形式衰减,PACF 将用于辨认 AR 模型的阶数(p)。如果咱们在 PACF 上的滞后 1 处有一个显着峰值,那么咱们有一个 1 阶 AR 模型,即 AR(1)。如果咱们在 PACF 上有滞后 1,2 和 3 的显着峰值,那么咱们有一个 3 阶 AR 模型,即 AR(3)。

辨认 MA 模型的 q 阶

对于 MA 模型,PACF 将以指数形式衰减,ACF 图将用于辨认 MA 过程的阶数。如果咱们在 ACF 上的滞后 1 处有一个显着的峰值,那么咱们有一个 1 阶的 MA 模型,即 MA(1)。如果咱们在 ACF 上的滞后 1,2 和 3 处有显着的峰值,那么咱们有一个 3 阶的 MA 模型,即 MA(3)。

第 3 步:估算和预测

一旦咱们确定了参数(p,d,q),咱们就能够估算 ARIMA 模型在训练数据集上的准确性,而后应用拟合模型应用预测函数预测测试数据集的值。最初,咱们穿插查看咱们的预测值是否与理论值统一。

应用 R 编程构建 ARIMA 模型

当初,让咱们依照解释的步骤在 R 中构建 ARIMA 模型。有许多软件包可用于工夫序列剖析和预测。咱们加载相干的 R 包进行工夫序列剖析,并从雅虎财经中提取股票数据。

# 从雅虎财经中提取数据

getSymbols('TECHM.NS',from ='2012-01-01',to =''2015-01-01')#抉择相干的收盘价序列

stock_prices = TECHM.NS [,4]

在下一步中,咱们计算股票的对数收益,因为咱们心愿 ARIMA 模型预测对数收益而不是股票价格。咱们还应用绘图函数绘制了对数收益序列。

# 计算股票 一阶差分

stock = diff(log(stock_prices),lag = 1)plot(stock,type ='l',main ='log return plot')

接下来,咱们对收益序列数据调用 ADF 测试以查看平稳性。来自 ADF 测试的 p 值为 0.01 通知咱们该序列是安稳的。如果序列是非安稳的,咱们首先会对回归序列进行差分,使其序列安稳。

在下一步中,咱们将数据集拆分为两局部 – 训练和测试

acf.stock = acf(stock [c(1:breakpoint),],main ='ACF Plot',lag.max = 100)

咱们能够察看这些图并得出自回归(AR)阶数和挪动均匀(MA)阶数。

咱们晓得,对于 AR 模型,ACF 将呈指数衰减,PACF 图将用于辨认 AR 模型的阶数(p)。对于 MA 模型,PACF 将以指数形式衰减,ACF 图将用于辨认 MA 模型的阶数(q)。从这些图中咱们抉择 AR 阶数 = 2 和 MA 阶数 = 2. 因而,咱们的 ARIMA 参数将是(2,0,2)。

咱们的指标是从断点开始预测整个收益序列。咱们将在 R 中应用 For 循环语句,在此循环中,咱们预测测试数据集中每个数据点的收益值。

在上面给出的代码中,咱们首先初始化一个序列,它将存储理论的收益,另一个系列来存储预测的收益。在 For 循环中,咱们首先依据动静宰割点划分训练数据集和测试数据集。

咱们在训练数据集上调用 arima 函数,其指定的阶数为(2,0,2)。咱们应用这个拟合模型通过应用 forecast.Arima 函数来预测下一个数据点。该性能设置为 99%置信水平。能够应用置信度参数来加强模型。咱们将应用模型中的预测点估计。预测函数中的“h”参数示意咱们要预测的值的数量。

咱们能够应用摘要性能确认 ARIMA 模型的后果在可承受的范畴内。在最初一部分中,咱们将每个预测收益和理论收益别离附加到预测收益序列和理论收益序列。

 #初始化理论对数收益率的 xts 对象
 
Actual_series = xts(0,as.Date("2014-11-25","%Y-%m-%d"))#初始化预测收益序列的数据
 
fit = arima(stock_train,order = c(2,0,2),include.mean = FALSE)#绘制残差的 acf 图
 
acf(fit$ residuals,main ="Residuals plot")arima.forecast = forecast.Arima(fit,h = 1,level = 99)#绘制预测
 
#为预测期创立一系列预测收益
 
forecasted_series = rbind(forecasted_series,arima.forecast $ mean [1])#为预测期创立一系列理论收益
 
Actual_series = c(Actual_series,xts(Actual_return))RM(Actual_return)

在咱们转到代码的最初局部之前,让咱们从测试数据集中查看 ARIMA 模型的后果以获取样本数据点。

从失去的系数,收益方程可写为:

Y t = 0.6072 Y(t-1)-0.8818 Y(t-2)-0.5447ε(t-1)+0.8972ε(t-2)

系数给出了标准误差,这须要在可承受的范畴内。Akaike 信息规范(AIC)评分是 ARIMA 模型准确性的良好指标。模型更好地升高 AIC 得分。咱们还能够查看残差的 ACF 图; 良好的 ARIMA 模型的自相关性将低于阈值限度。预测的点收益为 -0.001326978,在输入的最初一行中给出。

让咱们通过比拟预测回报与理论回报来查看 ARIMA 模型的准确性。代码的最初一部分计算此准确性信息。

# 调整理论收益率序列的长度
 
Actual_series = Actual_series [-1]
 
#创立预测序列的工夫序列对象
 
forecasted_series = xts(forecasted_series,index(Actual_series))
 
#创立两个回归系列的图 - 理论与预测
 
#创立一个表格,用于预测的准确性
 
comparsion = merge(Actual_series,forecasted_series)
 
comparsion $ Accuracy = sign(comparsion $ Actual_series)== sign(comparsion $ Precasted)
 
#计算准确度百分比指标
 
Accuracy_percentage = sum(comparsion $ Accuracy == 1)* 100 / length(comparsion $ Accuracy)

模型的准确率百分比达到 55%左右。能够尝试运行模型以取得(p,d,q)的其余可能组合,或者应用 auto.arima 函数抉择最佳的最佳参数来运行模型。

论断

最初,在本文中,咱们介绍了 ARIMA 模型,并将其利用于应用 R 编程语言预测股票价格收益。咱们还通过理论收益查看了咱们的预测后果。


最受欢迎的见解

1. 在 python 中应用 lstm 和 pytorch 进行工夫序列预测

2.python 中利用长短期记忆模型 lstm 进行工夫序列预测剖析

3. 应用 r 语言进行工夫序列(arima,指数平滑)剖析

4.r 语言多元 copula-garch- 模型工夫序列预测

5.r 语言 copulas 和金融工夫序列案例

6. 应用 r 语言随机稳定模型 sv 解决工夫序列中的随机稳定

7.r 语言工夫序列 tar 阈值自回归模型

8.r 语言 k -shape 工夫序列聚类办法对股票价格工夫序列聚类

9.python3 用 arima 模型进行工夫序列预测

正文完
 0