반응형
FinanceDataReader를 이용해서 주가를 확인하고 MDD를 계산해보겠습니다.
FinanceDataReader의 설치 및 기본 사용법이 필요하신 분은 1번 참조 부탁드립니다.
1. FinanceDataReader 설치 및 주가정보 확인(Skip가능)
2. 주가 확인 및 MDD계산
1. FinanceDataReader 설치(Skip가능)
2. 주가 확인 및 MDD계산
필요 라이브러리 import 하고 거래소 전체 회사 리스트를 저장합니다.
import FinanceDataReader as fdr
df_list=fdr.StockListing('KRX')
삼성전자의 주가를 2017-01-04 ~ 2022-10-30까지 불러옵니다.
name='삼성전자'
df_filter=df_list.loc[df_list['Name']==name]
code=df_filter['Code'].values[0]
startdate='2017-01-04'
enddate='2022-10-30'
df_result=fdr.DataReader(code,startdate,enddate)
df_result
mdd = (저점) / (고점) - 1 로 계산이 되는데
예를 들어 아래의 2017-01-17 기준으로 봤을 때 이전 기간의 고점은 38800이고,
고점 이후의 저점은 36660이 됩니다.
따라서 mdd는 36660/38800-1=-0.055로 -5.6% 정도가 됩니다.
반응형
날짜 별로 for문을 실행하면서 이전 기간의 고점을 찾습니다.
import datetime
df_result['max'] = 0
for i, r in df_result.iterrows():
maxval = df_result.loc[:i,'Close'].max()
df_result.loc[i,'max']=maxval
df_result
각 날짜 기준 drawdown을 구합니다.
df_result['drawdown'] = (df_result['Close']/df_result['max']-1)*100
그중에서 수치가 가장 적은 곳이 mdd가 되겠죠
mdd = round(df_result['drawdown'].min(),1)
mdd
2017-01-01 ~ 2022-10-30 기간의 삼성전자의 mdd는 -42.2%입니다.
그래프로 그려볼까요. plotly를 이용했습니다.
import plotly.express as px
fig=px.line(data_frame=df_result,x=df_result.index, y='mdd',
height=400, hover_name=df_result.index.strftime('%Y-%m-%d'))
fig.show()
2022-09-29일에 mdd가 -42인 것을 확인할 수 있습니다.
이상으로 FinanceDataReader에서 주가를 가져와 MDD를 계산해봤습니다.
반응형
'API' 카테고리의 다른 글
[네이버 개발자센터 API] 지역 인기 핫 플레이스 정보 가져오기 (6) | 2022.11.21 |
---|---|
[FinanceDataReader] 업종별 수익(CAGR) 및 MDD 비교하기 (4) | 2022.11.18 |
[전자공시 Dart API] PER 계산 및 PER 낮은 회사 순으로 정렬하기 (4) | 2022.11.16 |
[전자공시 Dart API] PBR 계산 및 낮은 회사 리스트 수집 (6) | 2022.11.14 |
[공공데이터_data API] 1++ 한우 경매가 월별 트렌드 확인 (4) | 2022.11.12 |