News & Events
[알고리즘 트레이딩/시장미시구조] 22. 호가창과 지수 분포 시뮬레이션
- 2019년 1월 11일
- Posted by: 인사이트캠퍼스
- Category: 금융/AI/IT 기사
호가창 분석 (10)
호가창과 지수 분포 시뮬레이션
이번 시간에는 지수 분포의 시뮬레이션을 만들어 보기로 한다. 포아송 분포의 시뮬레이션은 사건의 발생 횟수를 만들어내는 반면에, 지수 분포는 사건 발생 사이의 소요 시간을 만들어낸다. 포아송 분포는 횟수에 대한 정형화된 수식 (Closed-form)을 만들기 어려우나, 지수 분포는 소요 시간에 대한 정형화된 수식을 만들 수 있으므로 시뮬레이션을 만들기가 더 용이하다.
지수 분포에 의한 사건 발생의 소요시간은 아래 수식으로 만들어 낼 수 있다. 식 1)은 지수 분포의 PDF이고, 식 2)는 지수 분포의 CDF 확률이다. 식 2)는 사건 발생의 시간이 특정 시간 (타우)보다 작을 확률을 의미하고, P의 범위는 0 ~ 1 사이의 값을 갖는다. 식 2)를 시간에 대해 정리하면 식 4)를 얻을 수 있다. 식 4)가 바로 지수 분포의 소요 시간을 만들어내는 식이 된다.
식 4)에서 0 ~ 1 사이의 확률 (P)을 랜덤하게 만들어 주고, 사건 발생의 강도 (Lamda)를 이용하면 사건 발생의 소요 시간을 만들어낼 수 있다. 아래 예는 사건이 초당 2건씩 발생하는 상황을 시뮬레이션 한 것이다.
사건이 초당 평균 2건씩 발생하므로, 사건이 발생하는 시간 간격은 0.5초가 된다. 이것은 사건이 평균적으로 0.5초 마다 발생한다는 것을 의미한다. 평균이 0.5초 이므로, 모든 사건이 반드시 0.5초 마다 발생한다는 것은 아니다. 어떤 사건은 0.1초 만에 발생할 수도 있고, 어떤 사건은 1.5초 만에 발생할 수도 있다. 이 모든 시간을 평균하였을 때 0.5초가 된다는 의미이다.
아래 그림의 열B는 각 사건의 발생 시간을 시뮬레이션 한 결과이다. 첫 번째 시뮬레이션에서는 0.1861초 만에 사건이 발생한 것이고, 두 번째는 2.2872초 만에 사건이 발생한 것이다. 열B를 모두 평균하면 0.5304초가 나온다. 이 결과는 초기 조건과 (셀 D3) 잘 부합하므로, 시뮬레이션이 잘 되었다고 볼 수 있다.
이제 위의 논리를 이용하여 이전 포스트 (호가창과 지수분포)에서 계산한 Mid-price가 바뀔 확률을 시뮬레이션을 이용하여 구해보자.
예제) 2012년 9월 5일 (09:00:00 ~ 15:00:00) KOSPI200 지수 선물의 시세 데이터를 이용하여 호가창을 분석해 보았더니, 1일 동안 Mid-price가 총 7,193번 변화 하였다.
Q1) Mid-price가 1번 변하는 데 걸린 평균 시간은 얼마인가?
6시간 (21,600 초) 동안 7,193번 변했으므로, 평균적으로 1번 변하는데 걸린 시간은 (21,600/7,193) 약 3초 이다. 평균 대기 시간 = 3 초
Q2) 단위 시간당 Mid-price의 변화율은 얼마인가?
3초에 1번 변화하였으므로, 초 당 1/3 번 변하였다. 변화율 = 0.33 / sec (λ = 0.33 /sec)
Q3) 특정 시점에 최우선 호가창에 지정가 주문을 넣었다. 지금부터 5초 이내에 Mid-price가 바뀔 확률은 얼마인가?
이전 시간에는 지수 분포의 수식을 이용하여 확률을 계산하였고, 그 결과는 81.11%가 나왔었다. 이번에는 이 확률을 시뮬레이션을 이용해서 구해 보자.
아래 그림과 같이 Mid-price 변화율 (변화 강도)이 0.333이고, 평균 대기시간이 3초인 경우에 지수 분포의 시뮬레이션을 수행해 보았다. 첫 번째 시뮬레이션에서는 (셀 B8) Mid-price가 1.64초 만에 바뀌었고, 두 번째 시뮬레이션에서는 (셀 B9) Mid-price가 1.45초 만에 바뀌었다. 바뀐 시간의 총 평균은 3.03초로 Q1)의 결과와 잘 부합한다.
총 4,000번을 수행하여 Mid-price 변경 시간에 대한 분포를 그려보면 위와 같이 지수 분포가 되고, 4,000번 중에 3,241번이 5초 이하로 집계되었다. 그러면 Mid-price 가 5초 이내에 바뀔 확률은 3,241 / 4,000 = 81.03% 가 된다. 이 결과는 이전 포스트에서 수식으로 계산한 81.11%와 비슷하다. 시뮬레이션 횟수가 증가할수록 두 결과는 점점 같아질 것이다.
이번에는 이전 포스트 (호가창 포아송 분포의 시뮬레이션)에서 포아송 분포의 시뮬레이션으로 구해본 주문 체결 확률을 지수 분포의 시뮬레이션으로 구해보자. 두 분포가 관점만 다를 뿐 서로 동일한 분포이므로, 결과는 동일해야할 것이다.
예제) 시장가 매도 주문 평균 유입률이 초당 4.7개 이고, 현재 최우선 호가창의 매수 잔량이 60개이다. 내 주문이 60번 째 있을 때, 내 주문이 10초 이내에 체결될 확률은 3.81% 로 계산 되었었다. (단, 10초 동안 mid-price의 변화와 취소주문은 없다고 가정한다.)
내 주문이 체결되려면 10초 이내에 시장가 주문이 60건 이상 발생해야 하므로, 지수 분포 시뮬레이션을 60회 실행하여 총 시간을 시뮬레이션 한다. 그러면 시장가 주문이 60건 발생하는데 소요되는 시간을 만들어 볼 수 있다. 이 실험을 4,000번 반복 실행하면 소요 시간의 분포를 만들어낼 수 있고, 이 중 소요 시간이 10초 이내인 개수를 구하면 위의 확률을 구할 수 있다.
시뮬레이션 결과는 아래 그림과 같다. 시장가 매도 주문이 초당 4.7개 발생하므로, 유입률 (혹은 유입 강도) 은 λ = 4.7/초 이다. 0 ~ 1 사이의 랜덤값을 구해서 위 식 4)의 P에 대입하면 시장가 매도 주문 1개 발생 시간을 얻을 수 있고, 60회 반복하면 60개가 발생하는 시간을 얻을 수 있다.
아래 그림에서 첫 번째 지수 분포 시뮬레이션에서 시장가 주문 60건이 발생하는데 13.19초가 소요되었고 (셀 B8), 두 번째 시뮬레이션에서는 12.22초가 소요되었다 (셀 B9). 이 실험을 4,000번 반복 시행한 결과 평균은 12.78초가 (셀 D4) 나왔다.
4,000번 실험의 결과에서 소요 시간이 10초 이하인 개수는 153회이므로 확률은 3.83% (153/4000)이 된다. 이 결과가 바로 잔량 60개가 10초 이내에 소진될 확률이고, 10초 이내에 내 주문이 체결될 확률이 된다. 확률이 낮게 나온 이유는 취소 주문을 고려하지 않았기 때문이다. 실제 시장에서는 취소 주문이 지정가 주문만큼이나 빈번하므로 이 확률은 더 높게 측정된다.
포아송 분포를 사용한 이전 포스트의 시뮬레이션 결과와, 지수 분포의 시뮬레이션 결과가 잘 일치한다. 이것은 두 분포가 서로 동일한 것이기 때문이다. 지수 분포는 정형화된 수식으로 소요 시간을 계산할 수 있기 때문에 포아송 분포보다 쉽게 시뮬레이션을 만들 수 있다. 따라서 호가창의 특성을 분석하는데 지수 분포가 더 유용하게 활용될 수 있다.
[출처]22. 호가창과 지수 분포 시뮬레이션|작성자아마퀀트