2013-03-08 6 views
8

Ich habe eine Zeitreihe von Returns, Rolling Beta und Rolling Alpha in einem Pandas DataFrame. Wie kann ich ein rollendes annualisiertes Alpha für die Alpha-Spalte des DataFrame berechnen? (Ich möchte das äquivalent zu = PRODUCT tun (1 + [letzten 12 Monate]) - 1 in Excel)Wie man rollendes kumulatives Produkt auf Pandas DataFrame berechnet

  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 

Ich war überrascht zu sehen, dass es keine „rollende“ Funktion in Pandas dafür gebaut war, aber ich hatte gehofft, jemand könnte mit einer Funktion helfen, die ich dann mit pd.rolling_apply auf die Spalte df ['Alpha'] anwenden kann.

Vielen Dank im Voraus für jede Hilfe, die Sie anbieten müssen.

Antwort

15

wird dies tun?

import pandas as pd 
import numpy as np 

# your DataFrame; df = ... 

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