삶의 공유

[파이썬] 비트코인 자동매매 전략 Study(가격, 거래량 기반 전략)-백테스팅 본문

Data Scientist/Python

[파이썬] 비트코인 자동매매 전략 Study(가격, 거래량 기반 전략)-백테스팅

dkrehd 2022. 4. 25. 07:07
728x90
반응형

안녕하세요 ~~

 

이번 포스팅은 지난 포스팅에서 짠 전략이 얼마나 효과가 있었을지에 대해서 확인해보는 백테스팅을 해보는 시간을 갖겠습니다.

 

이전 내용이 생각이 안나신 다면 하기 링크 클릭 해서 보시고 오시면 됩니다 !

 

https://wg-cy.tistory.com/152

 

[파이썬] 비트코인 자동매매 전략 Study(가격, 거래량 기반 전략)-2

안녕하세요 ~ 이번 시간에도 앞에서 다룬 비트코인 자동매매 전략 Study 편을 이어서 진행해보겠습니다. 먼저 앞에서 다룬 데이터를 불러와보겠습니다. 이 데이터로 수익률의 히스토그램 그래프

wg-cy.tistory.com

 

 

전략대로 짠 매수, 매도 시그날인 "position" 컬럼을 기반으로 수익률을 확인 해보겠습니다

 

data['strategy'] = data.position.shift(1) * data['returns']
data

 

 

 

그럼 bitcoin을 그냥 사고 팔았을때와, 저희가 짠 전략으로 매수 매도 했었을때의 누적 수익률을 확인 해보겠습니다.

 

# log 수익률 계산
data[['returns', 'strategy']].sum().apply(np.exp)

 

 

와.. 어마어마한 차이가 있네요..

 

자 이제 이것을 누적수익률의 별도 컬럼으로 만들어 주겠습니다.

 

data['cstrategy'] = data['strategy'].cumsum().apply(np.exp)

 

이 내용을 기반으로 시각화 하여 저희가 만든 전략이 얼마나 효과가 있는지 직관적으로 볼수 있게 해보겠습니다.

 

data[['creturns', 'cstrategy']].plot(figsize=(12,8), fontsize=12)
plt.show()

 

 

와 엄청 차이가 나죠,,,? 뭔가 이상한거 같기도 하네요..ㅎㅎ 다시한번 raw data를 살펴봐야겠습니다..

 

우선은 그대로 진행 하겠습니다.

 

자 이제 여기서 중요한 요소가 있습니다 ! 바로 거래 수수료 인데요, 위의 수익률이 거래 수수료로 인해서 얼마나 반감이 되는지 확인해보는것도 중요한 시사점인것 같습니다.

 

반응형

 

거래 비용 계산하기

다음과 같이 코드를 작성 해 주겠습니다.

data['trades'] = data.position.diff().fillna(0).abs()
data.trades.value_counts()

 

758회의 거래가 발생 하였다는 의미입니다. 이제 이 각각의 거래의 수수료를 부여해보겠습니다.

comissions = 0.00075 # reduced binance commission 0.075%
other = 0.0001 #숨은 거래 비용, 매매 가격차이 & 슬리피지를 위한 비용
ptc = np.log(1-comissions) + np.log(1-other)
ptc

매번 거래 시 위와 같은 수수료가 발생 하는 것을 확인 할 수 있답니다. 이제 이 비용을 수익률에 반영해보겠습니다.

 

data['stategy_net'] = data.strategy + data.trades * ptc
data['cstategy_net'] = data.stategy_net.cumsum().apply(np.exp)
data[['creturns','cstrategy' ,'cstategy_net']].plot(figsize=(12,8), fontsize=12)
plt.show()

 

 

수익률이 거의 절반으로 떨어지는것이 보이시나요 ? 이렇게 거래 수수료가 무시 못할 정도의 비용이 발생한다는 것을 보여 주는 내용인 것 같습니다.

 

꼭 자동 매매 전략을 짜실 때 수수료를 꼭 포함 하셔서 백테스팅을 해보시는것을 추천드립니다.

 

긴 내용이었지만 롱 온리 매수 전략에 대한 포스팅은 마치도록 하겠습니다. 

 

감사합니다.

반응형