MDD를 지난번에 다뤄서, 간단히 파이썬을 활용해서 MDD를 시각화해보기로 했다.
자신의 MDD를 설정을 해놔야 저 위의 짤 처럼 장투를 할 때에 그나마 좀 견딜 수 있지 않을까 싶다.
진짜 갑자기 자신의 주식을 몇년동안 보유 중인데 오르지도 않는다, 근데 계속 빠지고 손실이다 라고 했을 때, 그걸 못 참는 사람들이 대부분이고, 빠졌다고 해서 손절을 해버리는 경우가 많은데...
버핏 할아버지도 10년 보유 할 주식 아니면 10분도 보유하지 말라는 것처럼, 장기적으로 보고 투자해야 한다..
(물론 지금은 시대가 워낙 다이나믹 하기도 하고,,, 그리고 10분 안에 거래하면?? 단타는 10분 안에..!!ㅋㅋㅋ)
암튼. MDD 시각화해보자.
## pandas_datareader를 좀더 보완한게 FinanceDataReader
import FinanceDataReader as fdr
import pandas as pd
import matplotlib.pyplot as plt # 그래프를 그리기 위한 matplotlib도 같이 불러오기
이번에 MDD를 그리는 걸 찾아보다가, 어떤 분은 pandas_datareader를 가지고 오고 야후 파이낸스의 데이터를 끌어서 오는 경우를 봤다.
나는 다른 방법이 있는 줄 알고 찾아보려다가 이전에 내가 쓰던 FinanceDataReader자체가 pandas_datareader를 보완한 라이브러리라고 해서 기존의 쓰던 방법으로 데이터를 불러드렸다.
#코스피 지수
df_kospi = fdr.DataReader('KS11', '2000-01-01')
df_kospi.head()
코스피 지수를 불러들이기 위해서 'KS11'로 코스피 지수값 가지고 오고(왜 11인지 모르겠음..)
2000년 1월부터 한번 쭉 불러왔다.
window = 252 #주식 장이 열리는 날 (대략적으로) 일년이지만
peak =df_kospi['Close'].rolling(window, min_periods=1).max() #가장 고점일때
drawdown = df_kospi['Close']/peak - 1.0 #모든 낙폭
max_dd = drawdown.rolling(window, min_periods=1).min() #최대 손실 낙폭
일단 rolling 함수를 기초로 (이평을 구하고)
window를 지정해준다. 여기서 window는 몇 개씩 연산을 해줄 것인지 지정해주는 것인데, 보통 일 년에 한국 장이 열리는 날을 계산해보면 대략적으로 252일 정도 열린다.
peak를 고점으로 지정해주고, 코스피 지수의 종가 ('Close')를 계산
drawdown로 낙폭 계산 고점 대비해서 1 마이너스
그리고 mdd를 지정해주면 된다 동일하게
plt.figure(figsize=(9, 7))
plt.subplot(211) #그래프 첫번째
df_kospi['Close'].plot(label='KOSPI', title='KOSPI MDD', grid=True, legend=True) #코스피 주가 흐름 가지고오고
plt.subplot(212)#그래프 두번째
drawdown.plot(c='blue', label='KOSPI DD', grid=True, legend=True) #낙폭 그래프 (하락한것만)
max_dd.plot(c='red', label='KOSPI MDD', grid=True, legend=True) #최대 낙폭 그래프
plt.show()
matplotlib을 통해서 시각화를 해준다.
plt을 통해서 사이즈랑 위치를 지정, 두 개의 그래프를 함께 보기 위해서 위아래로 하나씩 그려준다.
위에는 코스피 지수만 가지고 오고
아래 그래프에서는 MDD와 낙폭 그래프만 가지고 와준다.
아래 결괏값을 한번 봐보자.
정말 험난하게도 생겼다.
2000년도부터 크게 하락, 02~03년도에도 하락을 하고, 2009년, 그리고 2020년에 눈에 띄게 하락한 것을 확인할 수 있다.
y축을 보면 거의 50% 이상 빠진 경우는 2002년, 2009년 정도로 보인다.
궁금해서 30% 이상 빠진 이유를 찾아봤다.
(나름 분석가니까! 원인은 찾아야 속이 풀리지!)
2000년 지수 하락 원인:
IT버블. IT혁명으로 90년대 말부터 계속 상승장이였다고 한다. 당시 코스닥 시총이 100조가 넘었다고하니까 엄청난거였는데...
결국 허상이였다. 그냥 실체없는 회사들이였고, 디지털,. com이 붙은 회사들은 실적이 뒷받침 되어주지 않아서 하락해버렸다..
2002년 지수 하락 원인:
카드대란이 있었다. 경제 활동인구의 신용카드 수가 4.58장으로 무분별한 카드의 발급과 채무 불이행자가 많아지면서 신용위기...
추가적으로 미국의 이라크 침공작전까지 영향을 미쳤다고 한다.
(신용카드는 한 두 개면 충분한 거 아닌가?..)
2008년 지수 하락 원인:
서브프라임 모기지. 경재 책 잠시 들쳐도 나오는 미국의 주택담보대출 부실과 리먼브라더스의 파산까지 겹치면서 하락했다. MDD 그래프를 보면 2000년대 최대 낙폭인 것을 확인할 수 있다.
2020년 지수 하락 원인:
코로나. 이놈의 코로나, 지금도 또 변이 바이러스까지 나타나서 더 복잡해지고 있다.
물론 코로나를 터닝포인트 삼아서 발전한 산업과 기업들이 정말 많긴 했지만, 초반에는 다들 패닉이었고 하나의 국가가 아닌 전 세계 경제의 영향을 미쳤었다..
코스피 지수 그래프를 보면, 2000년대 초반에 코스피 지수가 500원에서 지금 3000원까지 왔다.
다섯 배가 증가했지만 그 안에서의 낙폭이 심하다는 걸 보여준다.
즉, 장투를 하면서 중간중간 크게 폭락하는 경우들이 있는데, 이걸 견디는 사람이 장투를 하는 사람이라고 말할 수 있다.
각자의 MDD를 잘 정하고, 경제 흐름에 따라 잘 판단하는 사람이 되어야 투자에서도 성공할 것 같다.
처음 짤이랑 시각화 한 자료를 비교해보면... 똑같다!ㅋㅋ
'Data Analysis > Python_Stock' 카테고리의 다른 글
[Python_stock] 일중강도지수_(Intraday Intensity Index) (0) | 2022.03.22 |
---|---|
[Python_stock] FinanceDataReader 활용 8. MFI (Money Flow Index) (0) | 2022.02.03 |
[Python_stock] FinanceDataReader 활용 6. 특정날짜조회, 누적 수익률 (0) | 2021.10.25 |
[Python_stock] FinanceDataReader 활용 5. B% (Bollinger %) (0) | 2021.10.21 |
[Python_stock] FinanceDataReader 활용 4. 볼린저 밴드 (Bollinger Band) (0) | 2021.10.20 |