楼主: hurley18
1948 1

[SAS EM] proc expand内的movmax计算不同股票的5日后中最高价问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

51%

还不是VIP/贵宾

-

威望
0
论坛币
12 个
通用积分
0.0073
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
143 点
帖子
44
精华
0
在线时间
121 小时
注册时间
2022-1-7
最后登录
2023-10-22

10论坛币
想计算各支股票每日的后面5天、60天、250天内的最大涨幅,假设当日股价nclose,Fmax5即为nclose和后面4天股价的5各数值最大值。想着如果把每支股票日期都倒过来,就能用proc expand的movmax函数;但是遇到问题时该函数把所有股票一起生成TIME排了序,导致不同股票交界时计算错用了其它股票数据。求大神协助如何即可以用proc expandmovmax函数,又能避免不同股票交界的数据混用计算问题。或者数组循环解决
data stock.test3;
  set stock.test;
   proc sort data=stock.test3;
by stockcode descending date;      
run;


proc expand data=stock.test3 Out=Stock.test3 method=none;
   convert nclose = Fmax5 / transformout = (movmax 5);
   convert nclose = Fmin5 / transformout = (movmin 5);

proc sort data=stock.test3 out=stock.test3;
by stockcode date;

run;




最佳答案

HXAI102230 查看完整内容

proc sort data=stock.test out=test; by stockcode descending date; run; proc expand data=test Out=testout method=none; by stockcode; convert nclose = max5_close / transformout = (movmax 5); convert nclose = max60_close / transformout = (movmax 60); convert nclose = max250_close / transformout = (movmax 250); run; proc sort data=testout out=testfinal; by stockcode date; run; ...
关键词:expand ROC max EXP VMA
沙发
HXAI102230 在职认证  发表于 2022-8-25 23:09:54 |只看作者 |坛友微信交流群
proc sort data=stock.test out=test;
  by stockcode descending date;
run;

proc expand data=test Out=testout method=none;
        by stockcode;
        convert nclose = max5_close / transformout = (movmax 5);
        convert nclose = max60_close / transformout = (movmax 60);
        convert nclose = max250_close / transformout = (movmax 250);
run;

proc sort data=testout out=testfinal;
  by stockcode date;
run;

使用道具

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

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

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

GMT+8, 2024-4-20 03:24