관리 메뉴

Leo's Garage

Algo Trading - Back Trader 본문

파이프라인 만들기/Algo Trading

Algo Trading - Back Trader

LeoBehindK 2020. 1. 26. 15:02
728x90
반응형

우리가 주식 투자하기에 앞서 전략을 수립할 때, 매매 방법을 정하기 전에 내가 생각한 투자 방법을 테스트해보고 싶을 때가 있다. 이 때 말하는 투자는 가치투자나 성장주 투자가 아닌 트레이딩 관점에서 보는 투자이다. 

예를 들어 어떤 기업의 주식 1년치 Data를 쭉 내려받아서 보니까 어떤 어떤 특정 지표 혹은 전략으로 매매하면 수익이 극대화 될 것 같다라는 생각을 할 때가 있다. 하지만 눈으로 보고 확인하는 것이 아니라 Simulation을 해본다면 좀 더 확실하게 내 전략이나 매매법이 옳았다는 것을 알 수 있을 것이다. 

이러한 것을 가능하게 해주는 Python Framework가 있다. 바로 Back Trader이다. 

Back Trader 홈페이지

https://www.backtrader.com/

 

Welcome - Backtrader

Welcome to backtrader! A feature-rich Python framework for backtesting and trading backtrader allows you to focus on writing reusable trading strategies, indicators and analyzers instead of having to spend time building infrastructure. Open Source - GitHub

www.backtrader.com

이 프레임워크를 사용하면 우리가 머릿속으로 생각했던 매매 전략을 특정 기업의 특정 기간에 테스트해볼 수 있다. 우선 오늘은 맛보기로 이동평균선 Cross 전략을 구현하여 어떤식으로 백트레이더가 활용되는지 보여주겠다.

전략은 다음과 같다.

  • SMA 5일선 > SMA 20일선 : BUY
  • SMA 5일선 < SMA 20일선 : SELL

전략은 위와 같이 매우 단순한다. 이 전략을 2019년 1월1일부터 2019년 12월 31일까지 삼성전자 주가 데이터에 적용해보도록 하겠다. 

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

class SmaCross(bt.SignalStrategy):
    def __init__(self):
        sma1, sma2 = bt.ind.SMA(period=5), bt.ind.SMA(period=20)
        crossover = bt.ind.CrossOver(sma1, sma2)
        self.signal_add(bt.SIGNAL_LONG, crossover)

cerebro = bt.Cerebro()

cerebro.broker.setcash(100000) #자산을 10만원으로 초기화

cerebro.addstrategy(SmaCross)

data0 = bt.feeds.PandasData(dataname= yf.download('005930.KS','2019-01-01','2019-12-31'))
cerebro.adddata(data0)

print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue()) #시작 시 자산

cerebro.run()

print('Final Portfollio Value: %.2f' % cerebro.broker.getvalue()) #종료 시 자산

cerebro.plot()

코드는 위와 같다. 

결과를 보면 다음과 같이 나온다. 

 

이평선 Cross 전략을 2019년 한 해동안 삼성전자 주식에 사용하였더니, 약 7.55%의 수익을 발생시켰다. 이를 그래프로 보면 아래와 같다.

 위의 전략을 토대로 삼성전자의 주식을 매매하면 위의 초록색 화살표 지점에서 주식을 사고, 빨간색 지점에서 주식을 팔게 된다. 

2018년말 대비 2019년 KOSPI 성장률이 7.7%이므로 이 전략이 좋다고 볼 수는 없을 것이다. 

어쨌든 백트레이더는 이런식으로 활용한다. 앞으로 시중에 나와있는 많은 전략들을 프로그래밍하여 여러 기업들에 테스트를 해보면서 과연 어떤 전략이 효과적인지 알아보도록 하겠다. 

 

 

베베숲 저자극 센시티브 엠보싱 물티슈 캡형, 80매, 10팩

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

728x90
반응형
Comments