Estoy intentando usar Python para que me dé más información sobre las detracciones que sólo la detracción máxima y la duración de la detracción máxima. Me gustaría determinar el número de detracciones que se han producido (más allá de un cierto umbral de recuento de días), la detracción media y la duración media de la detracción. He encontrado este pregunta con una respuesta sobre la extracción máxima, y la longitud de la extracción máxima, pero después de leer los comentarios, no estoy seguro de qué hacer con él. También he encontrado este pregunta que parece dar una reducción máxima diferente, así que estoy un poco confundido. Creo que el segundo es lo que estoy buscando, pero no quiero un máximo; Quiero una reducción media que ha durado más de un número de días (digamos cinco días).
Mi conjunto de datos es un marco de datos Pandas con precios. Esto es lo que tengo hasta ahora, pero ahora estoy atascado en cómo proceder:
def avg_dd(df, column='close'):
df['simple_ret'] = df[column].pct_change().fillna(0)
df['cum_ret'] = (1 + df['simple_ret']).cumprod() - 1
df['nav'] = ((1 + df['cum_ret']) * 100).fillna(100)
df['hwm'] = df['nav'].cummax()
df['dd'] = df['nav'] / df['hwm'] - 1
A partir de aquí, mi idea era utilizar el hwm
como un índice que se incrementa cada vez que alcanza un nuevo máximo, y la distancia entre ellos era la duración de esa reducción temporal.
¿Alguien tiene una fuente o referencia que pueda ayudarme?