News & Events
[알고리즘 트레이딩/시장미시구조] 20. 지정가 주문의 체결확률 시뮬레이션
- 2019년 1월 11일
- Posted by: 인사이트캠퍼스
- Category: 금융/AI/IT 기사
호가창 분석 (8)
지정가 주문의 체결확률 시뮬레이션
Rama Cont의 호가창 모델의 포스트에서 잠시 살펴본 “A stochastic model for order book dynamics” 논문에서는 호가창의 각 Parameter (지정가, 시장가, 취소 주문율)를 추정하고 Markov Process (Birth-Death Process)의 이론을 활용하여, 아래의 확률을 계산하였다 (역 라플라스 변환의 수치해석으로 계산함).
1. 다음 스냅샷에서 Mid-price가 올라갈 확률.
2. Mid-price가 상승하기 전에 지정가 주문이 체결될 확률 등.
그러나 위 논문의 이론을 일반 트레이더가 이해하기는 다소 어려우므로, 이전 시간에 살펴본 포아송 분포의 몬테카를로 시뮬레이션을 통해 위의 확률을 계산해 보도록 한다. 시뮬레이션 방법이므로 당연히 시간은 더 걸리겠지만 결과는 동일할 것으로 생각된다.
위 확률 중, Mid-price가 올라가기 전에 최우선 매수호가에 접수한 지정가 매수주문이 체결될 확률을 계산해 본다. 논문에서는 Mid-price가 올라가기 전의 체결확률을 계산했지만, 여기서는 최우선 Bid-price가 올라가기 전의 매수 체결확률을 계산해 보기로 한다. 만약, 최우선 Bid-price는 변화가 없고 최우선 Ask-price만 올라가도 Mid-price는 상승하므로, 매수 주문이 체결될 확률계산을 위해서는 Bid-price를 고려하는 것이 더 현실적인 것으로 보인다.
아래의 예는 2012.9.5일 코스피 지수선물의 시세데이터를 이용하여 각 평균수량을 추정한 것이다. Bid-price는 총 1,185회 상승하였고 (이 날은 지수가 하락하는 날로 비교적 적게 측정되었음.), 시장가 매도주문의 평균수량은 총 102,492개, 취소주문의 평균수량은 총 177,497개였다. 그리고 최우선 매수 호가창의 평균 잔량은 85개 였다.
위의 상황에서 최우선 매수 호가창에 지정가 매수주문을 넣고, 만약 내 주문이 체결되지 못하고 Bid-price가 올라간다면, 기존 주문은 취소하고, 올라간 가격에 새로 주문을 넣는 경우를 생각해 본다. 최우선 매수호가의 평균잔량은 85개 이므로, 임의 시점에 지정가 주문을 넣으면, 내 주문은 평균적으로 86번째에 있다고 생각할 수 있다 (그냥 85번째라고 하자).
위의 상황을 아래와 같이 시뮬레이션 해 본다. Bid-price의 상승률은 초당 0.055회 (1185/21600 = 0.055) 이고, 시장가 매도 주문율은 초당 4.745개 (102492/21600 = 4.745), 그리고 취소 주문율은 초당 8.217개 (177497/21600 = 8.217) 였다. 여기서 취소 주문은 내 주문 앞에서 취소될 경우도 있고, 내 주문 뒤에서 취소될 경우도 있다. 내 주문이 체결될 확률을 계산하기 위해서는 내 뒤에서 취소될 경우는 고려할 필요가 없고, 내 앞에서 취소될 경우만 고려하면 된다. 취소 주문율 8.217 중에 절반이 내 앞에서 취소된 것으로 보고, 취소 주문율은 4.109 (8.217 / 2 = 4.109)로 적용하였다.
위의 시뮬레이션은 1회 시행으로, 총 24,000번 (12초의 milli-sec)으로 구간을 나누어서 수행하였다 (이전 포스트의 포아송 분포의 시뮬레이션 참조).
* 셀 B6 : = if(rand() < $B$3 / 1000, 1, 0)
* 셀 D6 : = if(rand() < $D$3 / 1000, 1, 0)
* 셀 E6 : = if(rand() < $E$3 / 1000, 1, 0)
* 셀 G6 = G3
* 셀 G7 = G6 – D7 – E7 <– 시장가 주문과 취소 주문에 의해 내 앞의 잔량이 감소함
위와 같이 1회 시뮬레이션을 수행한 결과, 시장가 주문과 취소 주문의 발생에 의해 잔량이 점점 감소하는 것을 볼 수 있고, 9954 ms 시점에서 잔량이 0 이 되었음을 알 수 있다. 또한, 9954 ms 까지 Bid-price가 상승한 경우는 없었으므로 (상승하면 1, 아니면 0, Bid-price의 누적=0 임), 이 시점에서 내 주문이 체결된 것으로 본다. 그러면 이 시뮬레이션의 결과는 Bid-price가 상승하기 전에 내 주문이 체결된 것이다.
이제, 위의 시뮬레이션을 5,000번 반복 수행하고, 그 중 Bid-price가 상승하기 전에 내 주문이 체결된 경우가 몇 번 있었는지 카운트해보면 체결확률을 구해볼 수 있다. 아래의 결과는 위의 시뮬레이션을 5,000번 반복 수행한 결과이다 (세부 내용은 아래의 VBA 코드 참조).
총 5,000번의 시뮬레이션을 시행한 결과, 5,000번 중에 3,059번의 주문이 Bid-price 상승 이전에 체결되었다. 따라서 주문의 체결 확률은 61.18%가 된다. 이것은 임의 시점에서 최우선 매수호가에 지정가 매수주문을 넣으면 약 61%의 확률로 체결된다는 것을 의미한다. 또한, 이것은 매수측 지정가 주문의 Hit 율 (Bid’s Hit rates)을 의미한다. 그러므로 체결확률이 높을 때 지정가 매수주문을 넣으면 Hit rate이 높아진다는 것을 알 수 있다. Hit rate은 Profit에 영향을 미치는 주요한 요인이 된다.
아래 그림은 위의 시뮬레이션을 수행한 VBA 코드이다. 1회 시뮬레이션을 24000번 수행하였고 (For j=1 to 24000), 이것을 다시 5,000번 수행하였다 (For i=1 to 5000).
만약, 지수가 상승하여 Bid-price 상승 강도가 높아진다면, 매수주문의 체결확률은 낮아질 것이다. 아래의 예는 Bid-price가 2,000번 상승했을 때의 시뮬레이션 결과이다. Bid-price가 상승하기 전에 지정가 매수주문이 체결될 확률은 42.52%로 낮아졌다.
위의 상황과 같이 Bid-price 상승률, 시장가 주문율, 취소 주문율의 복합적인 Intensity를 고려한 경우에는 포아송 분포나 지수 분포의 정형화된 수식 (Closed-form)으로 확률을 계산하기는 어렵다. 그러므로 위의 논문에서는 이 상황을 모형화하여 수치해석으로 확률을 계산한 것이고, 여기서는 단순히 몬테카를로 시뮬레이션으로 확률을 계산해 본 것이다.
이 시뮬레이션 결과는 필자가 사용하는 HFT Simulator로 백-테스트할 때의 Hit rates 와 잘 일치하고 있다. 계산된 확률을 매매 전략에 어떻게 적용해야 할지는 좀 더 연구해봐야 하겠지만, 시뮬레이션을 통해 논문을 작성한 저자의 의도를 조금 더 자세히 알게 되었고, 호가창의 중요한 특성중 하나를 알게 된 것 같다
[출처]20. 지정가 주문의 체결확률 시뮬레이션|작성자아마퀀트