Python panda ha una funzione pct_change che uso per calcolare i rendimenti per i prezzi delle azioni in un dataframe:ritorna logaritmiche a panda dataframe
ndf['Return']= ndf['TypicalPrice'].pct_change()
Sto usando il seguente codice per ottenere rendimenti logaritmici, ma dà la esatte valori stessi come la funzione pct.change():
ndf['retlog']=np.log(ndf['TypicalPrice'].astype('float64')/ndf['TypicalPrice'].astype('float64').shift(1))
#np is for numpy
Sto ottenendo molti valori in pct_change() e log_ret esattamente lo stesso, e pochissimi valori leggermente diversi. Ci si potrebbe aspettare? – AmanArora
@AmanArora Sì, è un comportamento previsto. log return e gross return sono molto vicini quando il tuo rendimento lordo è piccolo, diciamo meno dell'1%. Può essere provato matematicamente dall'espansione di Taylor di secondo ordine intorno a 0. –
@AmanArora BTW, log return ha la proprietà desiderata che sia additivo nel tempo (ma non additivo su asset diversi), mentre il rendimento lordo è più appropriato quando si calcola un rendimento medio ponderato del portafoglio (cioè additivo su asset differenti ma non additivo col tempo). –