楼主: peijiamei
4891 8

[原创博文] 累乘法计算事件收益率请教!sql算法优先 [推广有奖]

已卖:299份资源

学科带头人

75%

还不是VIP/贵宾

-

威望
3
论坛币
26157 个
通用积分
12.7133
学术水平
217 点
热心指数
343 点
信用等级
210 点
经验
75401 点
帖子
1099
精华
1
在线时间
2016 小时
注册时间
2007-11-15
最后登录
2016-3-21

楼主
peijiamei 发表于 2010-8-10 15:56:58 |AI写论文
500论坛币
codedate
120010102
120010103
120010105
120010506
220030201
220030206
220030406

上面的表格是事件数据

code
dateret
1200101010.001
1200101020.011
1200101030.021
1200101040.031
1200101050.041
1200101060.051
1200101070.061
1200101080.071
1200101090.081
1200101100.091
1200105050.101
1200105060.111
1200105070.121
1200105080.131
1200105090.141
1200105100.151
1200105110.161
1200105120.171
1200105130.181
2200302010.191
2200302020.201
2200302030.211
2200302040.221
2200302050.231
2200302060.241
2200302070.251
2200304050.261
2200304060.271
2200304070.281
2200304080.291


上面的表格是收益率数据


codedaterrer(10)
120010102 
120010103 
120010105 
120010506 
220030201 
220030206 
220030406 


现在要计算上面的表格,也就是对每一个事件发生之后10日的累积股票收益率(累积乘法 方法计算)
注意,有的日子里有事件发生但是不是交易日,这样子的情况,需要将事件发生日期顺延到下一个交易日。

在此向SAS版面的各位大牛致以崇高的敬意!
关键词:sql 收益率 coded terre 股票收益率 收益率

回帖推荐

本帖被以下文库推荐

沙发
soporaeternus 发表于 2010-8-10 15:56:59
  1. data a;
  2.         input code date:yymmdd8.;
  3. format date yymmdd10.;
  4. datalines;
  5. 1 20010101
  6. 1 20010103
  7. 1 20010105
  8. 1 20010506
  9. 2 20030201
  10. 2 20030206
  11. 2 20030406
  12. ;
  13. run;

  14. data b;
  15.         input code date:yymmdd8. ret;
  16.         id+1;
  17.         format date yymmdd10.;
  18. datalines;
  19. 1 20010101 0.001
  20. 1 20010102 0.011
  21. 1 20010103 0.021
  22. 1 20010104 0.031
  23. 1 20010105 0.041
  24. 1 20010106 0.051
  25. 1 20010107 0.061
  26. 1 20010108 0.071
  27. 1 20010109 0.081
  28. 1 20010110 0.091
  29. 1 20010505 0.101
  30. 1 20010506 0.111
  31. 1 20010507 0.121
  32. 1 20010508 0.131
  33. 1 20010509 0.141
  34. 1 20010510 0.151
  35. 1 20010511 0.161
  36. 1 20010512 0.171
  37. 1 20010513 0.181
  38. 2 20030201 0.191
  39. 2 20030202 0.201
  40. 2 20030203 0.211
  41. 2 20030204 0.221
  42. 2 20030205 0.231
  43. 2 20030206 0.241
  44. 2 20030207 0.251
  45. 2 20030405 0.261
  46. 2 20030407 0.271
  47. 2 20030408 0.281
  48. 2 20030409 0.291
  49. ;
  50. run;

  51. proc sql;
  52.         create table c as
  53.                 select
  54.                         a.*
  55.                         ,min(b.date) as evt_date format=yymmdd10.
  56.                         ,min(b.id) as evt_id
  57.                 from a a
  58.                 inner join b b
  59.                 on a.code=b.code
  60.                         and a.date<=b.date
  61.                 group by
  62.                         a.code
  63.                         ,a.date
  64.         ;
  65. quit;

  66. proc sql;
  67.         create table d as
  68.                 select
  69.                         a.*
  70.                         ,exp(sum(log(b.ret))) as rrer label='rrer(10)'
  71.                 from c as a
  72.                 inner join b as b
  73.                 on a.code=b.code
  74.                         and b.id-a.evt_id between 0 and 9
  75.                 group by
  76.                         a.code
  77.                         ,a.date
  78.                         ,a.evt_date
  79.                         ,a.evt_id
  80.                 ;
  81. quit;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 我很赞同
peijiamei + 2 对于大型数据,这个程序运行不是一般的慢呀

总评分: 学术水平 + 1  热心指数 + 3  信用等级 + 1   查看全部评分

Let them be hard, but never unjust

藤椅
soporaeternus 发表于 2010-8-10 21:24:17
做join的话肯定慢的,不知道楼主多少量的数据啊,时间多少,交易日流水有多少啊
已有 1 人评分热心指数 收起 理由
peijiamei + 1 如果ret本身存在负数的话,那么这个方法是不是就不可行了?

总评分: 热心指数 + 1   查看全部评分

Let them be hard, but never unjust

板凳
peijiamei 发表于 2010-8-11 13:12:45
交易日是股市10年的数据
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

报纸
soporaeternus 发表于 2010-8-11 14:45:45
1K股票*2K交易日大约200万条数据?
事件日不是太多1K左右的话,不会太慢吧
Let them be hard, but never unjust

地板
peijiamei 发表于 2010-8-11 15:58:53
事件日是几万的数据量
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

7
peijiamei 发表于 2010-8-11 16:01:15
可能是由于我的电脑问题,前面生成了大量的sas数据集,导致运行过慢,而不是程序的原因
我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

8
soporaeternus 发表于 2010-8-11 16:34:41
我一个类似的语句,百万数据的事件连接百万数据的交易流水,简单的case when+sum聚合 PC跑是大约半小时
连接条件也有大小于.......
不知道了......
已有 1 人评分热心指数 收起 理由
peijiamei + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

Let them be hard, but never unjust

9
redsunofchina 发表于 2010-8-12 14:18:55
非常感谢lz的慷慨

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

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