1  ARMA时间序列机器特性

  下面介绍一种重要的平稳时间序列——ARMA时间序列。

  ARMA时间序列分为三种:

  AR模型,auto regressiv model

  MA模型,moving average model

  ARMA模型,auto regressive moving average model

  可证ARMA时间序列具有遍历性,因此可以通过它的一个样本估计自协方差函数及自相关函数。

2  ARMA、AR、MA模型的基础知识(略)

3  例:随机模拟下列序列,样本容量10000,其中样本符合均值为零,方差为1的标准正太分布。计算自相关值

  MATLAB代码如下:

%% DEMO1
% 利用模型数据研究随机模拟下序列。计算自相关函数
clc;clear;
rng('default'); % 初始化随机种子,保持随机种子一致
elps = randn(1,10000); % 产生10000个服从正态分布的随机数
x(1) = 0; % 赋初始值
for j = 2:10000
x(j) = 0.8 * x(j-1) + elps(j) - 0.4 * elps(j-1); % 产生样本点
end
y = (x - mean(x)); % 把数据中心化处理
gama0 = var(x); % 求样本方差
for j = 1:10
gama(j) = y(j+1:end)*y(1:end-j)'/10000; %求自协方差函数
end
rho = gama/gama0; %求自相关函数
rho2 = autocorr(x); % 直接利用MATLAB工具箱求自相关函数。
disp([rho(1),rho(2),rho(4),rho(4)]);
disp([rho2(2),rho2(3),rho2(4),rho2(5)]) % 其自相关函数的计算结果基本一致
% 0.5430 0.4296 0.2551 0.2551
% 0.5430 0.4297 0.3396 0.2552

4  例:利用MATLAB计算自相关值

%% DEMO2
% 利用模型数据研究随机模拟下序列。计算偏自相关函数
clc;clear;
rng('default'); % 初始化随机种子,保持随机种子一致
elps = randn(1,10000); % 产生10000个服从正态分布的随机数
x(1) = 0; % 赋初始值
for j = 2:10000
x(j) = 0.8 * x(j-1) + elps(j) - 0.4 * elps(j-1); % 产生样本点
end
y = (x - mean(x)); % 把数据中心化处理
gama0 = var(x); % 求样本方差
L = 10;
for j = 1:L
gama(j) = y(j+1:end)*y(1:end-j)'/10000; %求自协方差
end
rho = gama/gama0; % 求自相关系数
f(1,1)=rho(1);
for k = 2:L
s1 = rho(k);s2=1; % 计算初始值
for j = 1:k-1
s1 = s1-rho(k-j)*f(k-1,j);
s2 = s2-rho(j)*f(k-1,j);
f(k,k)=s1/s2;
end
for j = 1:k-1
f(k,j) = f(k-1,j)-f(k,k)*f(k-1,k-j);
end
end
pcorr=diag(f)'; %提取偏相关函数
pcorr2=parcorr(x); %直接利用MATLAB工具箱计算偏相关函数
disp([pcorr(1),pcorr(2),pcorr(4),pcorr(4)]);
disp([pcorr2(2),pcorr2(3),pcorr2(4),pcorr2(5)]) % 利用公式和利用MATLAB工具箱计算的偏相关值基本一致
% 0.5430 0.1911 0.0057 0.0057
% 0.5431 0.1913 0.0694 0.0056

5  ARMA模型时间序列的建模与预报

步骤:

  第一:首先进行模型的识别与定价,即要判断是AR(p),MA(q),还是ARMA(p,q)模型的类别,并估计阶数p和q。其实这都是归结到模型的定阶问题。

  第二:当定阶后,就要对模型参数进行估计。

  第三:定阶与参数估计完成后,还有对模型进行检验,即要检验残差是否为平稳白噪声。若检验获得通过,则ARMA模型建模完成。

  第四:作为时间序列建模后的一个重要应用,还要讨论ARMA模型的时间序列的预报。

6  MATLAB中的GARCH工具箱可以实现时间序列建模的功能。工具箱中的模型ARMAX(R,M,Nx)为ARMA模型函数。下面通过一些实例来进行建模的演示。

7  MATLAB中arima模型和arimax模型的区别

  一元时间序列模型:arma和arima,具有差分和不差分的区别

  多元时间序列模型:arimax,时间序列一维以上的不同时间序列,在先生生活中预测往往受很多因素的影响。

7.1  arima模型的参数说明:

  7.1.1  如果差分为0的话就是arma模型。

  7.1.2  创建

      模式1:Md1 = arima  % 创建一个0级别的ARIMA模型,也就是arima(0,0,0)

      模式2:Md1 = arima(p,D,q)  % 创建一个非季节性的线性时间序列模型,其中p为AR模型的阶数,D为几阶差分,q为MA模型的阶数

      模式3:Md1 = arima(Name,Value)  % 创建一个线性时间序列模型,采用增加额外选项、值的方式。Name是可选项,Value为选项的值。Name必须用(' ')这种内部引用方式。对应的格式可以是Name1,Value,Name2,Value2.....

  7.1.3  创建方法:

  方法一:如果直接输入采用模式2的形式Md1 = arima(p,D,q)的方式;Md1 = arima(1,1,1) % 表示一阶差分的AR1,MA1模型。但是这个模型没有任何的参数。是属于首先建立整个模型的结构框架的形式:

      因此:输出的也是一个对象引用的内容:

Md1 =
ARIMA(1,1,1) Model:
--------------------
Distribution: Name = 'Gaussian'
P: 2
D: 1
Q: 1
Constant: NaN
AR: {NaN} at Lags [1]
SAR: {}
MA: {NaN} at Lags [1]
SMA: {}
Variance: NaN

    方法二:对应Name-Value的变量输入方式。其实这些Name和Value的键和值也是这个对象里面的内容。因此这里把所有的键和值列出来。进行解释一下。

键:'AR'

解释:非季节自回归的参数。默认为空NaNs

键:'ARLags'

解释:与AR系数相关的正整数滞后向量。默认为1,2

键:'Beta'

解释:与AR系数相关的正整数滞后向量。默认[ ];非回归系数回归内容

键:'Constant'

解释:线性时间序列中的标量常数,也就是常数项。默认NaN;

键:'D'

解释:非负整数表示的非季节性差分滞后算子多项式的次数(非季节性的一体化程度)在线性时间序列。默认0;

键:'Distribution'

解释:创新过程的条件概率分布。分布是“高斯”或“T”。或者,将其指定为具有字段名称的数据结构,以存储分布“高斯”或“T”。如果分布是“t”,则结构也需要字段自由度来存储自由度。默认高斯分布;

键:'MA'

解释:非季节性移动平均系数对应于可逆多项式细胞载体。当未指定malags,马是一种细胞载体的系数在滞后1,…对非季节性移动平均多项式的次数。当指定的MALags,马是一个相当长的细胞载体与MALags的滞后相关系数。默认NaN;

键:'MALags'

解释:与MA系数相关的正整数滞后向量。默认0;

键:'SAR'

解释:季节AR模型。

键:'SARLags'

解释:。

键:'SMA'

解释:。

键:'SMALags'

解释:。

键:'Seasonality'

解释:

线性时间序列模型中季节性差分滞后算子多项式的非负整数。默认为0;

键:'Variance'

解释:模型创新的正标量方差,或支持的条件方差模型对象(例如,GARCH模型对象)。

  7.1.4  建模举例:

  比如有这么一个模型ARIMA(2,1,1)  

  表达式如下:

  

  对应的MATLAB建模公式如下:

  tdist = struct('Name','t','DoF',10);
  model = arima('Constant',0.4,'AR',{0.8,-0.3},'MA',0.5,'D',1,'Distribution',tdist,'Variance',0.15)

  对应对象里面的内容如下:

model = 

    ARIMA(2,1,1) Model:
--------------------
Distribution: Name = 't', DoF = 10
P: 3
D: 1
Q: 1
Constant: 0.4
AR: {0.8 -0.3} at Lags [1 2]
SAR: {}
MA: {0.5} at Lags [1]
SMA: {}
Variance: 0.15

  解释:Constant:对应的是常数项:0.4

      AR:对应的是AR模型的滞后项的参数:0.8 -0.3

      MA:对应的是MA模型的参数:0.5

      D:为一阶差分形式

      Distribution:tdist,如果加上分布,这里用一个结构体来说明,这里指的是t分布,有10个自由度。也可以不加这个分布,默认为高斯分布。

      Variance:指的是常数项的方差是0.5,在有些教材中一般都是在公式下面打一个小括号,对应每一个参数的表示方差(0.5)

8  其他相关配套函数

estimate Estimate ARIMA or ARIMAX model parameters
filter Filter disturbances using ARIMA or ARIMAX model
forecast Forecast ARIMA or ARIMAX process
impulse Impulse response function
infer Infer ARIMA or ARIMAX model residuals or conditional variances
print Display parameter estimation results for ARIMA or ARIMAX models
simulate Monte Carlo simulation of ARIMA or ARIMAX models

.

.

..................................

量化投资_MATLAB在时间序列建模预测及程序代码的更多相关文章

  1. 推荐学习《Python与量化投资从基础到实战》PDF及代码+《量化投资以Python为工具》PDF及代码

    利用python分析量化投资问题是现在研究的热点,推荐两份资料用于学习 <Python与量化投资:从基础到实战>主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘. ...

  2. python书籍推荐:量化投资:以Python为工具

    所属网站分类: 资源下载 > python电子书 作者:mimi 链接:http://www.pythonheidong.com/blog/article/451/ 来源:python黑洞网 内 ...

  3. Python金融应用编程(数据分析、定价与量化投资)

    近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技 ...

  4. 三分钟玩转微软AI量化投资开源库QLib

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 微软QLib简介 微软亚洲研究院发布了 AI 量化投资开源平台"微矿 Qlib".Q ...

  5. 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)

    http://www.matlabsky.com/thread-43937-1-1.html   <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下)     ...

  6. 1、量化投资—为什么选择Python?

    Python在量化领域的现状 就跟Java在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,从各个业务链条都能找到相应的框架实现. 在量化投资(证券和比特币)开源项目 ...

  7. 量化投资学习笔记07——python知识补漏

    看<量化投资:以python为工具>这本书,第一部分是python的基础知识.这一部分略读了,只看我还不知道或不熟的. 定义复数 x = complex(2, 5) #2+5j 也可以直接 ...

  8. 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

    http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...

  9. 【原创】基于SVM作短期时间序列的预测

    [面试思路拓展] 对时间序列进行预测的方法有很多, 但如果只有几周的数据,而没有很多线性的趋势.各种实际的背景该如何去预测时间序列? 或许可以尝试下利用SVM去预测时间序列,那么如何提取预测的特征呢? ...

随机推荐

  1. tf.summary可视化参数

    1.tf.summary.scalar('accuracy', accuracy) 损失值.准确率随着迭代次数的进行,其指标变化情况:一般在画loss,accuary时会用到这个函数. 2.tenso ...

  2. Tomcat解压版Windows配置(运行环境非开发环境)

    tomcat官网下载的9.0.19,解压后目录如下: java官网下载的jre8 (8u131),目录如下(应该是下载的解压版): 打开tomcat9.0.19根目录下的RUNNING.txt,里面有 ...

  3. English Words and Expressions

    Words apprentice 学徒 corny 老套的 obnoxious 作呕的 intermezzo 间奏曲 predate 日期上早于 parenthesis 括号 delimiter 分隔 ...

  4. dateutil 2.5.0 is the minimum required version python

    问题重现 在运行以下代码时出现了该错误: import pandas as pd import numpy as np 原因与解决 原因是dateutil库版本低于2.5.0,卸载重装即可: pip ...

  5. 组件state

    一.设计合适的state 1.1 定义: state代表一个组件UI呈现的完整状态 stae代表一个组件UI呈现的最小状态集[所有状态都用于组件UI的变化,没有任何多余的状态] 1.2 state和p ...

  6. Centos6.5 安装zabbix3(收藏,非原创)

    1.安装PHP Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上,注意,不支持PHP7 rpm -ivh  ...

  7. 技术沙龙|京东云区块链进校园-京东云&深圳大学线下沙龙分享回顾

    在刚刚结束的京东云&深圳大学技术沙龙活动中,多位京东云的技术大咖针对京东云BDS产品技术细节.开源计划,与深圳大学的同学和参会者进行了深入探讨,干货满满反响深刻,获得了在场同学与参会者的一致好 ...

  8. PAT Advanced 1086 Tree Traversals Again (25) [树的遍历]

    题目 An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For exam ...

  9. proto3 不支持内建类型的非空判断即 hasXXX

    proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...

  10. Eureka高可用环境搭建

    1.创建govern-center 子工程 包结构:com.dehigher.govern.center 2.pom文件 (1)父工程pom,用于依赖版本管理 <dependencyManage ...