파이썬 바이낸스 API로 비트코인 투자 백테스팅 : RSI 매매 전략

파이썬 바이낸스 API로 비트코인 투자 백테스팅 : RSI 매매 전략

상대강도지수(RSI)를 이용하여 비트코인 투자 연습도 하고 파이썬 판다스도 익혀보겠습니다. 지금까지 변동성 돌파전략, 이동평균선 매매 기법, MACD 매매 전략을 백테스팅 해 보았는데요. 파이썬 바이낸스 API로 비트코인 캔들 데이터를 가져온 후, 파이썬 판다스로 RSI 매매 기법을 백 테스팅 해 보는 것이 이 포스팅의 목적입니다.


글의 순서

RSI, (Relative Strength Index, 상대강도지수)
백테스팅 (back testing)
RSI 매매 전략 : 골든크로스 vs. 데드크로스
RSI 매매 전략 백 테스팅 과정 : 바이낸스 비트코인 시계열 데이터
파이썬 코드 : 바이낸스 API, 판다스로 RSI 매매 전략 백 테스팅


RSI, (Relative Strength Index, 상대강도지수)

RSI는 일정 기간 동안 주가가 전일 가격에 비해 상승했는지, 하락했는지의 추세를 0 ~ 100의 퍼센트 수치로 나타낸 지표입니다. RSI는 현재가 과매수 상태인지, 과매도 상태인지를 알려줍니다. 여기서, 과매수란 주가 폭등으로 투자자들이 주식을 적정 수준 이상으로 매수하는 현상을 말합니다. 상승한 변화량이 크면 과매수로, 하락한 변화량이 크면 과매도로 판단하는 방식입니다. 보통 RSI 퍼센트 수치로는 30이하면 과매도, 70 이상이면 과매수로 해석합니다.



백테스팅 (back testing)

백테스팅은 과거의 가격정보(시계열 데이터)로 투자 알고리즘을 검증하는 과정을 말합니다. 아래에 링크한 지난 포스팅에서 다양한 매매 기법을 적용했을 때 어떤 효과가 있을지 확인해 보았습니다. 변동성 돌파전략, 단순이동평균, 지수이동평균, MACD 매매 전략을 적용했을 때와 이번 포스팅의 RSI 매매 전략을 비교해 보시기 바랍니다.

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


RSI 매매 전략 : 골든크로스 vs. 데드크로스

골든크로스와 데드크로스를 보는 기준 선은 RSI와 RSI 30%선, RSI 70%선입니다. 단기적인 관점에서는 일반적으로 RSI가 70% 이상이 되어 과매수 상태였다가 70% 이하로 내려갈 때 매도하며, 30% 이하인 과매도 상태에서 30% 선을 교차해서 올라갈 때, 매수합니다.

반면, 장기적 관점에서는 좀 길게 봐야 합니다. 장기적으로 상승추세일 때, 70% 이상일 때가 많으므로, 50% 보다 밑으로 떨어질 때(하향 돌파할 때) 매도하며, 장기적인 하락 추세일 때는 30% 이하일 때가 많으므로, 50%를 상향 돌파할 때 매수합니다.


RSI 매매 전략 백 테스팅 과정 : 바이낸스 비트코인 시계열 데이터

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

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

파이썬 바이낸스 API의 get_historical_klines() 함수로 코인 가격을 시계열 데이터로 쉽게 가져올 수 있습니다. 이 함수의 출력값은 ohlcv라는 캔들 데이터 형태입니다. 여기서, o는 시작가(open), h는 최고가(high), l은 최저가(low), c는 종료가(close), 그리고 v는 총 거래량(volume)을 의미합니다. 시작가를 시가, 최고가를 고가, 최저가를 저가, 종료가를 종가라고도 부릅니다.

(2) 상대강도지수 RSI 구하기

step1) 기간 선정 : n일 (n_rsi = 9로 지정)
step2) 상승분 Up 값의 n일 동안의 평균 AU 구하기
step3) 하락분 Down 값의 n일 동안의 평균 AD 구하기
step4) 상대강도 RS = AU/AD 구하기
step5) 상대강도지수 RSI = RS/(1+RS) × 100% 구하기

(3) RSI 30%, 70% 교차지점 탐색

RSI가 70% 이상이 되어 과매수 상태였다가 70% 이하로 내려갈 때와, 30% 이하인 과매도 상태에서 30% 선을 교차해서 올라갈 때를 찾아냅니다. 여기서는 교차가 발생한 날의 종료가로 매수 또는 매도했다고 가정하였습니다.

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

매도 가격에서 매수 가격을 빼면 전체 구간에서의 이익이 됩니다. 2022년 12월 부터 2023년 2월까지의 구간에서는 매수에 해당하는 RSI 교차가 2회, 매도에 해당하는 RSI 교차가 3회 발생했습니다.

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

▶첫 번째 사고, 팔았던 구간 : 5990.03 USDT 이익
▶두 번째 구간 : 1982.37 USDT 이익

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

상대강도지수 RSI 매매 전략 백테스팅


파이썬 코드 : 바이낸스 API, 판다스로 RSI 매매 전략 백 테스팅

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


마치며 …

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

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

 

 

함께 참고하면 더 좋은 글 :
1. 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
2. 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
3. 바이낸스 API 보안을 위한 환경 변수 설정 : 윈도우 10
4. 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리
5. 파이썬 바이낸스 API로 차트 분석 : 판다스 이동평균선
6. 시계열 데이터 분석 : 지수 이동평균 (EMA)
7. 파이썬 바이낸스 API로 비트코인 시계열 데이터 분석 : 이동평균 수렴확산 (MACD)
8. 파이썬 바이낸스 비트코인 투자 백테스팅 : 지수 이동평균선 매매 기법
9. 파이썬 바이낸스 API로 비트코인 투자 백테스팅 : MACD 매매 전략
10. 바이낸스 비트코인 투자 백 테스팅. 파이썬 코인 투자 연습
11. 파이썬 프로그래밍 시작


참고자료

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

Leave a Comment