1595 7

[实际应用] 求帮忙看下这个公式怎么用程序实现?涉及权重按时间序列衰减累乘的加权平均计算 [推广有奖]

  • 1关注
  • 0粉丝

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
1147 个
通用积分
4.4779
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
290 点
帖子
33
精华
0
在线时间
453 小时
注册时间
2015-7-26
最后登录
2024-4-12

30论坛币
表格只是举个周期为4日(公式中为100日)的例子。公式中V对应表格里的换手率,P为成交均价换手率权重就是公式中间括号里的,t-1期就是当天换手率,t-2期是当天换手率与(1-“t-1期换手率”)的乘积,t-3期是当天换手率与(1-“t-2期换手率”)、(1-“t-1期换手率”)的乘积,以此类推。。。
k是固定窗口期内单期换手率权重的加总求和(目的是为了保证权重和为1)。最终想要的结果,就是这个RP,但不是只有最近一个交易日的RP,而是每个交易日向前滚动100个交易日窗口计算的RP形成时间序列数据。
图片1.png

图片2.png
求大神们给段程序代码,能实现这个公式的,先行谢过!

关键词:时间序列 求帮忙 程序代码 换手率 窗口期
沙发
缘oO来如此0o 发表于 2020-11-30 17:33:49 |只看作者 |坛友微信交流群
归一化的换手率权重  是 ? 怎么计算的,没看明白。

data a;
        id=1;dt =mdy(11,1,2020);cj=48;sp=50;hsl=0.0200;output ;
        id=1;dt =mdy(11,2,2020);cj=49;sp=51;hsl=0.0800;output ;
        id=1;dt =mdy(11,3,2020);cj=52;sp=52;hsl=0.0050;output ;
        id=1;dt =mdy(11,4,2020);cj=51;sp=55;hsl=0.0100;output ;
run;


data b;
        retain tmp1;
        set a;
        by id dt;
        if first.id then do;
                hslqz=hsl;
                tmp1=1-hsl;
        end;
        else do;
                hslqz = hsl * tmp1;
                tmp1=tmp1*(1-hsl);
        end;


        hslqz =round(hslqz,0.0001);
        drop tmp1;
        format dt yymmdd10.;
run;


就算到换手率权重吧。

使用道具

藤椅
无线电波全息学 学生认证  发表于 2020-11-30 21:08:03 |只看作者 |坛友微信交流群
缘oO来如此0o 发表于 2020-11-30 17:33
归一化的换手率权重  是 ? 怎么计算的,没看明白。

data a;
谢谢。
但有一处小问题,我其实表里4行数字就是举个计算的例子,实际是想要一个更一般化的结果,能算100个交易日滚动窗口期的,我应该怎么修改呢?

使用道具

板凳
无线电波全息学 学生认证  发表于 2020-11-30 23:17:27 |只看作者 |坛友微信交流群
缘oO来如此0o 发表于 2020-11-30 17:33
归一化的换手率权重  是 ? 怎么计算的,没看明白。

data a;
还有个问题,日期应该是倒着的,该怎么处理?

使用道具

报纸
缘oO来如此0o 发表于 2020-12-1 09:15:26 来自手机 |只看作者 |坛友微信交流群
无线电波全息学 发表于 2020-11-29 20:12
表格只是举个周期为4日(公式中为100日)的例子。公式中V对应表格里的换手率,P为成交均价。换手率权重就是 ...
100个,不需要修改

使用道具

缘oO来如此0o 发表于 2020-12-1 09:15
100个,不需要修改
数据不止这么点,700多万行,我是想以100个交易日为窗口滚动操作,程序里怎么划定窗口啊?还有个问题,日期是倒序的,就是我是要向前追溯,您这个程序是向后的,这个怎么处理?

使用道具

7
缘oO来如此0o 发表于 2020-12-1 21:28:13 |只看作者 |坛友微信交流群
无线电波全息学 发表于 2020-12-1 09:26
数据不止这么点,700多万行,我是想以100个交易日为窗口滚动操作,程序里怎么划定窗口啊?还有个问题,日 ...
proc sort data=in out=out ;by 主键 日期;run;

100个交易日滚动操作,也就是不管主键?  那你加个参数  if mod(_N_/100) =0 then do;  代替那个。


再不行你发我一段数据看。maning_90@163.com

使用道具

8
无线电波全息学 学生认证  发表于 2020-12-2 22:24:08 |只看作者 |坛友微信交流群
缘oO来如此0o 发表于 2020-12-1 21:28
proc sort data=in out=out ;by 主键 日期;run;

100个交易日滚动操作,也就是不管主键?  那你加个参数 ...
数据发您了,感谢感谢

使用道具

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

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

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

GMT+8, 2024-4-30 19:32