Finance

HFT 전략의 시뮬레이션 (1)

steloflute 2012. 6. 29. 11:40
http://blog.naver.com/chunjein/100161273161

 

 

HFT 전략 분석 (1)

(HFT 전략의 시뮬레이션)


이전 시간에 살펴본 논리로 HFT 전략의 효과를 알아보기 위해 간단한 시뮬레이터를 제작해 보았다. 가장 단순한 전략 (Naive Strategy)인 매수/매도 호가 #1에 지정가 주문을 넣어서 체결되는 대로 쌍을 이루어 손익을 계산해 본 것이다. 우선 단순 전략의 최대 효과를 알아보기 위해 Latency는 삽입하지 않았다 (Latency = 0 ms).


HFT에 생소한 독자분들을 위해 간단히 언급해보면, HFT는 고빈도 매매 전략을 말한다. 빠른 속도를 이용하여 매수/매도 계약을 지속적으로 체결하여, 매수/매도 쌍의 스프레드를 수익으로 취하는 전략이다. 빈번한 주문으로 아주 작은(1 틱씩) 수익을 모으는 것이다. 이런 전략을 취하는 투자자를 마켓메이커 (Market maker)라고 하고, 이런 행위를 마켓메이킹 (Market making)이라 한다. 마켓메이커들로 인해 시장에는 유동성이 풍부해지는 장점이 있다. 유동성이 풍부해지면 투자자들은 언제든지 매수나 매도를 할 수 있다. 또한 보통의 경우는 호가창의 Depth가 깊어져서 누군가가 다량의 주문을 넣는다고 해도 시장에 미치는 일시적인 충격이 완화된다는 장점도 있다. 그러나 제로섬 시장에서 마켓메이커들이 일정부분을 선취하는 효과가 있으므로 (피자를 한입 베어 먹음), 일반 투자자들은 제로섬이 아닌 다소 불리한 게임을 하게 되는 측면도 있다 (남은 피자로 나누어 먹어야 함). 이것은 유동성 공급에 대한 대가로 이해할 수 있다.


아래 그림은 2012.06.22일 선물의 매수/매도 계약에 대한 단순 HFT 전략의 시뮬레이션 결과이다. 선물 지수가 하락하고 있는데도 불구하고, HFT 전략의 수익 차트 (Profit Chart)는 꾸준히 올라가는 것을 볼 수 있다. 이것이 바로 HFT 전략의 효과이다. 선물 지수가 올라가던지 내려가던지 상관없이 우상향의 수익 차트가 만들어 지는 것이다.

결과를 세부적으로 관찰해 보자. 매수/매도 지정가 주문은 1 계약씩으로 하였고, mid-price가 올라가서 매도 계약 (Ask)이 체결되면, 매수 계약 (Bid)은 즉시 취소하고, 올라간 호가에 다시 지정가 주문을 넣는 방식으로 실험하였다. mid-price가 내려간 경우에는 반대로 하고, mid-price 변하지 않은 채 내주문의 순서가 돌아와서 계약이 체결된 경우에도, 계약 체결 직후 다시 지정가 주문을 넣는 방식 (맨 뒤에서 대기상태가 됨)으로 실험하였다.


실험 결과 매수 계약은 3,149 계약이 체결되었고, 매도 계약은 3,134 계약이 체결되었다. 각 체결 가격은 Queue에 저장하여 순서대로 쌍을 이루어 손익을 계산하였다. 총 수익은 65.25 포인트였고, 남은 재고 (Inventory)는 +15로 매수 계약이 15개 남은 상태가 되었다. Profit 차트를 보면 전체적으로는 우상향의 그래프가 되는데, 부분적으로는 선물 지수와 움직임이 유사했다. 선물 지수가 급격히 떨어질 때는 Profit 도 같이 떨어지고, 선물 지수가 상승할 때는 Profit도 같이 상승하는 모양을 보이고 있다. 그러면서도 Profit은 꾸준히 우상향하는 상태가 되었다. 후반부에 선물 지수가 하락함에도 Profit이 꾸준히 오르는 것은 매우 인상적이다.


이 실험에서는 Latency를 전혀 삽입하지 않았기 때문에 이 수익이 마켓메이커가 취할 수 있는 최대 수익으로 이해해 본다 (계약당). 마켓메이커간의 경쟁이나, Latency 발생 등으로 수익은 분명히 줄어들 것이다. 따라서 HFT의 전략의 목적은 수익곡선을 더 올리는데 초점을 두는 것이 아니라, 위의 수익곡선을 최대한 보전하거나, 훼손의 정도를 최소화 하는 전략에 초점을 두는 것으로 이해해 보기로 한다.


2012.06.25일과 26일의 상황도 실험해 보았다. 결과는 아래 그림과 같이 모두 수익이 발생하였다. 재고는 22일에 비해 높은 수준을 보였다.

매수/매도 쌍은 아래와 같이 처리된다. 계약이 체결되는 데로 계약단가를 Queue에 저장하고 (push), 매수/매도 쌍이 이루어지는 대로 Profit을 계산하고 Queue에서 제거하면 (pop) 된다. 그리고 쌍을 이루지 못하고 최종적으로 Queue에 남아있는 물량은 재고 (Inventory)가 된다.

이 실험을 통해 HFT 전략의 특성과 효과를 엿볼 수 있었으며, 어떤 점을 개선해야 하는지도 알아볼 수 있었다.


1. Latency


이 실험에서는 최대 효과를 알아 보기위해 Latency 삽입은 하지 않았다. Latency를 삽입한다면, Profit은 줄어들 것이다. 시뮬레이션에서 Latency를 삽입한다는 것은 단위 시간당 지정가 주문 유입량을 지속적으로 측정하여 그 만큼 내 주문의 순서를 뒤로 미루어야 하는 것이다. 그러면 주문 체결율 (Hit rate)이 감소하고 Profit에 영향을 줄 것이다. 또한, 취소 주문의 경우도 Latency가 삽입되면, 단위 시간당 주문 체결율을 측정하여 취소 주문이 접수되기 전에, 계약이 체결되는 경우가 증가하므로 재고량에 영향을 미칠 수 있다.


2. 재고위험 (Inventory Risk)


매수/매도 쌍을 이루지 못하고 남게 되는 재고물량이 최소화 되어야 한다. Over-night의 위험을 줄이기 위해서는 당일 시장가 주문으로 처리하는 방법도 있을 수 있다. 물론 최종 Profit에는 영향을 줄 것이다. 확률적으로 재고위험을 줄일 수 있는 전략이 있을 수 있는지 연구 대상이다.


3. Profit의 변동성


Profit의 변동성 (분산)도 대단히 중요한 요인이다. Profit 곡선이 가급적이면 직선에 가깝도록 우상향하는 것이 바람직 할 것이다. Profit이 다소 줄어들더라도 변동성이 작아진다면 안정적인 수익을 의미하기 때문이다. HFT 전략 개발 시 Profit의 변동성도 연구 대상이 된다.


이 실험 결과로 집중해야할 연구 대상이 설정 되었다. Latency에 대해서는 전략적인 측면보다는 시스템 성능의 문제, 알고리즘의 Performance 문제, 통신망의 효율적 구성 문제 (DMA, FPGA 등)의 별도의 대책이 필요하므로 일단은 연구 대상에서 제외하고, 재고위험과 Profit의 변동성 문제에 집중해 보기로 한다. 이 두 문제를 최적화하기 위해 어떤 전략이 있을까? 연구 대상이다.