Publié le :
Macro EXTERNE

Calcul du Ratio de Sharpe (Macro)

En attente de validation
Cette macro calcule le ratio de Sharpe pour évaluer la performance d'un actif ajustée au risque. Elle nécessite un jeu de données de rendements et un taux sans risque (valeur fixe ou variable). Le script s'appuie sur des macros auxiliaires non définies ici (%return_excess, %Standard_Deviation, %get_number_column_names, %ranname) pour le calcul des excès de rendement et de l'écart-type (volatilité). Le calcul final divise la moyenne des excès de rendement par leur écart-type via une étape DATA utilisant la fonction LAG.
Analyse des données

Type : EXTERNE


Les données financières (rendements) sont attendues via le paramètre macro '&returns'. Aucun jeu de données n'est généré ou chargé en dur dans le script.

1 Bloc de code
MACRO UTILS
Explication :
Initialisation des variables macro et génération de noms de tables temporaires aléatoires via des macros utilitaires.
Copié !
1%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn &Rf);
2%let _tempRP= %ranname();
3%let _tempStd= %ranname();
4%let i= %ranname();
2 Bloc de code
MACRO CALL Data
Explication :
Appel d'une macro externe pour calculer les rendements excédentaires (Rendement - Taux sans risque).
Copié !
1%return_excess(&returns,Rf= &Rf, dateColumn= &dateColumn,outData= &_tempRP);
2 
3 Bloc de code
PROC MEANS Data
Explication :
Calcul de la moyenne des rendements excédentaires.
Copié !
1 
2PROC MEANS
3DATA= &_tempRP noprint;
4OUTPUT out= &_tempRP(keep=&vars) mean=;
5RUN;
6 
4 Bloc de code
MACRO CALL Data
Explication :
Appel d'une macro externe pour calculer l'écart-type (risque) des rendements.
Copié !
1%Standard_Deviation(&returns, VARDEF = &VARDEF, dateColumn= &dateColumn, outData= &_tempStd);
2 
5 Bloc de code
DATA STEP Data
Explication :
Combinaison des moyennes et des écarts-types. Utilisation de la fonction LAG pour diviser la moyenne (ligne précédente) par l'écart-type (ligne courante) afin d'obtenir le ratio de Sharpe.
Copié !
1DATA &outData (keep= _stat_ &vars);
2FORMAT _STAT_ $32.;
3 SET &_tempRP &_tempStd(in=b);
4 
5 array Sharpe[*] &vars;
6 DO &i= 1 to dim(Sharpe);
7 Sharpe[&i]= lag(Sharpe[&i])/Sharpe[&i];
8 END;
9 
10 _STAT_= 'Sharpe Ratio';
11 IF b;
12RUN;
6 Bloc de code
PROC DATASETS
Explication :
Suppression des tables temporaires de travail.
Copié !
1PROC DATASETS lib=work nolist;
2 delete &_tempRP &_tempStd;
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
Stéphanie
Spécialiste Machine Learning et IA.
« Ce script illustre une mise en œuvre avancée de l'analyse de portefeuille via le langage macro SAS. Le Ratio de Sharpe est le standard de l'industrie pour mesurer l'excès de rendement par unité de risque (volatilité). L'enjeu ici est d'automatiser ce calcul sur un nombre indéterminé d'actifs tout en garantissant la reproductibilité des résultats. »