SAS: desviación estándar en ventana móvil no fija
Creo que publiqué una pregunta similar antes. Pero esta vez estoy luchando con la identificación de datos.
Mis datos se ven como
date Stock value standard_deviation
01/01/2015 VOD 18 ...
01/01/2015 VOD 15 ...
01/01/2015 VOD 5 ...
03/01/2015 VOD 66 ...
03/01/2015 VOD 7 ...
04/01/2015 VOD 19 ...
04/01/2015 VOD 7 ...
05/01/2015 VOD 3 ...
06/01/2015 VOD 7 ...
..... ... ... ...
01/01/2015 RBS 58 ...
01/01/2015 RBS 445 ...
01/01/2015 RBS 44 ...
03/01/2015 RBS 57 ...
Necesito calcular la media móvil / desviación estándarpara cada acción basado en (-3, + 3) días de negociación.
Como esos son días de negociación (no días calendario), y hay un número diferente de transacciones en cada día, creé una subconsulta y apliqué el siguiente código.
data want;
set input;
by date;
retain gdate;
if first.date then gdate+1;
run;
proc sort data=want; by stock gdate ; run;
proc sql;
create table want1 as
select
h.stock,
h.date,
h.value,
( select std(s.value) from want s
where h.gdate between s.gdate-2 and s.gdate+2) as std
from
want h
group by stock;
quit;
Lo intentégroup by stock
. Sin embargo, el códigoignoré al grupo bursátil y solo me dio el estándar móvil de todo el período. Necesito el std móvilpara diferentes stocks.
¿Alguien me puede dar alguna idea? Gracias !