J'ai données (déclarations appelées dataframe) qui ressemble à ceciproduit cumulatif de roulement entre les dates
DATE TICKER RETURN_DATA
2010-01-01 xxx 0.05
2010-01-01 yyy 0.01
2010-01-02 xxx 0.02
2010-01-02 yyy 0.08
.....
2010-01-29 xxx 0.11
2010-01-29 yyy 0.01
ce que j'essaie de faire est de calculer 4 (n) -weeks retours de roulement.
I mis en œuvre cette
def rolling_fct(returns, window_len):
return returns.groupby('TICKER')['RETURN_DATA'].rolling(window=window_len).apply(lambda x: np.prod(1+x)-1)
où window_len = 28 jours, cela fonctionne, mais je viens de découvrir que je dois rouler ce sur un delta de temps plutôt que d'avoir un window_len = entier. Le problème est que j'ai affaire à des jours fériés, etc., donc ma fenêtre n'est pas fixe.
Je cherche la même logique de roulement juste sur un delta temporel plutôt que sur une longueur.
donc au lieu de spécifier un 'window_len = un_intérieur', vous voulez quelque chose comme 'window_len = '28D''? – Uvar
Oui, au lieu de le faire tourner sur le nombre de points de données, je voudrais qu'il roule sur une fenêtre temporelle, quel que soit le nombre de points de données que j'ai dans cette période. Exemple 4 semaines devrait être égal à 28 jours, 20 jours ouvrables, mais si j'ai un jour férié, je pourrais finir avec 19 entrées. Je suis à la recherche d'une solution robuste. – ThatQuantDude
Je sais ce que vous voulez dire, mais avez-vous essayé de l'utiliser avec '28D'? Il devrait produire une fenêtre mobile basée sur 4 semaines de temps dans votre index. Cela inclut également la robustesse aux entrées manquantes dues aux vacances. En ce qui concerne les informations de date, il était présent depuis le début, je pense que vous devrez spécifier explicitement "as_index = False" pour conserver les dates. – Uvar