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. stm32f4 dma + uart idle + double 调试小记

    使用 stm32f4 调试uart 接收, 使用 空闲中断,dma 双缓冲模式,有以下几点需要注意的. 调试的时候断点不要打在 if (USART_GetITStatus(USART6, USART_ ...

  2. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring Bean的生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁. 而对于 protot ...

  3. Maven - 构建生命周期、阶段、目标

    版权所有,未经授权,禁止转载 章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Ma ...

  4. Day 12:枚举值、枚举类

    jdk1.5新特性之-----枚举 问题:某些方法所接收的数据必须是在固定范围之内的,  解决方案: 这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用. ...

  5. 201771010123汪慧和《面向对象程序设计Java》第十四周实验总结

    一.理论部分 1.Swing和MVC设计模式 (1)设计模式初识 (2)模式—试图—控制器模式 (3)Swing组件的模型—试图—控制器分析 2.Java组件有内容.外观.行为三个主要元素:这三个主要 ...

  6. JavaScript—纯函数

    定义 一个函数的返回结果只依赖它的参数,而且在计算过程中不会产生其他副作用,也就是不会对外部的数据造成影响或改变. 理解:函数的返回结果只依赖它的参数 const a= 1; const b= (c) ...

  7. NRF24L01中断双向传输数据

    NRF24L01是一款比较常见的无线通讯芯片,不过有个缺点就是只能半双工通讯,当涉及到双向通讯时就比较麻烦一些·,特别是想要做无线IAP数据需要一直来回发送,这点无疑然人恶心到想吐,不过还好有数据中断 ...

  8. BZOJ 4033: [HAOI2015]树上染色

    题解: 树形DP 思路,考虑每条边的贡献,即这条边两边的黑点数量相乘+白点数量相乘再成边长 #include<iostream> #include<cstdio> #inclu ...

  9. UVALive 4670 AC自动机

    第二道AC自动机的题目了,之前参考的是网上一个博客算法,不怎么好,难写而且占空间 后来参照大白书做的这题,代码简洁多了 #include <iostream> #include <c ...

  10. xdc如何设置输入延时

    常用命令: Set_input_delay,create_clock,set_output_delay以及用于组合逻辑的set_max_delay. Input delay: 什么是输入延时? Tra ...