Publié le :
Finance EXTERNE

Calcul du Ratio Prospect

En attente de validation
Ce script définit la macro %Prospect_Ratio. Elle implémente la théorie des perspectives de Watanabe en pénalisant les rendements négatifs (multiplication par 2.25) avant de calculer la performance. Le ratio final est obtenu en divisant la moyenne des rendements ajustés (moins le rendement minimum acceptable MAR) par le risque baissier (calculé via une dépendance externe %downside_risk).
Analyse des données

Type : EXTERNE


Les données sont fournies dynamiquement via le paramètre 'returns' lors de l'appel de la macro. Le script attend des colonnes numériques représentant des rendements.

1 Bloc de code
MACRO DEFINITION
Explication :
Définition de la macro, déclaration des variables locales et identification des colonnes numériques via la macro utilitaire externe %get_number_column_names.
Copié !
1%macro Prospect_Ratio(returns,
2 MAR= 0,
3 dateColumn= DATE,
4 outData= ProspectRatio);
5
6%local vars temp stat_n down_std i;
7 
8%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn);
9%put VARS IN Prospect_Ratio: (&vars);
10 
11%let temp= %ranname();
12%let stat_n= %ranname();
13%let down_std= %ranname();
14 
15%let i = %ranname();
2 Bloc de code
DATA STEP Data
Explication :
Transformation des données : pénalisation des pertes. Les rendements négatifs sont multipliés par 2.25.
Copié !
1DATA &temp(drop=&i &dateColumn);
2 SET &returns;
3 array ret[*] &vars;
4 
5 DO &i= 1 to dim(ret);
6 IF ret[&i]<0 THEN ret[&i]=2.25*ret[&i];
7 END;
8RUN;
3 Bloc de code
PROC MEANS Data
Explication :
Calcul de la somme des rendements ajustés et du nombre d'observations.
Copié !
1PROC MEANS DATA=&temp sum n noprint;
2 OUTPUT out=&temp(keep=&vars) sum=;
3 OUTPUT out=&stat_n(keep=&vars) n=;
4RUN;
4 Bloc de code
DATA STEP Data
Explication :
Ajustement de la somme par le MAR (Minimum Acceptable Return) et calcul de la moyenne ajustée.
Copié !
1DATA &temp (drop= &i);
2 SET &temp;
3 array ret[*] &vars;
4 
5 DO &i= 1 to dim(ret);
6 ret[&i]=ret[&i]-&MAR;
7 END;
8RUN;
9 
10DATA &temp(drop=&i);
11 SET &temp &stat_n(in=last);
12 array ret[*] &vars;
13 
14 DO &i= 1 to dim(ret);
15 ret[&i]= lag(ret[&i])/ret[&i];
16 END;
17 IF last;
18RUN;
5 Bloc de code
MACRO CALL Data
Explication :
Appel à la macro externe %downside_risk pour calculer la composante de risque (dénominateur).
Copié !
1%downside_risk(&returns, MAR= &MAR, option=RISK, group= FULL, dateColumn= &dateColumn, outData= &down_std);
2 
6 Bloc de code
DATA STEP Data
Explication :
Calcul final du ratio : Division de la moyenne ajustée par le risque baissier.
Copié !
1DATA &outData (keep= _stat_ &vars);
2 FORMAT _STAT_ $32.;
3 SET &temp &down_std(in=last);
4 
5 array ret[*] &vars;
6 
7 DO &i= 1 to dim(ret);
8 ret[&i]= lag(ret[&i])/ret[&i];
9 END;
10 _STAT_= 'Prospect Ratio';
11 IF last;
12RUN;
7 Bloc de code
PROC DATASETS
Explication :
Suppression des tables temporaires.
Copié !
1PROC DATASETS lib=work nolist;
2 delete &temp &down_std &stat_n;
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.
« Le Ratio Prospect est l'un des meilleurs prédicteurs du comportement des portefeuilles en période de crise. Un actif peut afficher un bon ratio de Sharpe mais un Ratio Prospect médiocre s'il subit des pertes rares mais extrêmes. Utilisez cet indicateur pour identifier les stratégies de "cygne noir" qui masquent leur risque réel derrière une faible volatilité quotidienne. »