2023. 9. 22. 11:24ㆍDATA PROGRAMMING/PYTHON
import yfinance as yf
import datetime
import pandas as pd
print(yf.__version__)
print(pd.__version__)
start_date = datetime.datetime(2021, 7, 1)
end_date = datetime.datetime(2021, 12, 31)
df = yf.download('AAPL', start=start_date, end=end_date)
print(df)
데이터를 받아오기 위해 yfinance라는 모듈을 사용한다. 이 모듈은 웹상의 데이터를 파이썬 안으로 가져오는 역할을 한다.
2021년 7월 1일부터 2021년 12월 31일까지의 데이터를 가져올 것이다. AAPL이라는 애플의 티커를 입력하고 가져올 데이터의 시작과 끝 기간을 인자로 대입한다.
컬럼은 순서대로 ['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume']를 나타낸다.
df = yf.download('AAPL')
plt.plot(df['Adj Close'])
plt.show()
기간을 정하지 않으면 80년도부터 현재까지 애플의 데이터를 받아올 수 있다. 여기서 matplotlib패키지를 활용하여 수정 종가 그래프를 그릴 수 있다.
이동평균선 분석
이번엔 주식 분석을 할 때, 자주 사용하는 지표인 이동평균선을 만들어 보려고 한다. 이는 소위 이평선이라고 말한다. 이동평균선이란 특정 기간 동안 주가의 평균을 낸 후 그들을 그래프로 표현한 것이다. 예를 들면 7일 이동평균선이라고 하면, 오늘 기준으로 7일 전부터 오늘까지의 7일 주가 평균이 오늘의 값이 되는 것이다. 이렇게 하루하루 모든 값을 계산한 이후에 그래프를 그린다.
df = yf.download('AAPL', start_date, end_date)
df = df[df['Volume'] != 0 ]
ma = df['Adj Close'].rolling(window=5).mean()
df에서 Volume(거래량)이 0인 값들을 빼준다. 이때는 공휴일 등의 이유로 주식거래가 이루어지지 않은 날이므로 이평선 계산에서 빼는 것이다.
또한 rolling함수를 사용하는데 window인자를 5로 지정함으로써 4칸 전의 데이터부터 현재 칸의 데이터까지 총 5개의 데이터를 연속적으로 집계한다. 마지막으로 mean()함수를 통해 이 값의 평균을 구해주면 된다.
주식의 기술적 분석에서는 5일 이평선, 20일 이평선, 60일 이평선 등 많은 이평선들이 교차하는 지점을 중요한 매매 타이밍으로 보고 있다. 그래서 기존에 volumn이 0 이 아닌 데이터들로 만든 새로운 데이터프레임에 각 이평선 값들을 구해 새로운 컬럼으로 대입해서 분석하려고 한다.
ma5 = df['Adj Close'].rolling(window=5).mean()
df.insert(len(df.columns), "MA5", ma5)
ma20 = df['Adj Close'].rolling(window=20).mean()
df.insert(len(df.columns), "MA20", ma20)
ma60 = df['Adj Close'].rolling(window=60).mean()
df.insert(len(df.columns), "MA60", ma60)
ma120 = df['Adj Close'].rolling(window=120).mean()
df.insert(len(df.columns), "MA120", ma120)
plt.plot(df.index, df['Adj Close'], label='Adj Close')
plt.plot(df.index, df['MA5'], label='MA5')
plt.plot(df.index, df['MA20'], label='MA20')
plt.plot(df.index, df['MA60'], label='MA60')
plt.plot(df.index, df['MA120'], label='MA120')
plt.legend(loc="best")
plt.grid()
plt.show()
이제 plt를 통해 그래프를 그려준다.
조금 더 세밀하게 분석하고 싶다면 기간을 짧게 잡으면 된다.
'DATA PROGRAMMING > PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬으로 json, xml 파일 sql 형태로 저장하기 (0) | 2023.10.04 |
---|---|
[파이썬] matplotlib 라이브러리를 활용한 금융 데이터 시각화 (0) | 2023.10.04 |
[PYTHON] 함수 데코레이터 활용 실습 (0) | 2023.09.20 |
[PYTHON] 파이썬 프로그래머스 문제 풀기 1 - 자릿수 더하기 (0) | 2023.09.20 |
[파이썬] 대신증권 API를 활용한 알고리즘 개발 (0) | 2023.09.20 |