본문 바로가기
투자

[퀀트 트레이딩] 파이썬으로 백테스트를 해보자.

by 인포미스터리 2023. 7. 18.
반응형

 

2023.07.17 - [투자] - 기업의 미래를 예측하는 퀀트(Quant) 트레이딩 이란?

 

기업의 미래를 예측하는 퀀트(Quant) 트레이딩 이란?

현대사회에서는 주위의 많은 사람들이 주식에 투자를 합니다. 예전에는 주식에 투자했다가 망했다는 사람들의 이야기도 많이 들어봤지만, 그건 모두 무분별한 묻지마 투자를 했기 때문이지요.

korculture.tistory.com

2023.07.18 - [배웁시다!!] - [Python]파이썬 기초 중의 기초(순서대로만 익혀준다면...)

 

[Python]파이썬 기초 중의 기초(순서대로만 익혀준다면...)

왜 파이썬인가? 퀀트 투자를 파이썬으로 하기 위해서는 파이썬이라는 언어의 기초를 알아야 한다. 하지만 왜 파이썬인가? 파이썬은 현재 세계에서 가장 인기가 있는 프로그래밍 언어이다. 가독

korculture.tistory.com

 

기존의 두 글을 바탕으로 이번에는 간단한 백테스트 예제를 돌려보았다. 이 예제에서는 주식 종목 하나에 대한 일간 데이터를 사용하며, 20일 이동평균선과 50일 이동평균선의 교차점을 기반으로 매매 결정을 내리는 전략을 테스트한다. csv 파일을 구글링을 통해 얻은 것이므로 그냥 이렇게 돌아간다는 것만 확인하면 좋을 듯 싶다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os

# 데이터 불러오기
file_path = os.path.dirname(os.path.abspath(__file__))
data = pd.read_csv(file_path +'/stock_data.csv', index_col='Date', parse_dates=True)

# 20일 이동평균선과 50일 이동평균선 계산
data['MA20'] = data['Close'].rolling(window=20).mean()
data['MA50'] = data['Close'].rolling(window=50).mean()

# 매매 신호 계산
data['Signal'] = np.where(data['MA20'] > data['MA50'], 1, 0)
data['Position'] = data['Signal'].diff()

# 수익률 계산
data['Market_Return'] = np.log(data['Close']/data['Close'].shift(1))
data['Strategy_Return'] = data['Market_Return'] * data['Position']

# 누적 수익률 계산
data['Market_Cum_Return'] = data['Market_Return'].cumsum().apply(np.exp)
data['Strategy_Cum_Return'] = data['Strategy_Return'].cumsum().apply(np.exp)

# 결과 출력
plt.plot(data[['Market_Cum_Return', 'Strategy_Cum_Return']])
plt.legend(['Market', 'Strategy'])
plt.show()

 

결과 화면 출력

위와 같은 결과화면이 출력되었다면 정상적으로 프로그램이 돌아간 것이다.

프로그램 소스와 csv 파일은 아래 첨부해 놓겠다. 한번씩 돌려보면서 백테스트 소스에 대해 분석해 보길 바란다.

BackTest1.py
0.00MB
stock_data.csv
0.14MB

반응형