悬赏 1 个论坛币 未解决
小弟读本科没学过matlab,这段时间自学了matlab,我现在要算一个时间段内的HURST,现在编程结果如下:
function [ A,C ] = hurst( p )
format long
ll=length(p); % l????????¨°?????????????????????
j=1;
for i=5:500;
if mod(ll,i)==0;
n1(j)=i; % n1(j)是子区间里价格的数量
n2(j)=ll/i; % n2(j)是子区间存在的个数
j=j+1;
end
end
l=length(n1);
K=[n1; n2]
for j=1:l;
for i=1:n2(j);
bar=mean(p((i-1)*n1(j)+1:i*n1(j))) ; %?¨???????????????¨???
x=p((i-1)*n1(j)+1:i*n1(j))-bar;
y=cumsum(x); %?¨???????????????????????
R(i)=max(y)-min(y) ;%?¨????????????R??
sigma(i)= std(p((i-1)*n1(j)+1:i*n1(j)),1);
if sigma(i)==0;
sigma(i)=0.0001;
end
RS(i)=R(i)/sigma(i); %?¨??????????????R/S????
clear x y
end
meanRS=mean(RS); %?¨?????TS?¨°??R/S???¨???
A(j)=log(meanRS);
B(j,1)=1;
B(j,2)=log(n1(j));
C(j)=B(j,2);
end
A=A';
coefficient=inv(B'*B)*B'*A %???????????§???¨?????Husrt
BB=coefficient(1)+coefficient(2)*C;
plot(C,BB)
hold on
plot(C,A,'o')
end
我这样算出来的结果总是在0.4以下,不管我取的样本是什么样的,我觉得是程序有问题。。各位高手能帮我看看吗