【matlab编程代做】基于MATLAB的股票指数预测算法仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

% 本程序的目的是模拟一个ARMA模型,然后进行时频归并。考察归并前后模型的变化。

% 这个ARMA模型的一般形式用黑盒子模型表示为A(q)y(t)=C(q)e(t)。q是滞后算子。

% 或者是:(1+a1*q^(-1)+a2*q^(-2)+a3^(-3)+a4*q^(-4))y(t)=(1+c1*q^(-1)+c2*q^(-2)+c3^(-3)+c4*q^(-4))e(t)

% 这里多项式A和C都只写出4阶,因为一般的经济时间序列阶数都不高。

clear;

clc;

% ====================第一步,模拟一个ARMA模型并绘制ACF,PACF图========================

%s首先设定ARMA模型的多项式系数。ARMA模型中只有多项式A(q)和C(q),

%把A(q)的系数都设为0就得到MA模型,把C(q)的系数都设为0就得到AR模型。

M=250;%要预测的点数

xa3=textread('data/buy_price.txt');

xa4=textread('data/buy_num.txt') ;

xc3=textread('data/sell_price.txt');

xc4=textread('data/sell_num.txt') ;

% xa3=textread('data/data.mat');

% xa4=textread('data/data.mat') ;

% xc3=textread('data/data.mat');

% xc4=textread('data/data.mat') ;

lp=length(xa3);

for i=1:1:lp

a1(i) = -(0.5)^(1/3);

a2(i) = (0.5)^(2/3);

a3(i) = xa3(i);

a4(i) = xa4(i);

c1(i) = -(0.5)^(1/3);

c2(i) = (0.5)^(2/3);

c3(i) = xc3(i);

c4(i) = xc4(i);

end

obv = 3000; %obv是模拟的观测数目。

A = [1 a1 a2 a3 a4];

C = [1 c1 c2 c3 c4];

m = idpoly(A,[],C,[],[],1,1) %这样就生成了ARMA模型,把它存储在m中。NoiseV ariance被设定为1,1也是默认值。抽样间隔Ts设为1。

error = randn(obv,1); %作为其他影响因子。

e = iddata([],error,1); %用randn函数生成一个噪声序列。存储在e中。抽样间隔是1秒。

y = sim(m,e);

get(y) %使用get函数来查看动态系统的所有性质。

r=y.OutputData; %把y.OutputData的全部值赋给变量r,r就是一个obv*1的向量。

%==========================第二步,绘制ARMA序列r的ACF和PACF图=======================

figure(1)

subplot(2,1,1)

n=lp;

[ACF,Lags,Bounds]=autocorr(r,n,2);

x=Lags(2:n);

y=ACF(2:n);

h=stem(x,y,'fill','-');

set(h(1),'Marker','.')

hold on

ylim([-1 1]);

a=Bounds(1,1)*ones(1,n-1);

line('XData',x,'YData',a,'Color','red','linestyle','--')

line('XData',x,'YData',-a,'Color','red','linestyle','--')

xlabel('lags')

ylabel('ACF')

title('ACF with 2stds Bounds(i.e., approximate 95% confidence interval)')

axis([0,n,-0.15,0.15]);

subplot(2,1,2)

[PACF,Lags,Bounds]=parcorr(r,n,2);

x=Lags(2:n);

y=PACF(2:n);

h=stem(x,y,'fill','-');

set(h(1),'Marker','.')

hold on

ylim([-1 1]);

b=Bounds(1,1)*ones(1,n-1);

line('XData',x,'YData',b,'Color','red','linestyle','--')

line('XData',x,'YData',-b,'Color','red','linestyle','--')

xlabel('lags')

ylabel('PACF')

title('PACF with 2stds Bounds(i.e., approximate 95% confidence interval)')

axis([0,n,-0.15,0.15]);

%===============================函数的估计和拟合===============================

%%============================第三步,对r进行m阶时频归并======================== %%这一步对前面得到的ARMA序列r进行m阶时频归并。归并的方法是把每m个数据项加起来。

相关文档
最新文档