News & Events
[알고리즘 트레이딩/전략편] 27. 시장 재현 시뮬레이터 (Market Simulator) – 클라이언트
- 2019년 1월 9일
- Posted by: 인사이트캠퍼스
- Category: 금융/AI/IT 기사
알고리즘 트레이딩 (Algorithmic Trading) – 전략 (27)
시장 재현 시뮬레이터 (Market Simulator) – 클라이언트
이번 시간에는 시장 시뮬레이터 (Market Simulator)의 클라이언트 기능에 대해 알아본다. 클라이언트의 주요 기능으로는 서버 (Order Matching Engine Server) 접속 기능, 전략 관리 기능, 손익/재고 관리 기능이 있다.
서버에 접속되면 클라이언트는 UDP 포트를 통해 실시간으로 시세데이터 (틱 데이터)를 받는다. 클라이언트는 시세데이터를 통해 주문 흐름 (Order Flow) 등의 시장 상황을 간접적으로 파악하여 전략에 이용한다.
클라이언트는 사용자가 작성한 스크립트를 실행하여 사용자의 전략을 수행한다. 스크립트는 BASIC 언어의 기본 명령어에, 호가창 (Limit Order Book) 관련 정보를 추출하는 내장 함수를 가지고 있다. 스크립트는 2 개까지 병렬로 돌릴 수 있다. 병렬로 돌리는 이유는 대부분의 전략이 매수/매도, Long/Short, Bid/Ask 등의 2 가지 형태가 동시에 수행되는 것들이 많기 때문이다.
// 스크립트 예시
// 10 초 간격으로 최우선 Bid 가격에 수량 2 인 매도 주문을 100 번 수행함
for i = 1 to 100
price = GetBidPrice(1) // UDP 시세데이터를 통해 최우선 Bid 가격을 알아낸다
Sell 2 at price // 수량 2개를 상대호가인 가격 price 에 매도한다.
Sleep 10000 // 매도 주문 후 10 초 (10,000 ms) 대기한다.
next
주요 기능 설명
(1) 서버 접속 기능 : TCP/IP 망을 통해 서버에 접속한다. 서버 측 IP 주소와, 주문 채널을 위한 TCP 포트, 그리고 시세데이터 수신을 위한 UDP 포트를 지정한 후 서버에 접속한다.
(2) 호가창 (Limit Order Book) : UDP 포트로 수신된 시세데이터를 실시간으로 분석하여 호가창과 체결 데이터를 표시한다. 전략 스크립트는 호가창의 기본 정보 (호가, 잔량, 지정가 주문 강도, 취소 주문 강도, 상대호가 체결 강도 등)를 추출하여 전략에 이용한다.
(3) 접수된 매수 주문이 표시된다. 지정가로 제출된 매수 주문이 접수되어 대기 상태에 있음을 표시한다. 해당 주문번호로 체결 통보를 받으면 (5)번의 매수 체결 완료 리스트에 등록한다. 여기에 표시된 주문은 주문번호를 이용하여 취소 주문이 가능하다.
(4) 접수된 매도 주문이 표시된다. 지정가로 제출된 매도 주문이 접수되어 대기 상태에 있음을 표시한다. 해당 주문번호로 체결 통보를 받으면 (6)번의 매수 체결 완료 리스트에 등록한다. 여기에 표시된 주문은 주문번호를 이용하여 취소 주문이 가능하다.
(5) 매수 체결 완료 리스트 : 지정가 혹은 상대호가 매수 주문이 체결되었음을 표시한다. 여기에 표시된 결과를 이용하여 손익 및 재고 보유량을 파악한다.
(6) 매도 체결 완료 리스트 : 지정가 혹은 상대호가 매도 주문이 체결되었음을 표시하고, 손익 및 재고 보유량 파악에 이용된다.
(7) 제출한 주문이 몇 번째 호가에 접수되었는지 (혹은 상대호가)에 대한 카운터이며, 서버의 접수 통보 메시지와 시세데이터를 이용하여 표시한다. 전략 스크립트가 1번 호가에 주문을 제출했어도, Latency 등의 이유로 2번 호가에 접수되거나 상대호가로 체결될 수 있기 때문에 얼마나 많은 주문이 의도하지 않은 호가에 접수되는지 확인하기 위한 기능이다.
(8), (9) 실제 전략이 수행될 스크립트이다. 두 개의 스크립트를 각각의 쓰레드로 돌려 병렬 처리되도록 하였다.
(10) 전략 스크립트에 의해 수행된 주문으로 발생한 손익 차트이다. 전략 스크립트는 현재의 손익을 실시간으로 체크하여 (MDD 등 포함) 전략을 수정하거나 변경할 필요도 있다.
(11) 전략 스크립트에 의해 수행된 주문으로 발생한 재고 보유량 차트이다. 양수이면 매수 재고량을 의미하고, 음수이면 매도 재고량을 의미한다. 전략 스크립트는 재고 보유량을 실시간으로 파악하여 재고관리를 수행할 필요도 있다.
여기까지 시장 시뮬레이터의 클라이언트 기능에 대해 간략히 살펴보았다. 다음 시간에는 이 시뮬레이터를 이용하여 미시시장에 대한 전략을 하나씩 테스트해 보기로 한다.