파이썬 바이낸스 API로 비트코인 투자 백테스팅 : 일중 강도(II) 매매 전략

파이썬 바이낸스 API로 비트코인 투자 백테스팅 : 일중 강도(II) 매매 전략

일중 강도(Intrday Intensity, II)를 이용하여 비트코인 투자 연습도 하고 파이썬 판다스도 익혀보겠습니다. 지금까지 변동성 돌파전략, 이동평균선, MACD, RSI 매매 전략, 그리고 MFI 매매 전략까지 백테스팅 해 보았습니다. 여기에 더해 이번 포스팅에서는 파이썬 바이낸스 API로 비트코인 캔들 데이터를 가져온 후, 파이썬 판다스로 일중 강도(II) 매매 전략을 백 테스팅 해보겠습니다.


글의 순서

백테스팅 (back testing)
추세추종 기법 중 일중 강도 II%를 이용한 반전 매매기법
일중 강도(II) 매매 전략 백 테스팅 과정 : 바이낸스 비트코인 시계열 데이터
파이썬 코드 : 바이낸스 API, 판다스로 MFI 매매 전략 백 테스팅


백테스팅 (back testing)

백테스팅은 과거의 가격정보로 지금 적용하고자 하는 매매 전략이 얼마나 효과적인지를 테스트 해보는 과정입니다. 지금까지 변동성 돌파전략, 단순이동평균, 지수이동평균, MACD 매매 전략, RSI, MFI 매매전략을 적용했을 때 얼마나 많은 수익을 얻을 수 있을지 알아보았습니다. 이번에는 일중 강도 매매 전략 차례입니다.

파바이낸스 비트코인 변동성 돌파전략 백 테스팅 결과,
파이썬 바이낸스 비트코인 투자 백테스팅 : 이동평균선 매매 기법,
파이썬 바이낸스 비트코인 투자 백테스팅 : 지수 이동평균선 매매 기법,
파이썬 바이낸스 API로 비트코인 투자 백테스팅 : MACD 매매 전략,
파이썬 바이낸스 API로 비트코인 투자 백테스팅 : RSI 매매 전략,
파이썬 바이낸스 API로 비트코인 투자 백테스팅 : MFI 매매 전략,



추세추종 기법 중 일중 강도 II%를 이용한 반전 매매기법

볼린저 밴드와 함께 일중 강도를 활용하는 매매기법을 반전 매매기법이라고 합니다. 반전 매매기법은 주가가 반전하는 지점을 찾아내서 매수 또는 매도하는 기법입니다. 볼린저 밴드 상 상승인데, 약세 지표가 뜬다면 매도하고, 볼린저 밴드 상 하락인데, 강세 지표가 뜨면 매수합니다. 구체적으로는 아래의 과정을 따릅니다. 참고로, 현재 가격을 볼린저 밴드상 위치로 나타내 주는 지표가 %b입니다.

▶매수 : %b가 0.05보다 작고, II%가 0보다 클 때 → 볼린저 밴드 하단에 있는데, 강세지표가 발생한 경우,
▶매도 : %b가 0.95보다 크고, II%가 0보다 작을 때 → 볼린저 밴드 상단에 있는데, 약세지표가 발생한 경우


일중 강도(II) 매매 전략 백 테스팅 과정 : 바이낸스 비트코인 시계열 데이터

지난 포스팅의 이동평균선, MACD 매매 전략, RSI, MFI 매매 전략과 비교하기 위하여 일중 강도를 사용한다는 것 외에 다른 것들은 모두 동일하게 유지하고 백테스팅합니다. 파이썬 바이낸스 API로 추출한 3개월(2022년 12월 ~ 2023년 2월) 동안의 비트코인 시계열 데이터로 수행한 백 테스팅 과정을 정리해 보겠습니다.

(1) 파이썬 바이낸스 API로 비트코인 시계열 데이터 가져오기

파이썬 바이낸스 API의 get_historical_klines() 함수로 비트코인 가격을 시계열 데이터로 가져옵니다. 전체 구간이 3개월이고, II%를 구할 때의 기준 구간이 21임을 감안하여, 시간간격을 4시간(4h)로 하였습니다.

※ 참고로 2022년 12월 부터 2023년 2월까지의 구간에서 시간간격을 1일(1d)로 했을 때, 일중강도 매매 전략으로는 매수 또는 매도 조건이 한 번도 발생하지 않았습니다.

(2) 볼린저 밴드 지표 %b 구하기

%b =(종가 – 하단 볼린저 밴드)/(상단 볼린저 밴드 – 하단 볼린저 밴드)

(3) 일중 강도 II, 일중강도율 II% 구하기

일중 강도 II = (2 × 종가 – 고가 – 저가)/(고가 – 저가) × 거래량
일중 강도율 = (21일 동안의 일중 강도의 합)/(거래량의 21일 합) * 100

(4) 매수, 매도 위치 찾아내기

매수 조건인 %b가 0.05보다 작고, II%가 0보다 클 때와 매도 조건인 %b가 0.95보다 크고, II%가 0보다 작을 때를 찾아냅니다. 여기서는 교차가 발생한 날의 종료가로 매수 또는 매도했다고 가정하였습니다.

(5) 이익 계산 : 이익(profit) = 매도가 – 매수가

매도 가격에서 매수 가격을 빼면 전체 구간에서의 이익이 됩니다. 2022년 12월 부터 2023년 2월까지의 구간에서 시간간격을 1일(1d)로 했을 때, 매수 또는 매도 조건이 한 번도 발생하지 않았습니다. 시간간격을 4시간(4h)로 조절했을 때, 매수 조건이 7회, 매도 조건이 4회 발생했습니다.

아래 그림에서 손실과 수익 구간을 확인할 수 있는데요. 첫 번째 사고팔았던 구간에서 18.67 USDT 손실, 두 번째 사고 팔았던 구간에서 6846.11 USDT 이익을 봐서, 총 6827.44 USDT의 이익을 얻었습니다.

▶첫 번째 사고, 팔았던 구간 : 18.67 USDT 손실
▶두 번째 사고, 팔았던 구간 : 6846.11 USDT 이익

※ 참고로, 이 포스팅에서는 거래 수수료를 0으로 가정하고 계산하였습니다.

일중 강도 II 매매 전략 백테스팅


파이썬 코드 : 바이낸스 API, 판다스로 일중 강도 II 매매 전략 백 테스팅

지금까지의 과정을 ‘판다스 일중 강도 II 매매 전략 백 테스팅’ 파이썬 코드에 나타내었습니다. 앞에서 설명한 %b 와 II 조건을 함께 만족하는 교차 지점을 찾아내는 것이 코드의 핵심부분이라고 할 수 있습니다. 코드의 #07) 부분을 유심히 봐 주시기 바랍니다. 시계열 데이터와 매수, 매도 지점을 표시한 차트는 C:/_python/pandas/backtesting/ 라는 폴더에 IIp.png 라는 이름의 그림파일로 저장됩니다.

판다스 데이터프레임에서 유용하게 쓰이는 함수인 np.where(), rolling(window).mean(), rolling(window).sum(), diff() 함수, count() 함수의 활용법을 확인해 주시기 바랍니다. 또한, 종이 한 장에 그래프 두 개를 나란히 넣기 위해 fig, axs를 지정하는 부분과 x축의 날짜 범위를 맞추기 위해 numpy를 사용한 부분은 시계열 데이터 분석에서 자주 활용되는 중요한 부분입니다.


마치며 …

이번 포스팅에서도 바이낸스 비트코인 투자 연습을 하면서 판다스 데이터프레임을 익혀보았습니다. 파이썬 바이낸스 API로 비트코인 시계열 데이터를 가지고 온 후, 파이썬 판다스로 일중 강도 II 매매 전략을 백 테스팅 하였습니다.

데이터 분석에 유용하게 쓸 수 있는 판다스 데이터프레임의 열 계산 방법과 np.where(), rolling(window).mean(), rolling(window).sum(), diff() 함수, count() 함수를 유심히 봐 주시기 바랍니다.

 

 

함께 참고하면 더 좋은 글 :
1. 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
2. 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
3. 바이낸스 API 보안을 위한 환경 변수 설정 : 윈도우 10
4. 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리
5. 파이썬 바이낸스 API로 차트 분석 : 판다스 이동평균선
6. 시계열 데이터 분석 : 지수 이동평균 (EMA)
7. 파이썬 바이낸스 API로 비트코인 시계열 데이터 분석 : 이동평균 수렴확산 (MACD)
8. 파이썬 바이낸스 API로 시계열 데이터 분석. 판다스, 볼린저 밴드 (Bollinger Band)
9. 시계열 데이터 기술적 분석 : 일중 강도 (Intraday Intensity, II)
10. 시계열 데이터 분석 : 추세분석 지표 6가지
11. 시계열 데이터 분석 : 과매수, 과매도, 강세, 약세
12. 파이썬 프로그래밍 시작


참고자료

[1] python-binance Docs >> get_historical_klines
[2] 김황후(2020), 파이썬 증권 데이터 분석, 한빛미디어
쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Leave a Comment