楼主: peijiamei
7950 7

请假SAS高手,如何计算日收益率? [推广有奖]

已卖:299份资源

学科带头人

75%

还不是VIP/贵宾

-

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

楼主
peijiamei 发表于 2010-3-27 15:37:41 |AI写论文
1000论坛币
数据类型
公司        日期           收盘价
1            19940101      1
1            19940102      5
1            19940103     6
2           19940101      1
2            19940102      5
2           19940103      6

收益率价格计算方法是,(当天收盘价格-昨日收盘价格)/昨日收盘价格

谢谢大家!

最佳答案

jingju11 查看完整内容

PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN; DATA B; SET A; BY COMPANY; DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.); LAGprice = LAG(PRICE); DIF_date_1 = DIF(DATE_1); DIF_price = DIF(PRICE); IF (NOT FIRST.company) THEN IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice; DROP LAG: DIF: DATE_1; RUN;
关键词:日收益率 收益率 计算方法 数据类型 收盘价 高手 SAS 收益率 请假

回帖推荐

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

PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN; DATA B; SET A; BY COMPANY; DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.); LAGprice = LAG(PRICE); DIF_date_1 = DIF(DATE_1); DIF_price = DIF(PRICE); IF (NOT FIRST.company) THEN IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice; DROP LAG: DIF: DATE_1; RUN;

crackman 发表于3楼  查看完整内容

data crackman; input company date price@; cards; 1 19940101 1 1 19940102 6 1 19940103 7 2 19940101 1 2 19940102 5 2 19940103 6 ; run; proc sort data=crackman out=crackman; by company date; run; proc transpose out=crackman1(drop=_name_); var price; by company; id date; run; data result; ...

本帖被以下文库推荐

我的微博:http://t.sina.com.cn/1087192374
欢迎互相加关注!

沙发
jingju11 发表于 2010-3-27 15:37:42
PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN;

DATA B;
   SET A; BY COMPANY;
   DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.);
   LAGprice = LAG(PRICE);
   DIF_date_1 = DIF(DATE_1);
   DIF_price = DIF(PRICE);
   IF (NOT FIRST.company) THEN
      IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice;

   DROP LAG: DIF: DATE_1;
RUN;

藤椅
crackman 发表于 2010-3-27 17:34:28
data crackman;
input company date price@;
cards;
1            19940101      1
1            19940102      6
1            19940103     7
2           19940101      1
2            19940102      5
2           19940103      6

;
run;
proc sort data=crackman out=crackman;
by company date;
run;
proc transpose out=crackman1(drop=_name_);
var price;
by company;
id date;
run;
data result;
set crackman1;
array date _19940101-_19940103;
rate1=put(((date(2)/date(1))-1)*100,F8.2)||'%';
rate2= put(((date(3)/date(2))-1)*100,F8.2)||'%';
proc print;
run;
已有 2 人评分经验 论坛币 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
peijiamei + 100 + 1 精彩帖子

总评分: 经验 + 3  论坛币 + 103  热心指数 + 1   查看全部评分

板凳
crackman 发表于 2010-3-27 17:35:17
抛砖引玉啊
希望有人能写出宏来
思路都差不多
期待高手写出更好的程序让我学习学习

报纸
viterbi 发表于 2010-3-27 19:57:22
data a;
input company date price@;
cards;
1            19940101      1
1            19940102      6
1            19940103     7
2           19940101      1
2            19940102      5
2           19940103      6

;
run;

data b;
set a;
by company;
price_lag=lag(price);

if not first.company then rate=(price-price_lag)/price_lag;
else rate=.;
run;

地板
pan1111111 发表于 2010-3-30 01:49:47
如果有1000家公司怎么算?

7
saicc 发表于 2011-10-19 13:13:59

8
可~乐 发表于 2011-10-20 23:27:28
data a;
input number date price;
cards;
1            19940101      1
1            19940102      5
1            19940103     6
2           19940101      1
2            19940102      5
2           19940103      6
;

data b;
        set a;
        by number;
        dif_price=dif(price);lag_price=lag(price);
        if first.number then rate=.;
            else rate=dif_price/lag_price;
run;

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

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