이전 글들에서 다룬 것을 바탕으로
네이버와 카카오 주식 데이터를 가져오고
간단한 차트로 시각화해보자.
이번엔 설명보단
예시 코드와 결과 위주로 포스팅할 예정이다.
단계별 설명이 궁금하다면 아래 링크들을 참고하면 된다.
- 이전 링크들
1. 파이썬으로 야후 파이낸스(yfinance)에서 금융 데이터 가져오기
3. 금융 자산 데이터 시각화하기 (matplotlib)
1. yfinance로 주식 데이터 가져오기
# 필요한 모듈 임포트 -> 없으면 pip install로 설치
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
# 필요시 가격 소수점 자리수 개수 지정
# pd.options.display.float_format = "{:.4f}".format
# 기간 지정
start = "2017-01-01"
end = "2022-08-04"
# 티커 심볼 리스트 -> 야후 파이낸스 검색
tickers_kr = {
"035420.KS" : "NAVER",
"035720.KS" : "KAKAO"
}
tickers = list(tickers_kr.keys()) # ["035420.KS", "035420.KS"]
# yfinance로 데이터 가져오기
df = yf.download(tickers, start, end)
# 컬럼명 한글로 바꾸기
df.rename(columns=tickers_kr, inplace=True)
df
티커 심볼에 따라 숫자 범위가 다양하기 때문에
필요에 따라 소수점 자릿수의 개수를 지정할 수 있다.
국내 주식의 티커 심볼은 숫자로 표기되기 때문에
보기 편하게 다루기 위해 컬럼명을 바꿔주었다.
우선 딕셔너리 형태를 만들고
rename 메서드에 inplace 옵션을 주어 변경했다.
추후 더 나은 방법이 생각나면 다시 다루겠다.
2. 종가 데이터 추출하기
# 종가 데이터만 가져오기
close = df.Close.copy()
close
# 결과
NAVER KAKAO
Date
2017-01-02 155400.0 15452.8
2017-01-03 153400.0 16117.7
2017-01-04 162000.0 16984.0
2017-01-05 158200.0 16923.5
2017-01-06 159800.0 16863.1
... ... ...
2022-07-27 246000.0 71900.0
2022-07-28 247000.0 72400.0
2022-07-29 259000.0 74800.0
2022-08-01 259000.0 74000.0
2022-08-02 259000.0 71800.0
1369 rows × 2 columns
종가 데이터만 다룰 것이기 때문에
close 변수에 복사해서 담았다.
3. 정규화하기
# 정규화하기
norm = close.div(close.iloc[0]).mul(1)
norm
# 결과
NAVER KAKAO
Date
2017-01-02 1.0 1.0
2017-01-03 1.0 1.0
2017-01-04 1.0 1.1
2017-01-05 1.0 1.1
2017-01-06 1.0 1.1
... ... ...
2022-07-27 1.6 4.7
2022-07-28 1.6 4.7
2022-07-29 1.7 4.8
2022-08-01 1.7 4.8
2022-08-02 1.7 4.6
1369 rows × 2 columns
모든 날짜별 가격을 시작 날의 가격으로 나누었다.
따라서 시작 날이 1이 되고 기준점이 된다.
카카오 가격은 시작 날 대비 4.6배 오른 것이다.
4. 시각화해서 비교하기
4-1. 정규화를 안하고 시각화하기
# 시각화는 seaborn 라이브러리 사용
plt.style.use("seaborn")
# 정규화를 하지 않은 상태로 시각화
close.dropna().plot(figsize=(18, 10), fontsize=14)
plt.legend(fontsize=14)
plt.show
그래프의 모양만 보면
네이버의 변동성이나 상승이 더 높아 보인다.
카카오는 Y축 가격이 구체적이지 않아 판단하기가 어렵다.
그럼, 아래 정규화된 데이터의 차트를 보자.
4-2. 정규화해서 시각화하기
# 정규화한 것을 시각화하기
norm.dropna().plot(figsize=(18, 10), fontsize=14)
plt.legend(fontsize=14)
plt.show
얼핏보면 두 결과가 뒤바뀐 것 같다.
정규화된 결과에는 Y축이 가격이 아니라 가격의 변동률이다.
즉, 두 회사의 주식 가격이 동일하게 1에서 시작했다고 가정한다.
(정규화 과정에서 이것을 10이나 100 단위 등으로 조정 가능하다.)
만약 Y 값이 2라면 가격이 두배 오른 것이고, 10을 넘었다면 10배가 넘게 오른 것이다.
한마디로, 절대 가격이 아닌 상대 가격으로 비교하는 차트이다.
5. 마치며
이처럼 몇 줄의 코드만 있으면
원하는 금융 상품을 쉽게 비교해 볼 수 있다.
다양한 티커 심볼을 찾아서 차트로 그려보자.
일단 코드가 정상적으로 실행된다면,
다양한 설정값을 마음대로 바꿔보자.
입력에 따라 결과가 바뀌는 것을 보면
원리를 이해하기 쉬워지고 응용하는데 도움이 될 것이다.
또한 정규화를 해보면서
절대값이 아닌 상대값으로 금융 상품을 비교해보았다.
실제로 대다수의 재무 분석가나 투자자, 트레이더들은
절대가격이 아닌 비율을 활용한다.
그렇다면 다음 시간엔
"비율"이 무엇이고 왜 중요한지 더 자세히 알아보자.
'개발로 돈 벌기 > 파이썬 금융 데이터 분석' 카테고리의 다른 글
파이썬으로 투자 보상과 위험도 측정해서 비교하기 (테슬라 VS 비트코인) (0) | 2022.08.12 |
---|---|
테슬라 주식 날짜별 가격 변화와 수익률 계산하기 (0) | 2022.08.09 |
금융 자산 데이터 시각화하기 (matplotlib) (0) | 2022.08.03 |
판다스로 주식, 암호화폐 데이터 다듬기 (0) | 2022.08.02 |
파이썬으로 야후 파이낸스(yfinance)에서 금융 데이터 가져오기 (0) | 2022.08.02 |
파이썬과 금융 데이터 분석을 시작하기 전에 (0) | 2022.07.30 |
댓글