Bonjour,

A partir de cette table qui comprend une valeur, une date et l'identifiant pour 2000 individus je souhaite calculer des ratios propre à chaque individus.

Nom : 1.PNG
Affichages : 147
Taille : 25,0 Ko

J'ai pensé a procéder de cette manière mais ca ne semble pas bon. Pandas ne me sort pas le calcul de la volatilité. Et je ne pense pas que itérer un df pour chaque ID soit la meilleure solution.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 
data = dict()
 
for unique in MV['ID_Perf'].unique():
    data[unique] = MV.loc[MV['ID_Perf']==unique]
    data[unique]['Perf'] = data[unique]['VL']/data[unique]['VL'].shift(1) -1
    data[unique]['Volat'] = (np.std(data[unique]['Perf'])*252**0.5)
Nom : 2.png
Affichages : 141
Taille : 16,4 Ko

Cette méthode non plus ne donne rien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
def std(grp):
    grp  = grp / (grp.shift() - 1) 
    return grp.std() * 252**0.5
 
std = (MV.groupby('ID_Perf')['VL'].apply(std)
                            .rename('Volat')
      )
 
df = MV.join(std, on='ID_Perf')
 
check = df.loc[df.loc[:,'ID_Perf']=='0P00000ARS']
 
check
Nom : 3.PNG
Affichages : 187
Taille : 39,6 Ko

De quelle manière je dois m'y prendre pour calculer des ratios par ID en série temporelle ? Merci