이번 글에서는 앞서 예고한 바와 같이 시스템 트레이딩 로직에 따른 매수/매도 중 발생하는 매수 / 매도 가격에 대한 이야기를 나누어 보고자 한다.
본격적인 이야기를 시작하기 전에 우리는 슬리피지(slippage)에 대한 개념을 정립 할 필요가 있다. 이 슬리피지에 대한 개념은 앞선 승률과 손익비와 같은 맥락으로, 대부분의 투자자들이 인지하고 있지 못한 개념이다.
슬리피지(slippage)
슬리피지는 slip (미끄러지다) 와 page(페이지,장)가 결합된 단어로, 그 의미를 트레이딩 관점에 비추어 표현해보자면, 매수 / 매도 하고자 하는 특정 가격에 매수 / 매도를 하지 못하고 미끄러진 범위 정도로 표현할 수 있겠다.
내가 5,000원을 소비하여, 500원에 치토스 10봉지를 사고 싶은데, 시장에는 500원에 치토스 8봉지, 550원에 치토스 2봉지가 있다면 이때 살 수 있는 치토스는 총 500원에 8봉지 (4,000원) 550원에 1봉지 총 9봉지 밖에 사지 못하게 될 것이다. 이때 발생한 슬리피지라 함은 1) 내 예상과 다른 가격에 구매한 치550원의 치토스 1봉지와 2) 내 계획과 다르게 구매하지 못한 치토스 1봉지에 따른 예상 수량 미달에 해당한다.
실제로 이러한 슬리피지는 꽤 자주 나타나게 된다. 위 그림은 2020년 4월 3일 오후 12시 51분에 캡쳐한 비트코인의 실시간 오더 북을 나타내며, $ 6,814.9에서 $ 6,811.6 까지의 총 매수 주문량은 0.8+0.2+0.0475+0.6205+0.5805+0.4499+0.2 = 2.89844 개이며, 만약 내가 비트코인 1개를 $ 6,814.9에 매도 할 경우 실제 해당 가격에 체결되는 수량은 0.8개에 해당하며, 매도 가격을 직접 입력한 지정가 매도 주문의 경우에는 0.2개의 매도 실패 슬리피지를, 해당 가격에 시장가 매도 주문을 한 경우에는 매도 하려는 주문 수량 1개를 충족하는 $ 6,813.9 까지 매도하게 되며, 이때 발생하는 슬리피지는 (6,813.9–6,814.9)/6,813.9 * 100 가 된다.
이렇듯 시장에서 내가 원하는 가격에 거래를 체결할 수 없는 경우는 상당히 많이 나타나고 있으며, 그 때 발생하는 슬리피지는 나의 (매수 또는 매도 벽) / 나의 자산 < 1 이 되는 경우 더 큰 비율로 나타나게 된다.
“그렇다면, 현실적인 매수/매도 가격은 어떻게 설정해야 될까?”
지금부터 몇가지 실험을 해보며, 해답을 찾아보겠다.
이 실험에서 사용 되는 트레이딩 로직은 중기(120), 장기(200) 이동평균선의 수렴과 발산에 의한 것으로, 트레이딩 뷰에서 지원하는 파인스크립트 언어로 작성된 코드는 다음과 같다.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Mby_lab
//@version=4
study(“이동평균선 전략”, overlay=true)
//이동평균선 calculate
pine_sma(x, y) =>
sum = 0.0
for i = 0 to y — 1
sum := sum + x[i] / y
sum
//
//이동평균선 선언/출력
sma_120 = pine_sma(close,120)
sma_200 = pine_sma(close,200)
//
//매수 & 매도 조건설정
signal_g = crossover(sma_120, sma_200) //매수조건 : 120,200일 이동평균선 골든크로스
signal_b = crossunder(sma_120, sma_200) //매도조건 : 120,200일 이동평균선 데드크로스
//
//매수/매도 타점 입력
var target = 0. //타겟 초기 값 = 0 선언
target := signal_g ? close : signal_b ? close : na //시그널 굳/배드 일경우에만 시가를 입력
//
//출력
plot(sma_120, color=color.red) //120 이평
plot(sma_200, color=color.blue) //200 이평
plot(target, style=plot.style_linebr, color=color.red, linewidth=3, transp=0, title=”target”)
//
위 차트는 우리가 이번 실험에서 사용할 이동평균선 매매전략을 출력한 것으로, 120 이평선 (빨간 실선)과 200 이평선 (파란 실선)이 데드 크로스를 이뤘을 때 종가는 $ 6965.3 로 나타났다.
여기서 부터 우리의 실험은 시작된다. 1) $ 6965.3에 시그널이 떴을 때 지정가 매수로 매도 하는 방법과 2) 시그널이 발생 시 시장가로 매도 하는 방법 중 어떤 선택이 가장 원하는 수량을 원하는 가격에 소화 할 수 있었을까?
이 실험을 확인하기 위해서는 당시 실시간 오더북을 확인해 보면 가장 좋으나, 그 데이터를 가져올 방도가 없기 때문에 우리는 그 시점의 주가 흐름과 볼륨을 근거로 1) 지정가 매도, 2) 시장가 매도 중 어떠한 선택이 더 현실적인지 판단해보기로 한다.
우선, 해당 시그널 발생 후 실제 주가는 최대 42.57%의 하락률을 보여주었으니, 이 매도 포지션 전략은 유효한 전략임을 뜻한다.
앞서 일봉에서 확인한 매도 트리거가 발생한 시점은 2019년 11월 24일 09:00으로, 실제 매도 가격이 나타난 시각은 이보다 한참 후인 25일 08:00이다.
(이러한 시간적 괴리는 각 타임 프레임에 의한 것으로, 본 실험에는 영향을 주지 않는 것으로 판단한다.)
시간적 괴리가 타임 프레임에 의한 것일지라도, 우리는 실제 매도 가격이 출현한 25일 08:00에 나타난 엄청난 매도 볼륨 속에 과연 “지정가" 매도로 원하는 트레이딩을 진행할 수 있었을까?
다음 시간에는 위의 실험결과에 대해서 좀 더 자세한 이야기 나누어 보도록 하겠다. (사실, 세로로 긴 게시글은 너무 길면 집중력과 가독성이 떨어져서… 다음 게시글로…)