全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2207 5
2011-03-16
有一只股票的初始价格(initial_price)和每天的收益率(ret)。现在想从推算出股票每天的价格。

具体算法为:
第1天:Want_1 = initial_price * (1+ret_1) 【注:Want_1是第1天的WANT,ret_1是第1天的ret。】
第2天:Want_2 = want_1 * (1+ret_2)
第3天:Want_3 = want_2 * (1+ret_3)
以此类推

请问SAS如何编程?



Dateretinitial_priceWANT
0
1010
10.01
10.1
20.02
10.302
30.03
10.61106
40.04
11.0355
50.05
11.58728
60.06
12.28251
70.07
13.14229
二维码

扫码加我 拉你入群

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

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

全部回复
2011-3-16 21:36:32
用IML解决了。继续求data解决方案。

IML大致如下:

total = nrow(ret);
count_ret = sum(ret^=.);

do i = count_ret to total;
  want[i,]=want[i-1,]/(1+ret[i,]);
end;
二维码

扫码加我 拉你入群

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

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

2011-3-16 22:20:31
你那支股票很牛嘛,每天都上升?
二维码

扫码加我 拉你入群

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

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

2011-3-16 22:24:51
k231251727 发表于 2011-3-16 22:20
你那支股票很牛嘛,每天都上升?
不光是上升,收益率还是线性增长滴
二维码

扫码加我 拉你入群

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

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

2011-3-16 23:17:51
这个可用,就是不知道效率如何。

edit:怎么我copy过来缩进都没有了……郁闷。

data test;
    input Date ret initial_price;
    datalines;
0 .    10
1 0.01 .
2 0.02 .
3 0.03 .
4 0.04 .
5 0.05 .
6 0.06 .
7 0.07 .
    ;
run;

data
result;
    set test;
    if _n_=1 then do;
        want=initial_price;
    end;
run;

%macro
calc;
    proc sql noprint;
        select count(*)-
1
        into :count_ret
        from test;
        %do i=1 %to &count_ret;
            select want into :last_want from result
            where date=
%eval(&i-1);
            update result
            set want=
%sysevalf(&last_want)*(1+ret)
            where date=&i;
        %end;
    quit;
%mend calc;
%calc
二维码

扫码加我 拉你入群

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

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

2011-3-17 00:47:42
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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