스파르타/파이썬

파이썬 _ 04주차 _ 백테스팅 기초

옒르 2023. 1. 17. 13:11

1) 백테스팅

 📖 백테스팅이란? - 이전 주가의 추이에 전략을 대입해보는 것

 

2) 백테스팅 전략 세우기 & 주가 가져오기

(1) 전략 세우기

🎢 이동평균선이란?  - 이전 며칠(3일, 5일, 20일, 50일 등) 간의 가격을 평균하여 움직이는 선!

                                ⇒ 일수가 커질수록 곡선이 완만해질 수밖에 없겠죠!

 

💡 우리가 쓸 전략  - 골든 크로스 : 주가가 높아질 가능성이 있다는 신호

                             - 데드크로스 : 주가가 낮아질 가능성이 있다는 신호

 

(2) 주가 가져오기

1. 라이브러리 설치

!pip install yfinance pandas-datareader finance-datareader

 

2. 주가 가져오기
from pandas_datareader import data as pdr

import yfinance as yf
yf.pdr_override()

import numpy as np
import pandas as pd

import FinanceDataReader as fdr
 

 

df = fdr.DataReader('종목번호','시작년도')

df.head()
 
 
3.살펴보기
Open: 시초가 High: 고가 Low: 저가 Close: 종가 Volume: 거래량 Change: 변동
 
ex) 종가만 가져오기 => df[['Close']]
ex) 변동이 20% 이상인 날들만 가져오기 => df[abs(df['Change']) > 0.05]    # df[df['보고 싶은 항복'] > 몇 %]  
 

3) 간단한 그래프 그려보기

(1) 주가 그래프 그려보기

.plot(y=['컬럼명'])

df = fdr.DataReader('066570','2018')

df.plot(y=['Close'])
 
# 좀더 크게 그리기
df = fdr.DataReader('066570','2018')
df.plot(y=['Close'],figsize=[15,8])
 
 
# 격자 추가하기
df = fdr.DataReader('066570','2018')
df.plot(y=['Close'],figsize=[15,8],grid=True)
 
 

 

# 만약 다양한 항목을 한번에 나타내고 싶다

df = fdr.DataReader('066570','2018')
df.plot(y=['Open','Close'],figsize=[15,8],grid=True)

 

# 삼성전자와 LG전자를 같이 나타내고 싶다

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

df = pd.DataFrame()
df['Samsung'] = df_1['Change']        # 변동(Change)을 기준으로 나타내고 싶다
df['LG'] = df_2['Change']

df.tail(100).plot(figsize=[15,8]).        # 최근 100일을 기준으로 [15,8] 크기로 표현해라