관리 메뉴

Leo's Garage

BackTrader - 역추세 매매 본문

파이프라인 만들기/Algo Trading

BackTrader - 역추세 매매

LeoBehindK 2023. 1. 14. 00:39
728x90
반응형

Backtrader로 간단한 역추세 매매 로직을 만들어보자 

역추세 매매란 결국 시장의 가격이 평균으로 회귀하는 성질을 이용하는 것이라 볼 수 있다. 

그래서 이를 평균회귀 전략이라고도 한다. 

 

 

MeanReversion이라는 전략을 하나 생성한다.

이 전략은 간단하게 볼린져 밴드를 지표로 사용하여 과매도 과매수를 식별, 매수 매도 신호를 발생시킨다. 

from datetime import datetime
import backtrader as bt
import yfinance as yf

class MeanReversion(bt.Strategy):
    params = (
        ('period', 20),
        ('devfactor', 2)
    )

    def __init__(self):
        self.sma = bt.indicators.SimpleMovingAverage(
            self.data.close, period=self.params.period)
        self.bbands = bt.indicators.BollingerBands(
            self.data.close, period=self.params.period)

    def next(self):
        if self.data.close[0] < self.bbands.bot[0]:
            self.buy()
        elif self.data.close[0] > self.bbands.top[0]:
            self.sell()

cerebro = bt.Cerebro()

data = bt.feeds.PandasData(dataname= yf.download('TSLA','2021-01-01','2021-12-31'))
cerebro.adddata(data)

cerebro.addstrategy(MeanReversion)

cerebro.run()

cerebro.plot()

SMA(단순 이동평균선)으로 평균을 볼린져 밴드로 상한, 하한의 표준편차를 계산한다.

종가가 하한 볼린져 밴드보다 아래면 매수, 상한 볼린져 밴드보다 위면 매도한다. 

코드에서는 2021년 1년간의 테슬라 주가를 가지고 테스트해보았고, 해당 결과는 위와 같다. 

 

728x90
반응형
Comments