【问题标题】:SAS: Calculating rolling skew of previous 30 daysSAS:计算前 30 天的滚动偏差
【发布时间】:2026-01-28 19:55:01
【问题描述】:

我想滚动计算前 30 天的时间序列(股票收益)的偏差(从而获得每日价值)。

数据集如下:

Stock   date    month   year    return
1SF7    1/07/2016   7   2016    0.94
1SF7    5/07/2016   7   2016    0.91
1SF7    6/07/2016   7   2016    0.82
1SF7    7/07/2016   7   2016    0.95

.......

目前,我尝试了 proc 方法,只计算月末偏度

            proc means data=have; by year month;
                output out= want (drop= _freq_ _type_ ) skew(return)=Skew_monthly; 
            run;

有人对滚动偏度有想法吗?我知道这里有一个问题要求滚动偏度,但该问题的答案每 30 天只输出一个值,但我想要每日值。

感谢您的任何意见! 马克

【问题讨论】:

标签: sas proc skew


【解决方案1】:

谢谢,我用数组版本管理它:

data want; array p{0:29} _temporary_;
    set have; by symbol;
        if symbol then call missing(of p{*});
            p{mod(_n_,30)} = return;
                skew = skewness(of p{*});
run;

【讨论】:

  • 我不确定 IF 语句是否正确。请务必仔细检查您的答案。如果期望它是 FIRST.Symbol ...
  • Reezea,你说得对。这是第一个符号。谢谢!