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. Codeforces 437D 贪心+并查集

    这个题目让我想起了上次在湘潭赛的那道跪死了的题.也是最值问题,这个也是,有n个动物园 每个都有权值 然后被m条路径相连接,保证图是连通的,然后求所有的p[i][j]之和.i,j为任意两个zoo,pij ...

  2. Android自定义View——QQ音乐中圆形旋转碟子

    1.在onMeasure中测量整个View的宽和高后,设置宽高 2.获取我们res的图片资源后,在ondraw方法中进行绘制圆形图片 3.通过Handler发送Runnable在主线程中更新UI,达到 ...

  3. ComboPooledDataSource连接mysql

      Dbutils学习(介绍和入门)   一:Dbutils是什么?(当我们很难理解一个东西的官方解释的时候,就让我们记住它的作用)      Dbutils:主要是封装了JDBC的代码,简化dao层 ...

  4. PHP集成环境wamp和navicat for mysql 的安装

    1. PHP集成环境WAMP的安装: 下载wamp: 链接:https://pan.baidu.com/s/1zvoPEbLdG7y04WWHNM6UcA  密码:mxd3 安装过程如下图: 安装完成 ...

  5. h5-transform二维变换-扑克牌小案例

    html代码:6张扑克牌 <div class="pkBox"> <img src="../img/pk1.jpg" alt="&q ...

  6. 使用axis调用webservice接口

    以前使用webservice服务都很简单,就是根据提供的wsdl接口地址,通过eclipse或者idea自动生成webservice client包,然后直接调用就可以了.这次业务提供的wsdl是需要 ...

  7. [转]分析zookeeper能做什么

    Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zo ...

  8. 布局基础<kotlin>(整理自网络)

    全屏 主界面 底部导航,bottombar 添加依赖 implementation 'com.roughike:bottom-bar:2.3.1' 主界面布局 <com.roughike.bot ...

  9. symmetry methods for differential equations,exercise 1.4

    tex文档: \documentclass[a4paper, 12pt]{article} % Font size (can be 10pt, 11pt or 12pt) and paper size ...

  10. 刷题42. Trapping Rain Water

    一.题目说明 题目是42. Trapping Rain Water,翻译起来就是"接雨水".给n个非负正数代表高度,每个正数宽度为1,让计算能多少雨水.题目难度是Hard 二.我的 ...