관리 메뉴

Leo's Garage

BackTrader - S&P500 활용 본문

파이프라인 만들기/Algo Trading

BackTrader - S&P500 활용

LeoBehindK 2023. 2. 17. 23:09
728x90
반응형

이번에는 이전 포스팅에 이어서 S&P500 index를 활용하여 전략을 짜보겠다. 

이전 나스닥 활용과 마찬가지로 S&P500의 50일 평균선을 기준으로 금일 S&P500 종가와 비교하여 매수 매도 하는 전략이다. 

우선 코드는 아래와 같다.

import backtrader as bt
import yfinance as yf



class MyStrategy(bt.Strategy):
    
    def __init__(self):
        self.sp500 = self.datas[0]
        self.stock = self.datas[1]
        self.order = None
        self.sp500_sma = bt.indicators.SMA(self.sp500.close, period=50)

    def next(self):
        if self.order:
            return  # if an order is pending, don't do anything

        if not self.position:  # if not in the market
            if self.sp500.close[0] > self.sp500_sma[0]:  # if the current S&P 500 close is greater than its 200-day moving average
                self.buy()  # enter a long position
        else:
            if self.sp500.close[0] < self.sp500_sma[0]:  # if the current S&P 500 close is less than its 200-day moving average
                self.sell()  # exit the long position


cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)

# Add data feed to cerebro
nasdaq_data = bt.feeds.PandasData(dataname= yf.download('^GSPC','2018-01-01','2021-12-31'))
data = bt.feeds.PandasData(dataname= yf.download('TSLA','2018-01-01','2021-12-31'))

cerebro.adddata(nasdaq_data)
cerebro.adddata(data)

cerebro.run()
cerebro.plot()

간단한 전략인데 50일선보다 높아지는 순간 매수, 낮아지는 순간 매도하는 아주 간단한 전략이다.

해당 전략을 테슽라 주가에 적용하면 아래와 같다.

초기 자본은 10000에서 이후 11211.34까지 자본이 증가하는 것을 확인할 수 있다. 

나스닥 지표도 그렇고 S&P500 지표도 그렇고 잘만 활용하면 아주 좋은 지표가 될 것 같다.

728x90
반응형

'파이프라인 만들기 > Algo Trading' 카테고리의 다른 글

BackTrader - 일목균형표  (0) 2023.02.21
BackTrader - WMA 활용  (0) 2023.02.20
BackTrader - Nasdaq 100 적용  (0) 2023.02.16
BackTrader - 단순 종가 비교 전략  (0) 2023.02.15
BackTesting.py - SMA  (1) 2023.02.05
Comments