백테스팅 (그래프, 주가 가져오기)

2023. 1. 3. 19:02python

스파르타코딩 파이썬 자동화 업무 4주 차에선 백테스팅과 주가 가져오기 덤으로 그래프 그리는 방법을 배웠습니다. 

 

1. 백테스팅이란? 이전 주가의 추이에 전략을 대입해보는 것이라고 합니다.

 

2. 주가 가져오기를 실행하려면 pandas-datareader 와 finance-datareader 라이브러리를 가져와야 합니다.

!pip install yfinance pandas-datareader finance-datareader 

위의 코드로 라이브러리를 설치할 수 있습니다.

 

3. import 하기 

라이브러리를 설치 했다면 import를 반드시 해줘야 합니다.

from pandas_datareader import data

import yfinance

import numpy

import pandas

import FinanceDataReader

 

4. 간단한 그래프 그리기

df = fdr.DataReader('005930', '2018')
df.plot(y=['Close'])

 

가져온 데이터를 이용해서 .plot(y=['Close'])하여 close 값을 기준으로 그래프를 만들어 줍니다. 이때 그래프의 크기가 작은데,  df.plot(y=['Close'], figsize=(15,8)) figsize로 그래프의 크기를 키울 수 있습니다. 또 뒤에 gride=True를 추가하면 그래프에 격자무늬가 생깁니다. 

*참고로 005930은 삼성전자의 코드 입니다.

 

5. 두 개의 종목 그래프 그리기

df_1 = fdr.DataReader('005930','2018')
df_2 = fdr.DataReader('066570','2018')

df_tot = pd.DataFrame()
df_tot['Samsung'] = df_1[['Change']]
df_tot['LG'] = df_2[['Change']]

df_tot.tail(100).plot(figsize=(15,8))

 

서로 다른 종목을 df_1 , df_2에 각각 넣고 df_tot이라는 dataframe을 만들고 'Samsung', 'LG'라는 이름으로 각각 df_1과 df_2의 데이터를 다시 넣습니다. tail은 최근의 데이터 어느 기간을 얘기하는 것입니다. tail(100)은 최근 100일간의 데이터입니다. 

 

 

6.3일마다 이동평균값 만들기

df.rolling(3).mean()

.rolling을 이용하면 됩니다.

 

 

이렇게 4주 차 숙제도 완료! 사실 코드와 힌트를 거의 다 알려주셨기에 가능했던 숙제.. 반복학습이 중요하네요.!