2195 7

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

  • 1关注
  • 0粉丝

博士生

26%

还不是VIP/贵宾

-

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

楼主
无线电波全息学 学生认证  发表于 2020-11-29 20:12:28 |AI写论文
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个,不需要修改

地板
无线电波全息学 学生认证  发表于 2020-12-1 09:26:05
缘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
拉您进交流群
GMT+8, 2025-12-20 01:32