全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2923 13
2011-09-21
类似之前提过的问题,现有6个投资组合(portfolio) 共十年daily的收益, 例子如下:
date                 portfolio        收益
19910101              0           0.001
19910101              1           0.123
19910101              2           -0.024
19910101              3           0.0013
19910101              4           0.144
19910101              5           -0.003
19910101              6           0.094

19910102              0            0.0038
19910102              1             0.008
19910102              2             0.007
19910102              3             0.006
19910102              4            -0.007
19910102              5             -0.005
19910102              6            0.002

19910103              0            0.002
19910103              1            0.0435
19910103              2            0.0054
19910103              3            0.0535
19910103              4            0.0432
19910103              5            0.0236
19910103              6           0.0877
                           .
                           .

20011231              0             0.008
20011231              1             0.007
20011231              2             0.006
20011231              3            -0.007
20011231              4            -0.005
20011231              5             0.003
20011231              6             0.001
现想做如下运算:对于十年中的每一天,分别计算portfolio1+portfolio2收益的平均值以及portfolio5+portfolio6的收益平均值,然后再用portfolio5,6的平均值减去portfolio1,2的平均值。
拿20011231这天做例子:计算 [(0.003+0.001)/2] - [(0.007+0.006)/2]
十年每一天同样的计算,不知应该如何编写程序,请教高手指点,谢谢!!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-9-21 05:01:28
在stata下 (其他软件应该差不多吧)

建立8个变量
1.第一个变量是date
2.后七个分别是 K0 至 K6 分别代表 当portfolio==0时的收益 当portfolio==1时的收益 ...当portfolio==6时的收益.

生成一个新变量 Result=[(K6+K7)/2 - (K1+K2)/2)]

新变量result就是你需要的结果
二维码

扫码加我 拉你入群

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

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

2011-9-21 05:52:46
blue_wind777 发表于 2011-9-21 05:01
在stata下 (其他软件应该差不多吧)

建立8个变量
stata不是很熟悉 希望还是能用sas来完成
二维码

扫码加我 拉你入群

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

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

2011-9-21 06:33:19
sherrysmile 发表于 2011-9-21 05:52
stata不是很熟悉 希望还是能用sas来完成
sas我不熟 但是我觉得原理应该差不多吧?
二维码

扫码加我 拉你入群

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

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

2011-9-21 08:34:56
使用函数来实现这个功能,然后不断使用这个函数,知道所有数据处理完成
比如用matlab的做法就是:

function dayAvgRet=dayAvg(dayData)
% matlab中每行第一个百分号表示这一行是注释语句
% 输出变量 dayAvgRet 就是楼主想要的结果
% dayData为输入变量,格式为每一天数据,正如楼主所给的那些数据格式,如20011231这天的格式是:
% 20011231              0             0.008
% 20011231              1             0.007
% 20011231              2             0.006
% 20011231              3            -0.007
% 20011231              4            -0.005
% 20011231              5             0.003
% 20011231              6             0.001

% 然后假设从dayData中取出1、2、5、6收益(率)数据分别存到p1、p2、p5、p6这四个变量中。dayData不同的数据格式取的方式不一样,所以就没写具体方式
dayAvgRet= ((p5+p6)/2) - ((p1+p2)/2);
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


这样函数就编完了,之后吧不断重复调用这个函数就可以了,每次输入一天的数据,然后将得到的输出dayAvgRet保存在一列向量中就可以了
二维码

扫码加我 拉你入群

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

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

2011-9-21 08:44:53
proc sql;
select date,avg(case when portfolio in(1,2) then 收益 end)-avg(case when portfolio in(5,6) then 收益 end) return1 from dataa where portfolio in (1,2,5,6) group by date;
run;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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