2013-03-08 16 views
8

Ho una serie temporale di resi, rolling beta e rolling alpha in un DataFrame panda. Come posso calcolare un alfa annualizzato a rotazione per la colonna alfa di DataFrame? (Voglio fare l'equivalente di = PRODUCT (1+ [ultimi 12 mesi]) - 1 in excel)Come calcolare il cumulativo prodotto in rotoli su Pandas DataFrame

  SPX Index BBOEGEUS Index Beta  Alpha 
2006-07-31 0.005086 0.001910 1.177977 -0.004081 
2006-08-31 0.021274 0.028854 1.167670 0.004012 
2006-09-30 0.024566 0.009769 1.101618 -0.017293 
2006-10-31 0.031508 0.030692 1.060355 -0.002717 
2006-11-30 0.016467 0.031720 1.127585 0.013153 

sono rimasto sorpreso di vedere che non c'era alcuna funzione "rolling" integrato in panda per questo, ma speravo che qualcuno potesse aiutare con una funzione che potrei quindi applicare alla colonna df ['Alpha'] usando pd.rolling_apply.

Grazie in anticipo per qualsiasi aiuto che hai da offrire.

risposta

15

farà questo?

import pandas as pd 
import numpy as np 

# your DataFrame; df = ... 

pd.rolling_apply(df, 12, lambda x: np.prod(1 + x) - 1)