Publicado el :

Cálculo del Índice de Dolor (Pain Index)

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta macro calcula el índice de dolor, definido como el promedio de los 'drawdowns' (caídas acumuladas) durante el período de análisis. Difiere del Ulcer Index porque los drawdowns no se elevan al cuadrado, y del drawdown promedio porque el denominador es el número total de observaciones. Depende de las macros externas %get_number_column_names, %ranname y %drawdowns.
Análisis de datos

Type : EXTERNE


Los datos se proporcionan a través del parámetro de macro 'returns'. El procesamiento también depende de macros utilitarias externas.

1 Bloque de código
MACRO DEFINITION
Explicación :
Definición de la macro, declaración de variables locales e inicialización de nombres de tablas temporales a través de %ranname. Recuperación de columnas numéricas a través de %get_number_column_names.
¡Copiado!
1%macro pain_index(returns,
2 method= DISCRETE,
3 dateColumn= DATE,
4 outData= painindex);
5
6%local vars drawdown stat_mean i;
7 
8%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn);
9%put VARS IN Pain_Index: (&vars);
10 
11%let drawdown= %ranname();
12%let stat_mean= %ranname();
13%let i = %ranname();
2 Bloque de código
MACRO CALL Data
Explicación :
Llamada a la macro externa %drawdowns para calcular las series de drawdowns iniciales.
¡Copiado!
1%drawdowns(&returns, method= &method, dateColumn= &dateColumn, outData= &drawdown)
3 Bloque de código
DATA STEP Data
Explicación :
Transformación de los datos: eliminación de la primera observación y toma del valor absoluto de los drawdowns para el cálculo de la media.
¡Copiado!
1DATA &drawdown(drop=&i);
2 SET &drawdown(firstobs=2);
3 array ret[*] &vars;
4 
5 DO &i= 1 to dim(ret);
6 ret[&i]= abs(ret[&i]);
7 END;
8RUN;
4 Bloque de código
PROC MEANS Data
Explicación :
Cálculo de la media de los drawdowns (valores absolutos) para obtener el Índice de Dolor.
¡Copiado!
1 
2PROC MEANS
3DATA= &drawdown mean noprint;
4OUTPUT out= &stat_mean mean=;
5RUN;
6 
5 Bloque de código
DATA STEP Data
Explicación :
Formato de la tabla de salida final, añadiendo una etiqueta '_STAT_'.
¡Copiado!
1DATA &outData (keep=_stat_ &vars);
2FORMAT _STAT_ $32.;
3 SET &stat_mean;
4 _STAT_= 'Pain Index';
5RUN;
6 Bloque de código
PROC DATASETS
Explicación :
Limpieza de las tablas temporales generadas y fin de la macro.
¡Copiado!
1PROC DATASETS lib=work nolist;
2 delete &drawdown &stat_mean;
3RUN;
4QUIT;
5 
6%mend;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright (c) 2015 by The Financial Risk Group, Cary, NC, USA.