-
[Python] 최대낙폭 MDD 계산하는 방법투자/파이썬 2023. 2. 11. 18:10반응형
최대낙폭(Maximum Drawdown;MDD)은 이전의 가장 높았던 지점에서부터의 최대 하락폭을 의미한다.
필요한 이유
- 일반적으로 리스크를 나타낼 때는 표준편차, 샤프비율, 최대낙폭이 주로 이용된다.
- MDD는 투자시에 발생할 수 있는 가장 최악의 성과를 알려준다
- 주식이나 포트폴리오의 리스크(변동성)를 가장 직관적으로 나타낼 수 있다
코드
yfinance를 이용해 불러온 SPY의 종가를 통해 MDD를 계산해보자.
현재시점까지 해당 종목의 주가는 아래와 같다.
현재시점까지의 고점과 저점을 갱신해나가면서 낙폭(고점 대비 현재 가격을 퍼센트로 나타낸 수치)을 계산한다.
반복문을 통해서 계산하는 것이 직관적이지만 넘파이의 accumulate를 이용하면 더 빠르게 계산할 수 있다.
def mdd(prices : pd.Series) -> float : peak = np.maximum.accumulate(prices) # 현시점까지의 고점 trough = np.minimum.accumulate(prices) # 현시점까지의 저점 dd = (df - peak) / peak # 낙폭 mdd = min(dd) # 낙폭 중 가장 큰 값, 즉 최대낙폭 return mdd
SPY의 낙폭 차트는 아래와 같이 나온다. 2008년의 금융위기 때가 가장 낙폭이 큰 시기였고, 그 크기는 약 55%였다. 고점 대비 반토막이 된 것이다.
반응형'투자 > 파이썬' 카테고리의 다른 글
[Python] 주식 가격 데이터 불러오기, yfinance 사용법 (0) 2023.02.18 [Python] 주식 보조지표 사용하기 - TA 라이브러리 (0) 2023.02.17 [Python] 샤프비율, 정보비율 계산하기 (0) 2023.02.12 [Python] 주식 스프레드 계산하는 방법 (0) 2023.02.11