시스템 트레이딩 이해
Intro
백테스팅이란 ? 백테스팅은 과거에 어떤 특정한 전략을 사용하여 특정 종목들을 매수 했을 때, 특정 날짜에 얼마나 수익을 취했는지 테스트 해볼 수 있는 방법을 의미한다.
Ex) 20일선 전략을 테스트 해보고 싶다. 그렇다면 어떻게 해야할까? 백테스팅은 매 날짜를 하루 하루 진행해가면서 매수/매도를 해야되는데, 기본적인 로직은 다음과 같은 꼴이 될 것이다.
for date in dates: # 백테스팅 하려는 날짜
for ticker in tickers : # ticker는 종목 번호를 뜻한다.
if price[ticker]의 20일 선 > price[ticker] 의 현재 가격 :
buy # 매수
시스템 트레이딩의 핵심은 전략을 정확하게 시스템 적으로 명령해줘야한다. 위의 예시 코드는 굉장히 간단하지만, 실제로 매매를 하려는 경우엔 굉장히 많은 변수가 생기고 처리해야할 것도 많다. 가령 언제 매도를 해야하는지 ? 얼마나 매수할 건지? 에 대한 것이 적혀있지 않다. 만일 20일 선을 다시 내려올 때 매도를 한다고 가정하면 코드는 다음과 같을 것이다.
for date in dates: # 백테스팅 하려는 날짜
for ticker in tickers : # ticker는 종목 번호를 뜻한다.
if price[ticker]의 20일 선 > price[ticker] 의 현재 가격 :
buy # 매수
if price[ticker]의 20일 선 < price[ticker] 의 현재 가격 :
sell # 매수
A > B 의 반대는 A <= B 이므로, 좀 더 코드를 가시적으로 만드려면 다음과 같이 만들 수 있다.
for date in dates: # 백테스팅 하려는 날짜
for ticker in tickers : # ticker는 종목 번호를 뜻한다.
if price[ticker]의 20일 선 > price[ticker] 의 현재 가격 :
buy # 매수
else :
sell # 매수
파이썬으로 시스템 매매를 해야할 경우 만들어야 하는 것은 다음과 같이 크게 세 가지로 볼 수 있다.
- 데이터 다운로드, 처리
- 매수 전략
- 매도 전략
여기서 굳이 매수와 매도 전략을 나눈 이유는, 필자가 생각하기엔 이 두가지는 독립적으로 전략을 만들 수 있기 때문에 나눠놨다.