[투자] 전략 backtesting

in #krsuccessyesterday (edited)

좋은 전략이 떠오르면 수익이 나는지 과거 데이터로 backtest를 해야합니다.
직접 개발하여 test하고는 있으나 과연 맞게 개발을 했는지 확인이 필요합니다.
excel을 이용하여 실제 전략이 동작하는 함수를 만들어서 프로그램과 같은지 확인을 합니다.

이 과정이 상당히 노력과 시간이 많이 필요한데요. 만약 backtesting을 지원하는 패키지가 있으면 유용할 듯 합니다.

파이썬에 다양한 backtest관련 패키지가 있는데요. 이 중 backtesting.py를 사용해 보았습니다.

image.png

우선 패키지를 설치합니다.

pip install backtesting

간단하게 이평선 골드크로스 매수, 데드크로스 청산 전략입니다.

import pandas as pd
from backtesting import Backtest, Strategy
from backtesting.lib import crossover
from backtesting.test import SMA

# 데이터 불러오기
data = pd.read_csv('KOSPI200(day)-2023.csv', parse_dates=['Date'])
data.set_index('Date', inplace=True)

class SmaCross(Strategy):
    def init(self):  # 초기화 전략에 사용할 이평을 만듬
        price = self.data.Close
        self.ma1 = self.I(SMA, price, 5)
        self.ma2 = self.I(SMA, price, 20)
        self.entered = 0  # 현재 진입 여부 표시
    def next(self):
        if crossover(self.ma1, self.ma2):  # 골드크로스인지?
            if self.entered == 0 :         # 이미 진입했으면 무시
                self.buy()
                self.entered = 1
        elif crossover(self.ma2, self.ma1): # 데드크로스인지?
            #self.sell()
            if self.entered :               # 진입한 상태이면 청산
                self.position.close()
                self.entered = 0

간단한 전략은 바로 확인이 가능합니다.

보다 자세한 내용은 아래 글 참고하세요.

https://blog.naver.com/tradingidea/223666082230