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é !
%macro Sterling_Ratio(returns,
scale= 1,
method= DISCRETE,
excess = 0.1,
dateColumn= DATE,
outData= SterlingRatio);
%local vars annualized drawdown i;
%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn);
%put VARS IN Sterling_Ratio: (&vars);
%let annualized= %ranname();
%let drawdown= %ranname();
%let i = %ranname();
Explication : Appel de macros externes pour calculer le rendement annualisé et le drawdown maximum (perte maximale historique) sur les données d'entrée.
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é !
data &drawdown(drop=&i);
set &drawdown;
array ret[*] &vars;
do &i= 1 to dim(ret);
ret[&i]= abs(ret[&i]+&excess);
end;
run;
1
DATA &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;
8
RUN;
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é !
data &outData (drop=&i);
set &annualized &drawdown;
array ret[*] &vars;
do &i= 1 to dim(ret);
ret[&i]= lag(ret[&i])/ret[&i];
end;
run;
1
DATA &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;
9
RUN;
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é !
data &outData;
format _stat_ $32.;
set &outData end= last;
_STAT_= 'Sterling Ratio';
if last;
run;
1
DATA &outData;
2
FORMAT _stat_ $32.;
3
SET &outData END= last;
4
_STAT_= 'Sterling Ratio';
5
IF last;
6
RUN;
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).
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.
« 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. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.