Publié le :
Macro EXTERNE

Macro Sterling_Ratio : Calcul du ratio Sterling

En attente de validation
Cette macro évalue la performance d'un investissement en comparant son rendement annualisé à son risque (défini comme le drawdown maximum absolu + un ajustement, par défaut 10%). Elle nécessite une table de rendements en entrée. Le code dépend de plusieurs autres macros utilitaires non définies ici (%get_number_column_names, %ranname, %return_annualized, %max_drawdown).
Analyse des données

Type : EXTERNE


La macro attend une table SAS existante spécifiée par le paramètre 'returns'. Elle ne crée pas de données elle-même mais transforme les données d'entrée.

1 Bloc de code
MACRO DEFINITION
Explication :
Définition de la macro et de ses paramètres (table d'entrée, échelle, méthode, excès de risque, colonnes). Initialisation des variables locales et génération de noms de tables temporaires aléatoires via %ranname.
Copié !
1%macro Sterling_Ratio(returns,
2 scale= 1,
3 method= DISCRETE,
4 excess = 0.1,
5 dateColumn= DATE,
6 outData= SterlingRatio);
7
8%local vars annualized drawdown i;
9 
10%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn);
11%put VARS IN Sterling_Ratio: (&vars);
12 
13%let annualized= %ranname();
14%let drawdown= %ranname();
15%let i = %ranname();
2 Bloc de code
MACRO CALL Data
Explication :
Appel de macros externes pour calculer le rendement annualisé et le drawdown maximum (perte maximale historique) sur les données d'entrée.
Copié !
1%return_annualized(&returns, scale= &scale, method= &method, dateColumn= &dateColumn, outData= &annualized)
2%max_drawdown(&returns, method= &method, dateColumn= &dateColumn, outData= &drawdown)
3 Bloc de code
DATA STEP Data
Explication :
Ajustement du drawdown calculé : on ajoute la valeur d'excès de risque (par défaut 0.1 soit 10%) à la valeur du drawdown et on prend la valeur absolue. C'est le dénominateur du ratio.
Copié !
1DATA &drawdown(drop=&i);
2 SET &drawdown;
3 array ret[*] &vars;
4 
5 DO &i= 1 to dim(ret);
6 ret[&i]= abs(ret[&i]+&excess);
7 END;
8RUN;
4 Bloc de code
DATA STEP Data
Explication :
Calcul final du ratio Sterling. Le step lit séquentiellement le rendement annualisé puis le drawdown ajusté. La fonction LAG permet de diviser la valeur de la ligne précédente (rendement) par la ligne courante (drawdown).
Copié !
1DATA &outData (drop=&i);
2 SET &annualized &drawdown;
3 
4 array ret[*] &vars;
5 
6 DO &i= 1 to dim(ret);
7 ret[&i]= lag(ret[&i])/ret[&i];
8 END;
9RUN;
5 Bloc de code
DATA STEP Data
Explication :
Finalisation de la table de sortie : ajout d'une colonne descriptive '_STAT_' et conservation uniquement de la dernière ligne contenant le résultat du calcul.
Copié !
1DATA &outData;
2 FORMAT _stat_ $32.;
3 SET &outData END= last;
4 _STAT_= 'Sterling Ratio';
5 IF last;
6RUN;
6 Bloc de code
PROC DATASETS
Explication :
Nettoyage de l'environnement : suppression des tables temporaires créées pour le calcul intermédiaire (annualized et drawdown).
Copié !
1PROC DATASETS lib=work nolist;
2 delete &annualized &drawdown;
3RUN;
4QUIT;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright (c) 2015 by The Financial Risk Group, Cary, NC, USA.


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« Le ratio de Sterling est particulièrement sensible à la période d'observation. Pour une analyse pertinente, assurez-vous que vos données couvrent au moins un cycle de marché complet (incluant une phase de correction majeure), afin que le calcul du Max Drawdown reflète une réalité statistique exploitable pour vos décisions d'investissement. »