全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3738 9
2011-06-25
悬赏 8 个论坛币 已解决

ID date     time     price
AA 20090112           100
AA 20090116           99
AA 20090211
BB
BB
BB
CC
CC
余下形式与第一列举例类似,观测值有上百万个。我如何能实现对债券分组计算呢?比如说按照ID分组,我要先计算AA在一月每天的return=P_t-P_t-1/P_t-1,然后计算AA在2009年1月的的平均return,要对每个月都计算,怎样用一个命令实现对所有的债券分别计算并生成新变量呢?

最后就是怎么筛选数据使得在一个月内有观测值至少在3个以上啊?
多谢!!!!!

最佳答案

nectar 查看完整内容

尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。 proc sort data=yourdata; by id date time; /*提取每个股票最后一笔价格,视其为每日收盘价格*/ data yourdata1; set yourdata; by id date time; if last.date; year=year(date); month=month(date); lag_price=lag(price); if first.id then ...
二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-25 13:18:53
尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。

proc sort data=yourdata;
by id date time;

/*提取每个股票最后一笔价格,视其为每日收盘价格*/
data yourdata1;
set yourdata;
by id date time;
if last.date;
year=year(date);
month=month(date);
lag_price=lag(price);
if first.id then lag_price=.;
return=(price/lag_price)-1;

proc sort data=yourdata1;
by id year month date;

proc means data=yourdata1 noprint mean;
var return;
by id year month;
output out=results(drop=_type_  _freq_) mean(return)=avg_monthly_return n(return)=num_freq;

/*选择每个样本观测值在每个月大于等于3*/
data results;
set results;
if num_freq>=3;
run;
二维码

扫码加我 拉你入群

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

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

2011-6-25 13:24:23
呵呵,简单的你要是会ACCESS在上面的条件查询就ok了。或者是在excel处理,在在eviews上分组计算。
二维码

扫码加我 拉你入群

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

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

-->
高什么频啊
数据发国来看看,邮件联系。
二维码

扫码加我 拉你入群

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

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

2011-6-25 15:31:40
nectar 发表于 2011-6-25 14:17
尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。

proc sort data=yourdata;
by id date time;

/*提取每个股票最后一笔价格,视其为每日收盘价格*/
data yourdata1;
set yourdata;
by id date time;
if last.date;
year=year(date);
month=month(date);
lag_price=lag(price);
if first.id then lag_price=.;
return=(price/lag_price)-1;

proc sort data=yourdata1;
by id year month date;

proc means data=yourdata1 noprint mean;
var return;
by id year month;
output out=results(drop=_type_  _freq_) mean(return)=avg_monthly_return n(return)=num_freq;

/*选择每个样本观测值在每个月大于等于3*/
data results;
set results;
if num_freq>=3;
run;
您好。也许是我之前的表述有问题。我要求我的return=(P_{i,j,t}/P_{i,j,t-1})-1。i为bond i, j 为day j, t为month t.
您能否帮我再看一下。
二维码

扫码加我 拉你入群

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

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

2011-6-25 20:44:49
要想深究,建议楼主像kuhasu请教下。
二维码

扫码加我 拉你入群

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

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

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

分享

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