Implementação de redução máxima em python trabalhando diretamente com retornos
Aug 31 2020
Eu tenho uma estratégia para uma ação (como Buy and Hold) na qual devo calcular a redução máxima. O problema é que estou trabalhando com retornos expressos em percentuais, então não tenho a série temporal dos preços, mas sim a dos retornos obtidos em cada etapa. Então, escrevi este código:
def MDD(returns):
rend_cum=returns.cumsum()
rend_max=pd.Series(rend_cum).cummax()
drawdown=rend_cum-rend_max
MDD=max(abs(drawdown))
return(MDD)
Está correto?
Respostas
4 amdopt Aug 31 2020 at 19:12
Você está perdendo algumas coisas. A função abaixo assume que returnsé uma série de pandas ou uma coluna de um dataframe de pandas. Experimente isto:
def MDD(returns):
cum_rets = (1 + returns).cumprod() - 1
nav = ((1 + cum_rets) * 100).fillna(100)
hwm = nav.cummax()
dd = nav / hwm - 1
return min(dd)
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino