putbytime(2:89,:)放置的是89日的199个卖权的价格(如果没上市则价格为0)
如图:
7.21日上市43个期权,7.23日上市38个期权,下图左栏为剩余到期天数/365,右栏为当日上期的期权数量
现在,我只需要同一天上市的期权按照行权价格升序的前几个期权的数据,
为什么不能用for循环[size=14.2857151031494px] putfortrade(:,i)=putbytime(:,i);来新建一个只有需要的数据的数组呢?
[size=14.2857151031494px]
若觉得问题抽象,请移步代码如下:
i=1;
n=1;
putfortrade=zeros(89,[]);
if(length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))==1)
[size=14.2857151031494px]%%ipo1(:,1)为上市日期的剩余到期天数, ipo2(:,2)为上市日期所有已上市期权数量的累积值,二者一一对应,if语句时为了判断改日上市的期权的价格是否小于当日现货价格,并计算当日虚值期权的数量,数量=1、<10、<15、>=15时,取不同的数量期权,将从[size=14.2857151031494px]putbytime数组中取出来的列按顺序赋值给[size=14.2857151031494px]putfortrade的每一列,可最后程序报错,说维数不匹配,希望朋友们帮忙看看。
[size=14.2857151031494px]
putfortrade(:,i)=putbytime(:,i);
elseif length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))<10
for j=i:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))-1
putfortrade(:,j)=putbytime(:,2:length(find(putbytime(1,2:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1))));
end
elseif length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))<15
for j=i:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))-5
putfortrade(:,j)=putbytime(:,6:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1))));
end
else for j=i:10
putfortrade(:,j)=putbytime(:,i+4:i+13);
end
end


雷达卡




京公网安备 11010802022788号







