楼主: air320322
1230 7

[有偿编程] 求季度股票建仓成本 [推广有奖]

  • 4关注
  • 0粉丝

讲师

81%

还不是VIP/贵宾

-

威望
0
论坛币
11536 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3829 点
帖子
242
精华
0
在线时间
988 小时
注册时间
2005-5-28
最后登录
2022-3-5

50论坛币
原表格:所有股票的每日交易数据

Stock_code   stock_name        dt                          cp     vol
000001       深发展          03APR1991:00:00:00       49    1000
000001       深发展          04APR1991:00:00:00       48    2000
……
000001       深发展          13FEB2012:00:00:00       48    2000
000002       万科            29JAN1991:00:00:00       15    3000
000002       万科            30JAN1991:00:00:00       17    4000
……
000002       万科            13FEB2012:00:00:00       17    4000

……


新表格:求所有股票的季度建仓成本
股票的建仓成本cost等于股票每个季度  的  cost=(∑cp*vol)/ ∑vol
Stock_code   stock_name     dt                           cost
000001       深发展          1 st 1991                      5.3
000001       深发展          2st1991                        5.6
000001       深发展          3st1991                        5.8
000001       深发展          4st1991                        5.8
…….
000001       深发展          1 st 2012                       5.8
000002       万科             1 st 1991                       5.3
……
000002       万科            1 st 2012                       5.8
……

小弟不会截取季度数据,求各位帮忙
谢谢了先

最佳答案

zhangzachary 查看完整内容

假设a 是你的数据,res 为结果:
关键词:Stock 日交易数据 stoc tock Cost 股票 成本

回帖推荐

zhangzachary 发表于2楼  查看完整内容

假设a 是你的数据,res 为结果:
不明真相的群众
沙发
zhangzachary 发表于 2012-2-14 11:34:12 |只看作者 |坛友微信交流群
假设a 是你的数据,res 为结果:
  1. data b;
  2. set a;
  3. yy=year(datepart(dt));
  4. quarter=qtr(datepart(dt));
  5. run;

  6. proc sql noprint;
  7. create table res as
  8. select stock_code, stock_name, yy, quarter, sum(cp*vol)/sum(vol) as cost
  9. from b
  10. group by stock_code, stock_name, yy, quarter
  11. order by stock_code, stock_name, yy, quarter
  12. ;
  13. quit;
复制代码
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

藤椅
air320322 发表于 2012-2-14 14:15:51 |只看作者 |坛友微信交流群
出现两处错误
1、yy=year(dt)返回的是空值
必须要用yy=year(datepart(dt));

2、594  group by stock_code stock_name yy quarter
                         ----------
                         22
                         202
ERROR 22-322: 语法错误,期望下列之一: ;, !, !!, &, (, *, **, +, ',', -, '.', /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
              CONTAINS, EQ, EQT, EXCEPT, GE, GET, GT, GTT, HAVING, IN, INTERSECT, IS, LE, LET, LIKE, LT, LTT, NE, NET,
              NOT, NOTIN, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~, ~=.

ERROR 202-322: 该选项或参数不可识别,将被忽略。

不明真相的群众

使用道具

板凳
air320322 发表于 2012-2-14 14:16:48 |只看作者 |坛友微信交流群
我给出我现在运行符合我期望的程序供大家分享

PROC SQL;
CREATE TABLE STOCK AS
SELECT        Stock_code,stock_name,year(datepart(dt))*100+qtr(datepart(dt)) AS TradeQuarter,cp,vol
FROM STOCK;
QUIT;
               
PROC SQL;
CREATE TABLE STOCK AS
SELECT distinct Stock_code,stock_name,TradeQuarter,SUM(cp*vol)/SUM(vol) as cost
FROM STOCK       
GROUP BY Stock_code,TradeQuarter;
QUIT;
不明真相的群众

使用道具

报纸
air320322 发表于 2012-2-14 14:17:46 |只看作者 |坛友微信交流群
zhangzachary
还是要谢谢你,您每次的回答都非常及时,很有帮助

我现在也知道怎么给你金币了
不明真相的群众

使用道具

地板
air320322 发表于 2012-2-14 14:25:49 |只看作者 |坛友微信交流群
to:zhangzachary

group by stock_code stock_name yy quarter


这句几个变量之间少几个逗号,加上就OK了
不明真相的群众

使用道具

7
zhangzachary 发表于 2012-2-14 14:28:48 |只看作者 |坛友微信交流群
air320322 发表于 2012-2-14 14:25
to:zhangzachary

group by stock_code stock_name yy quarter
嗯对,不好意思,这个dataset我没有建立,所以没有测试程序…… 是漏掉了逗号。。我sql用得不熟,data step里一般变量名之间都是空格,所以用的有点习惯,这个失误了,不好意思啊~
我还要谢谢你提醒我在处理datetime格式的数据要先用datepart后才能提取year和qtr呢~
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

8
air320322 发表于 2012-2-14 14:39:48 |只看作者 |坛友微信交流群
你的回答已经很给力了

没有数据集,是容易犯错误的
不明真相的群众

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 09:27