리턴으로 직접 작업하는 Python에서 Maximum Drawdown 구현
Aug 31 2020
최대 손실을 계산해야하는 주식 (예 : 매수 및 보류)에 대한 전략이 있습니다. 문제는 내가 백분율로 표현 된 수익을 작업하고 있기 때문에 가격의 시계열이 아니라 각 단계에서 얻은 수익 중 하나를 가지고 있다는 것입니다. 그래서이 코드를 작성했습니다.
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)
맞습니까?
답변
4 amdopt Aug 31 2020 at 19:12
당신은 몇 가지를 놓치고 있습니다. 아래 함수 returns는 팬더 시리즈 또는 팬더 데이터 프레임의 열 이라고 가정합니다 . 이 시도:
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)