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. Golang---序列化和反序列化

    为什么要序列化和反序列化 我们的数据对象要在网络中传输或保存到文件,就需要对其编码和解码动作,目前存在很多编码格式:json, XML, Gob, Google Protocol Buffer 等, ...

  2. 18 12 `12 WSGI 协议

    所谓wsig 协议  就是把web框架 和服务器进行分开  然后通过 wisg协议 进行连接  这样子可以随时替换web框架  或者 更换服务器 解耦 (现在学的内容里 静态连接一般是放在服务器里  ...

  3. Q6:ZigZag Conversion

    6. ZigZag Conversion 官方的链接:6. ZigZag Conversion Description : The string "PAYPALISHIRING"  ...

  4. css选择器,选择指定属性的值

    选择属性为href的值: <a class='test' href='www.baidu.com' >test</a> response.css('.test::attr(hr ...

  5. C# 创建Windows服务。服务功能:定时操作数据库

      一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在Service1.cs添加如下代码: System.T ...

  6. Tensorflow基础笔记

    1.Keras是一个由Python编写的开源人工神经网络库. 2.深度学习主要应用在三个大的方向,计算机视觉,自然语言处理,强化学习 3.计算机视觉主要有:图片识别,目标检测,语义分割,视频理解(行为 ...

  7. Python—程序设计:单例模式

    单例模式 单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,并提供一种访问其 ...

  8. LaunchPad(思维)

    链接:https://ac.nowcoder.com/acm/contest/3665/D来源:牛客网 题目描述 Hery is a boy with strong practical abiliti ...

  9. PAT Advanced 1097 Deduplication on a Linked List (25) [链表]

    题目 Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplica ...

  10. UML-类图-如何画引用类和集合?

    1.画引用类 引用到了类时,需要画关联线,否则其他基本类型(int.string.date等)不画. 2.画集合 当然,方法1中可加入箭头.对应java代码: public class Sale { ...