function [vr_value,z1,z2]=vr(x,q) %输入x为价格序列,q为滞后阶数 %vr_value输出方差比值 %z1为收益序列不存在下的检验统计量 %z2为收益序列为异方差时的检验统计量 %显著性水平0.05(双侧标准正态检验) n1=size(x,2);%原始数据维数为m m=n1-1; r=zeros(1,m); for i=1:m r(i)=x(i+1)-x(i); end %r; %median(r);%中值 %mean(r);%期望 %var(r);%方差 %range(r);%极差 %kurtosis(r);%峰度 %skewness(r);%偏度 mu=mean(r);%均值 rm=zeros(1,m-q+1); for i=1:m-q+1 for j=i:i+q-1 rm(i)=rm(i)+r(j); end end s1=0;s2=0; for t=q:m s1=s1+(x(1+t)-x(1+t-q)-q*mu)^2; end for t=1:m s2=s2+(x(t+1)-x(t)-mu)^2; end me=q*(m-q+1)*(1-q/m); vr_value=(s1/me)/(s2/(m-1));%vr_value为Lo & Mackinlay提出的方差比 fy1=2*(2*q-1)*(q-1)/(3*q*m); z1=(vr_value-1)/sqrt(fy1); %收益序列不存在时的方差比 fy2=0; delta=zeros(1,q-1); delta1=zeros(1,q-1); s3=0; for k=1:q-1 for l=k+1:m delta1(k)=delta1(k)+(x(k+1)-x(k)-mu)^2*(x(1+l-k)-x(l-k)-mu)^2; end for t=1:m s3=s3+(x(t+1)-x(t)-mu)^2; end delta(k)=delta1(k)/(s3)^2; fy2=fy2+delta(k)*(2*(q-k)/q)^2; end z2=(vr_value-1)/sqrt(fy2);%收益序列是异方差时的方差比