楼主: xiaochun_2000
3099 7

[求助]怎样用SAS把日回报转换为周回报 [推广有奖]

  • 0关注
  • 0粉丝

本科生

25%

还不是VIP/贵宾

-

威望
0
论坛币
77 个
通用积分
0.7720
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
990 点
帖子
114
精华
0
在线时间
30 小时
注册时间
2007-8-28
最后登录
2025-10-9

楼主
xiaochun_2000 发表于 2008-2-1 07:54:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在有一系列日回报数据,

19260102    0.001533742
19260104    -0.004594181
19260105    0.001538462
19260106    0.002304148
19260107    0.009578544
19260108    0.020113852
19260109    0.017485119
19260111    -0.001462523
19260112    0.015378982
19260113    -0.016227912
19260114    -0.008797654
19260115    -0.008505917
19260116    0.001118986
19260118    0.000745157

现在要把日回报转换为周回报。请问用SAS怎么转换?希望提供程序。

谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:SAS 回报

回帖推荐

lili83xu 发表于7楼  查看完整内容

data test;                                                                  ...

本帖被以下文库推荐

沙发
losttemple 发表于 2008-2-1 08:49:00

周一回报,还是这个周的平均值回报

藤椅
xiaochun_2000 发表于 2008-2-1 12:17:00
谢谢你的回复。

这指的是一周的回报,就是rw=(1+r1)(1+r2)...(1+rn)-1.n 是一周的交易日总数。这个问题首先是利用第一列的日期来判断一周的开始和结束,然后再累乘。我初学SAS,不知道该怎么编这个程序。

板凳
losttemple 发表于 2008-2-1 13:52:00
weekday这个函数可以得到星期几

报纸
zzheng722 发表于 2008-2-2 11:11:00

**你需要用 week() function,把 days  分成几大组, 再求平均值.***;

data a;
input days: yymmdd10. return;
format days yymmdd10.;
cards;
19260102    0.001533742
19260104    -0.004594181
19260105    0.001538462
19260106    0.002304148
19260107    0.009578544
19260108    0.020113852
19260109    0.017485119
19260111    -0.001462523
19260112    0.015378982
19260113    -0.016227912
19260114    -0.008797654
19260115    -0.008505917
19260116    0.001118986
19260118    0.000745157
;
run;
proc print data=a;
run;

data b;
set a;
weeks=week(days);
run;
proc print data=b;
run;

proc means data=b;
class weeks;
var return;
run;

地板
carter123 发表于 2008-2-3 19:15:00
哪个高手来解决下这事情,楼上朋友只能算出平均周回报,不能算累积周收益的啊!我研究好久,弄不出来!

7
lili83xu 发表于 2008-2-6 18:47:00
data test;                                                                                                                             
input days: yymmdd10. return;                                                                                                          
format days yymmdd10.;                                                                                                                 
cards;                                                                                                                                 
19260102    0.001533742                                                                                                                
19260104    -0.004594181                                                                                                               
19260105    0.001538462                                                                                                                
19260106    0.002304148                                                                                                                
19260107    0.009578544                                                                                                                
19260108    0.020113852                                                                                                                
19260109    0.017485119                                                                                                                
19260111    -0.001462523                                                                                                               
19260112    0.015378982                                                                                                                
19260113    -0.016227912                                                                                                               
19260114    -0.008797654                                                                                                               
19260115    -0.008505917                                                                                                               
19260116    0.001118986                                                                                                                
19260118    0.000745157                                                                                                                
;                                                                                                                                      
run;                                                                                                                                   
proc sort;                                                                                                                             
      by days;                                                                                                                         
run;                                                                                                                                   
                                                                                                                                       
data test1;                                                                                                                            
      set test;                                                                                                                        
      lr=log(return+1);clr+lr;                                                                                                         
      weeks=intck('week','02jan1926'd,days)+1;                                                                                         
                                                                                                                                       
run;                                                                                                                                   
                                                                                                                                       
data test2(keep=days weeks wr);                                                                                                        
      set test1;                                                                                                                       
      index=last.weeks;                                                                                                                
            by weeks;                                                                                                                  
        if index=1;                                                                                                                    
      dif=dif(clr);                                                                                                                    
      if dif=. then wr=clr;                                                                                                            
      else wr=dif;                                                                                                                     
      wr=exp(wr)-1;                                                                                                                    
run;                                                                                                                                   
                                                                                                                                       
proc print data=test2;                                                                                                                 
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

8
carter123 发表于 2008-2-8 02:17:00

非常感谢这位兄台

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 15:14