%求回归方程y=ax+b
Y = xlsread('4_1.xls');
%读取excel中2004年2月2日到2006年8月31日收盘价,得到列向量
int=[30 20 23 17 21 22 22 22 17 21 22 22 15 22 23 16 22 22 21 23 17 21 22 20 16 19 23 15 23 22 21];%每月投资时中间间隔的天数
%length(int)
x1= ones(1,30);%构造全1的行向量,在regress函数中用到
n=10000/(1+0.003);%每月最高买入额
q=0;%股数
m=0;%还未买进股票,平均成本为0
profit1=0;
ystart=1;
yend=30;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(int)
y = Y(ystart:1:yend);
x = [x1;(1+int(i)-30):1:(30+int(i)-30)]';
b = regress(y,x);
value = b(2)*(30+int(i))+b(1);%这个月15号在走势线上的值
pi = Y(30+ystart);%现在的股价
%pi_pre=value;%在走势线上的值
alpha = (pi-value)/value;
if alpha < 0 || i==1
k=0;
else
k=(n+q*pi-pi*sqrt((pi-m)*q))/(n*alpha);
end
current = n*(1-alpha*k);%这个月的资金进出情况
profit1=profit1+current;
m=(m*q+current)/(q+current/pi);
q=q+current/pi;
ystart=ystart+int(i);
yend=yend+int(i);
end
profit=(profit1-q*pi)/30;
这个题在循环过程中,q,m,current循环几次后就出现了复数,比如:current =
-2.0327e+004 -5.5969e+002i
而且就只有前几次是实数,后面都是复数....
为什么会这样啊?请帮忙看一下谢谢~~