全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 金融工程(数量金融)与金融衍生品
3216 0
2014-12-10
原始数据为数组  putbytime(89*199)putbytime(1,:)放置的是相同到期日卖权的行权价格(升序排列)
putbytime(2:89,:)放置的是89日的199个卖权的价格(如果没上市则价格为0)
如图:
捕获.PNG
7.21日上市43个期权,7.23日上市38个期权,下图左栏为剩余到期天数/365,右栏为当日上期的期权数量
捕获1.PNG

现在,我只需要同一天上市的期权按照行权价格升序的前几个期权的数据,

为什么不能用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


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群