알고리즘 트레이딩/백테스팅

볼린저 밴드(Bollinger Bands) 매매 기법 1탄(이평선 조합) 백테스팅

tadoms 2023. 8. 10. 18:34

유튜브나 블로그에 소개된 많은 볼린저 밴드 매매 기법들이 있습니다.
 
해당 기법들이 정말 유용하고 높은 승률이 나오는지,
아니면 특정 기간에만 맞는 매매 기법인지 직접 코딩하여 백테스팅 결과를 정리하였습니다.
 
백테스팅 대상 전략은 아래 링크를 참조하세요.
[알고리즘 트레이딩/전략] - 볼린저 밴드(Bollinger Bands) 매매 기법 1탄(이평선 조합)
 

 

1. 백테스팅 환경


백테스팅 환경은 아래와 같습니다.
 

1.1 대상 시장

코인 선물

 

1.2 거래소

바이낸스

 

1.3 기간

2023.01.01 ~ 2023.07.15

 

1.4 타임프레임

5분봉

 

1.5 대상 코인

비트코인(BTCUSDT)
 
 

2. 결과


기본 전략과 함께 개선 전략을 테스트하고 조금씩 전략을 수정해 가면서 결과를 확인해보겠습니다.
 

2.1 기본 전략

진입 조건 :
볼린저 밴드 상, 하단 터치시 다음 봉의 시가
 
청산 조건 :
매수 포지션에서는 볼린저 밴드 상단선 터치, 매도 포지션에서는 볼린저 밴드 하단선 터치
 
기간 : 
2023.01.01 ~ 2023.07.15 

아래는 자체 구현한 백테스팅 툴로 테스트한 23년 1월 1일 부터 23년 7월 15일 까지의 결과 화면입니다.
전체 거래 수, 승, 패, 승률, MDD(Maximum Drawdown) 등을 한 눈에 확인할 수 있도록 하였습니다.
 
그리고 각 거래 번호를 선택하면 해당 거래 시점의 차트를 볼 수 있게 하였습니다.

기본 전략에 대한 백테스팅 툴 메인 화면

툴에 대한 설명은 그만하고 결과 분석을 해보겠습니다.
 
5분봉 타임프레임으로 테스트한 결과라 200일이 안되는 시간인데도 4287번(진입+청산)의 거래가 발생했고,
얼핏봐서는 준수한 75.08%승률이 나왔습니다.
 
하지만 자세히 들여다보면 수익에 비해 손해가 압도적으로 큰 것을 볼 수 있습니다.
 
실제 세부 거래 내용을 보도록 하겠습니다.
 
우선 가장 큰 수익을 본 893번째 거래입니다.
분석이 쉽도록 해당 거래의 번호 선택시 아래와 같이 해당 거래 구간의 차트를 그리게 하였습니다.
 

  • 가장 위 차트 구간 : 캔들 차트 + 볼린저 밴드
  • 가운데 차트 구간 : 현재 차트 구간의 미니맵 + 막대 그래프는 거래량 지표(테스트를 위해 추가한 그래프로 기본 전략에서는 안쓰입니다)
  • 맨 하단 차트 구간 : MACD 지표(테스트를 위해 추가한 차트로 기본 전략에서는 안쓰입니다)
가장 큰 수익을 본 893번째 거래

녹색 바탕에 노란색 태두리의 원이 진입점(매수 포지션), 흰 바탕에 녹색 태두리가 해당 포지션의 청산시점입니다.
 
저점에서 잘 진입했고,
고점에서 잘 빠져나왔는데도 5분봉이다 보니 수익이 2.18%에 불과(사실 레버리지를 10배, 20배 이상 사용하면 큰 수익이긴 합니다.)합니다.
  
이제 가장 큰 손해를 본 506번 거래를 보겠습니다.

가장 큰 손해를 본 506번 거래

볼린저 상단선에서 매도 포지션(빨강 바탕에 노란색 테두리)을 잡았는데,
스퀴즈 구간을 지나 큰 상승이 발생하였습니다.
 
5분봉이었고 하루도 안지났는데 -8.33%의 손해가 발생하였습니다. 레버리지까지 사용했다면 벌었던 수익을 고스란히 반납 할 정도의 정말 큰 손해입니다.
 
이와 같이 볼린저 밴드 매매 기법의 기본 전략은 손익비가 너무 좋지 않은 모습을 보여줘 기본 전략의 더 긴 기간(2020년~2023년) 테스트는 생략하도록 하겠습니다.
승률은 높지만 손익비가 좋지 않아 더 긴 기간의 테스트는 무의미하다고 생각합니다.
 
아래는 전체 거래 리스트입니다.

전체 거래 리스트를 차트 데이터와 함께 올리고 싶지만, 차트 데이터는 거래 하나당 3~4MB의 용량을 가지고 있고 전체 거래에 대한 데이터는 7GB를 넘어가고 있어 올릴 곳이 마땅치 않습니다.

대신 차트 데이터를 제외한 전체 거래에 대한 데이터를 엑셀 파일로 올려드립니다.

output.xlsx
0.12MB

 
기본 전략을 백테스팅하면서 상, 하단선에서 진입하고 하, 상단선에 청산을 하는데 이 목표가가 너무 큰것인가 하는 생각이 들었습니다.
그래서 개선 전략에 대한 테스트를 진행하기 전에 기본 전략을 약간 수정하여 테스트 해 보겠습니다.
 
 

2.2 기본 전략(+청산 조건 변경)

진입 조건 :
볼린저 밴드 상, 하단 터치시 다음 봉의 시가
 
청산 조건 :
매수, 매도 포지션 모두 볼린저 밴드 중단선 터치시
 
기간 : 
2023.01.01 ~ 2023.07.15

욕심 부리지 않고 목표가를 낮춰 볼린저 밴드 중단선에서 청산하도록 하였습니다.
그럼 바로 결과 보여드리겠습니다.

기본 전략(+중단선 청산)에 대한 백테스팅 툴 메인 화면

 
빠른 청산이 이루어지다 보니 이전 기본 전략 보다 약 3000건의 거래가 더 발생하였고, 승률은 이전과 비슷합니다.
중요한 건 Top 5와 Worst 5의 모두 수익률이 줄어들었지만 여전히 Worst 5의 수익률이 좋지 않다는 것입니다.
 
그래서 세부 차트 분석은 스킵하고,
전체 거래 리스트에 대한 엑셀만 올리고 기본 전략에 대한 테스트를 마무리 하겠습니다.

output.xlsx
0.21MB

 

2.3 개선 전략

이제 개선 전략입니다.
 
진입 조건 :
매수 포지션 : 200 이평선 상단에 캔들 위치 + 볼린저 밴드 하단 터치시 다음 봉의 시가
매도 포지션 : 200 이평선 하단에 캔들 위치 + 볼린저 밴드 상단 터치시 다음 봉의 시가
 
청산 조건 :
매수 포지션 : 볼린저 상단선 터치 즉시 정리
매도 포지션 : 볼린저 하단선 터치 즉시 정리
 
기간 : 
2023.01.01 ~ 2023.07.15

 

200 이평선을 이용하여 해당 추세에만 매매를 하도록 하였습니다.

 

같은 기간에서 기본 전략은 4287건의 총 매매가 발생하였지만,
개선 전략에서는 총 2186건의 매매가 발생하였습니다.
 
승률도 비슷하니 기본 전략의 단점이었던 손익비가 얼마나 개선되었는지 확인하기 위해 Worst 5 Profits을 비교해 보겠습니다.

기존 큰 손해를 안겨준 상위 4건의 거래가 모두 200 이평선에 필터링되어 사라졌습니다.
하지만 여전히 손해가 큽니다.
 
어떤 잘못된 진입이 있었는지 Worst 5의 거래를 차근 차근 살펴보겠습니다.
 
 
868번 거래입니다.

200 이평선 아래에 캔들이 위치했고, 볼린저 상단선을 터치해서 매도 포지션을 진입하였습니다.
하지만 캔들은 200 이평선을 그대로 뚫고 상승하였습니다.
 
위 차트의 하단 거래량 막대 그래프를 보면 이전 봉에서 상단 터치시 거래량이 핑크색이 된 것을 볼 수 있습니다.
핑크색은 해당 거래량이 거래량 평균의 2배를 넘겼을 때 칠하도록 설정한 색으로,
볼린저 상, 하단 부근에서 거래량이 유의미하게 차이가 있을 때는 그 방향 그대로 진행할 수 있다고 가정 할 수 있습니다.
 
 
451번 거래입니다.

이번 거래는 거래량 차트를 볼 필요도 없이 진입 자체가 잘 못된 것을 볼 수 있습니다.
 
진입 조건인 직전 봉이 볼린저 하단선을 터치하고 200 이평선 상단에 캔들이 위치한 조건을 만족하였지만,
직전 봉이 볼린저 상, 하단 모두 터치를 하였고, 진입 시점의 시가도 이미 볼린저 하단선을 크게 벗어나 중심선 까지 돌파한 것을 볼 수 있습니다.
 
따라서 아래 조건을 백테스팅시 추가하도록 합니다.

  1. 매수 포지션에서는 볼린저 하단에서 볼린저 중심선 사이에 위치(되도록 볼린저 하단에 위치)
  2. 매도 포지션에서는 볼린저 상단에서 볼린저 중심선 사이에 위치(되도록 볼린저 상단에 위치)

 
350번 거래입니다.

진입시 시가가 볼린저 중심선을 넘어가지는 않았지만, 거의 중심선 부근에 위치해 있습니다.
이는 이전 451번 거래서 설정한 조건(매수 포지션에서는 볼린저 하단에 위치한다)으로 필터링이 가능할 것 같습니다.
 
 
266번 거래입니다.

이 거래에서는 딱히 필터링 할만한 조건이 보이지 않습니다.
다음 거래를 보도록 하겠습니다.
 
 
407번 거래입니다.

진입 봉의 시가는 적절하지만 868번 거래와 마찬가지로 이전 봉에서 유의미한 거래량이 확인되었습니다.
따라서 거래량 조건을 통해 해당 거래는 필터링 될 수 있겠습니다.
 
그럼 지금까지 수정한 전략을 바탕으로 새롭게 백테스팅을 진행해 보겠습니다.
 

2.4 개선 전략 + 조건 필터링

진입 조건 :
매수 포지션 : 200 이평선 상단에 캔들 위치 + 볼린저 밴드 하단 터치시 다음 봉의 시가
매도 포지션 : 200 이평선 하단에 캔들 위치 + 볼린저 밴드 상단 터치시 다음 봉의 시가
 
+ 이전 봉(직전 3개)에서 거래량 평균의 2배 이상 발생시 진입 보류
+ 진입 봉의 볼린저 밴드 상, 하단 위치 
 
청산 조건 :
매수 포지션 : 볼린저 상단선 터치 즉시 정리
매도 포지션 : 볼린저 하단선 터치 즉시 정리
 
기간 : 
2023.01.01 ~ 2023.07.15
 
기존 개선 전략에 거래량과 진입 봉의 시가 위치를 필터링한 전략의 백테스팅 결과입니다.
 

 
이전 전략들과 비교를 해보겠습니다.

 기본 전략개선 전략개선 전략 + 조건 필터링
총 거래428721861472
승률 75.08%76.30%76.36%
Worst 5 평균 -7.02%-4.55%-3.79%


조건을 추가할 수록 총 거래수는 줄어들었지만, 대신 Worst 5의 평균 또한 꾸준히 낮아지고 있습니다.
하지만 여전히 손익비는 좋지 않습니다.
 
더 개선을 할 수 있을지 세부 거래들을 한번 보도록 하겠습니다.
 
 
241번 거래입니다.

200 이평선 부근에서 매수 포지션을 잡았는데, 이평선을 그대로 뚫고 하락하였습니다.
거래량에는 특이점이 없고 이평선 부근이라는 점만 우선 기억하겠습니다.
 
 
175번 거래입니다.

거래량 관련 특이사항 없고, 이평선과도 이격되어있습니다.
딱히 필터링 할 건 보이지 않고 이평선 터치시 손절 로직이 필요해 보입니다.
 
 
277번 거래입니다.

이전 3개봉 까지의 거래량만 확인하였는데,
이전 4번째 봉에서 기존 거래 대비 2배 만큼의 거래량과 동반하여 하단선 돌파가 이루어졌습니다.
 
이후 직전 봉에서 볼린저 하단선 터치 후 중심선까지는 반등이 발생하였지만,
힘을 잃고 쭉 하락하였습니다.
 
 
438번 거래입니다.

277번 거래와 유사한 패턴입니다.
이전 봉에서 거래량과 함께 하락 돌파 시도되었고, 이후 하단선 터치시 진입하였지만 중심선 돌파 후 급락이 발생하였습니다.
 
 
326번 거래입니다.

Worst 1등인 241번 거래와 동일 패턴입니다.
이평선 부근에서 매수 포지션을 잡았지만 이평선이 뚫리고 하락이 발생하였습니다.
 
이번 Worst 5 거래 분석을 통해서는 두가지 패턴을 확인하였습니다.

  1. 이평선 부근에서 포지션 진입시 이평선이 뚫리고 급락 or 급상승이 발생할 수 있다.
  2. 진입전 직전봉들에서 돌파 시도가 있었고, 중심선을 뚫었다면 손절을 진입 시점으로 조정하면 리스크를 줄일 수 있다.

 

2.5 개선 전략 + 조건 필터링2

진입 조건 :
매수 포지션 : 200 이평선 상단에 캔들 위치 + 볼린저 밴드 하단 터치시 다음 봉의 시가
매도 포지션 : 200 이평선 하단에 캔들 위치 + 볼린저 밴드 상단 터치시 다음 봉의 시가
 
이전 봉(직전 3개)에서 거래량 평균의 2배 이상 발생시 진입 보류
진입 봉의 볼린저 밴드 상, 하단 위치
+ 이평선 부근에서 진입 보류
+ 진입전 직전봉들에서 돌파 시도가 있을 때 손절가 조정
 
청산 조건 :
매수 포지션 : 볼린저 상단선 터치 즉시 정리
매도 포지션 : 볼린저 하단선 터치 즉시 정리
 
기간 : 
2023.01.01 ~ 2023.07.15
 
기존 개선 전략에 거래량과 진입 봉의 시가 위치를 필터링한 전략의 백테스팅 결과입니다.
 
 

필터링 추가로 거래수가 또다시 줄어 들었지만 Worst 5에서 드디어 -1%대가 보입니다.
좀 더 보기 쉽게 이전 전략들과 비교를 해보겠습니다.

 기본 전략개선 전략개선 전략 + 조건 필터링개선 전략 + 조건 필터링2
총 거래4287218614721184
승률 75.08%76.30%76.36%72.47%
Worst 5 평균 -7.02%-4.55%-3.79%-2.58%

 
많이 개선되었습니다.
그럼 한번 더 개선할 수 있을지 세부 거래를 보겠습니다.
 
 
137번 거래입니다.

이전 전략에서는 175번 거래였습니다. 이번에도 필터링 되지 않고 남아있습니다.
우선 쭉 살펴보겠습니다.
 
 
159번 거래입니다.

 
 
84번 거래입니다.

 
 
270번 거래입니다.

 
 
241번 거래입니다.

 
지금까지 이용한 200 이평선과 거래량만 가지고는 더 이상 피할 수 없는 거래들입니다.
그래서 마지막 백테스팅은 진입 조건이 아닌 리스크 관리를 위해 손절을 이평선이 터치될 때 하도록 하겠습니다.
 
즉, 매수 매도 포지션에 대해 손절 라인을 200 이평선으로 두는 것입니다.
 
 

2.6 개선 전략 + 조건 필터링2 + 200 이평선 손절 라인

진입 조건 :
매수 포지션 : 200 이평선 상단에 캔들 위치 + 볼린저 밴드 하단 터치시 다음 봉의 시가
매도 포지션 : 200 이평선 하단에 캔들 위치 + 볼린저 밴드 상단 터치시 다음 봉의 시가
 
이전 봉(직전 3개)에서 거래량 평균의 2배 이상 발생시 진입 보류
진입 봉의 볼린저 밴드 상, 하단 위치
이평선 부근에서 진입 보류
진입전 직전봉들에서 돌파 시도가 있을 때 손절가 조정
 
청산 조건 :
매수 포지션 : 볼린저 상단선 터치 즉시 정리
매도 포지션 : 볼린저 하단선 터치 즉시 정리
+ 200 이평선에 손절 라인 설정
 
리스크 관리를 위해 200 이평선에 도달할 때 칼같이 손절을 진행하였습니다.
과연 결과가 좋게 나왔는지 보겠습니다.

손절이 빨리 일어나다 보니 Worst 5의 평균 마이너스 수익률은 낮출 수 있었지만, 이로 인해 승률이 20% 가까이 떨어졌습니다.
200 이평선 터치 후 반등이 발생 한 많은 거래들이 손절로 전환된 결과입니다.
 
 

2.7 결론

볼린저 매매 기법을 개선하기 위하여 다양한 조건과 전략을 설정해보았습니다. 우리의 관찰 결과, 조건을 많이 설정할수록 거래 횟수는 감소하며, 리스크 관리를 위해 타이트하게 손절 라인을 정하면 승률이 감소하는 경향을 확인할 수 있었습니다.

물론 이러한 결과가 모든 시나리오에서 일관되게 나타나는 것은 아닙니다. 다만, 외부에서 많이 언급되는 만큼의 드라마틱한 결과를 기대하기는 어렵다는 것을 확인하였습니다.

가장 좋은 결과를 보여준 "개선 전략 + 조건 필터링2"의 전체 거래 정보를 첨부하며, 이번 포스팅을 마무리하도록 하겠습니다.

output.xlsx
0.04MB

 
감사합니다.