
자식 주문이 적절한 거래소를 찾는 방법: IOC(즉시집행 및 취소 주문)로 투명한 호가창(lit books)을 휩쓸고, 지정가 주문 대기열을 모델링하며, 다크풀에서 안전하게 거래하는 법.

이 시리즈의 모든 알고리즘은 결국 동일한 출력, 즉 어딘가로 전송되어야 하는 자식 주문을 생성합니다. 수십 개의 주식 거래소나 각자 자체 호가창을 가진 수십 개의 암호화폐 거래소와 같이 파편화된 시장에서 그 "어딘가"는 진정한 최적화 문제입니다. 스마트 오더 라우터(SOR)가 이 문제를 해결합니다. 이는 스케줄링 로직의 하위에 위치합니다. 즉, 부모 알고리즘이 가격, 수량, 타이밍을 결정하면 라우터가 목적지를 결정합니다.
시장가 주문, 노출형 수동 주문(displayed-passive), 다크 주문은 서로 다른 문제에 직면하기 때문에 라우터는 일반적으로 다음과 같은 세 개의 하위 엔진으로 구성됩니다.
즉각적인 체결을 요구하는 주문을 위한 시장가 주문 라우터(market order router),
노출형 대기 주문을 위한 지정가 주문 라우터(limit order router), 그리고
숨겨진 유동성을 위한 다크 애그리게이터(dark aggregator).
시장가 주문 라우터
분할 및 스윕 (Splitting and Sweeping)
라우터는 지금 체결해야 하는 주문을 받으면 모든 거래소의 통합된 상황을 비교하고 주문을 분할하여 최상의 혼합 가격을 확보합니다. 거래소 C가 19.99달러에 100단위를 보여주고 거래소 A가 20.00달러에 100단위를 보여주는 경우, 200단위 매수는 100/100으로 나뉘어 전송됩니다. 이는 어느 한쪽의 호가창만 휩쓰는(sweep) 것보다 더 나은 평균 가격을 제공합니다. 암호화폐에서는 동일한 계산에 거래소별 수수료(taker fee)도 반영해야 합니다. 수수료가 높은 거래소에서 명목상 더 나은 가격은 수수료를 차감한 후에는 더 나쁜 거래가 되는 경우가 많습니다.
인플라이트 문제 (The In-Flight Problem)
주문이 이동하는 수 밀리초 동안 호가가 사라질 수 있습니다. 목표 호가가 사라진 후 도달한 단순 시장가 주문은 남아 있는 가격이 무엇이든 호가창을 따라가며 체결되므로, 라우터는 대신 목표 가격 근처에 고정된 IOC 시장가 지정가 주문(IOC marketable limit orders)을 보냅니다. 유동성이 사라지면 호가창을 따라 가격이 올라가는 대신 분할된 주문이 취소되어 돌아옵니다. 또한 라우터는 분할된 주문들의 도달 타이밍을 동기화합니다. 한쪽 주문이 눈에 띄게 일찍 도착하면, 감시자들은 스윕의 시작을 감지하고 나머지 주문이 도착하기 전에 다른 모든 거래소에서 호가를 철회(fade)할 수 있습니다.
숨겨진 유동성 탐색
거래소는 시세 피드에 표시되지 않는 중간값(midpoint) 및 예비 유동성을 보유하고 있을 수 있습니다. 라우터는 중간값 가격 또는 그 내부로 소액의 IOC를 보내는 핑(pinging)을 통해 이를 발견합니다. 소액 주문의 경우 여러 거래소에 핑을 돌리는 비용이 저렴합니다. 하지만 대액 주문의 경우, 소액 체결이 연속적으로 발생하는 것 자체가 신호가 됩니다. 부분 체결의 폭발적인 발생은 시장에 대형 투자자가 활동하고 있음을 알려줍니다. 이에 대한 방어책은 주문에 최소 수용 수량(MAQ, minimum acceptable quantity)을 설정하는 것입니다. 즉, "특정 수량 이상일 때만 체결"하도록 하여 정보 노출을 방지하는 대신 체결 확률을 일부 양보하는 것입니다.
라우터 vs. 전략
유용한 구분선: 시장가 주문 라우터는 빠르고 과거를 기억하지 않는(memoryless) 도구로, 현재의 스냅샷을 기반으로 작동합니다. 기회주의적 알고리즘(Part 7)은 라우터 위의 전략적 레이어로, 애초에 진입할 가치가 있는지 여부를 결정합니다.
지정가 주문 라우터
최선의 대기열 선택
20.00달러 매도 호가에 대비해 19.98달러에 매수 호가를 제출하는 것과 같은 비시장가 주문의 경우, "어느 거래소에서 이 주문이 가장 빨리 체결될 것인가?"가 문제가 됩니다. 직관적으로는 대기열이 가장 짧은 곳이라고 생각하기 쉽지만, 올바른 사고 모델은 마트의 계산대 줄입니다. 중요한 것은 대기열 길이를 처리 속도로 나눈 값입니다. 분당 1,000단위가 거래되는 곳에서 내 앞에 500단위가 대기 중인 거래소가, 분당 10단위가 거래되는 곳에서 앞에 100단위가 대기 중인 거래소보다 낫습니다.
두 가지 난제가 이 문제를 정말 까다롭게 만듭니다. 첫째, 답은 내 주문의 크기에 따라 달라집니다. 소액 주문은 특정 대기열의 맨 앞자리에 관심을 갖는 반면, 대액 주문은 대기열이 처음에 길더라도 궁극적으로 가장 깊고 지속적인 흐름을 가진 거래소를 필요로 합니다. 둘째, 수수료 구조가 행동을 왜곡합니다. 역구조(taker-maker) 거래소는 테이커를 유인하므로, 노출된 깊이 단위당 대기열이 더 빨리 줄어듭니다(수수료 모델에 대한 Part 2 참조).
대기열 이론에서 학습된 모델로
단순한 대기열 공식은 이러한 현실을 너무 많이 놓치기 때문에, 실제 프로덕션 라우터는 실증적입니다. 스프레드, 변동성, 거래소 시장 점유율, 노출된 호가 깊이 등의 피처를 사용하는 로지스틱 회귀 체결 확률 모델을 사용하며, 저렴한 유동성이 고갈됨에 따라 테이커 흐름이 거래소 간에 어떻게 이동하는지와 같은 환경 변화 효과를 포착하기 위해 점점 더 비선형 학습기(그레이디언트 부스팅 트리, 신경망)를 사용하고 있습니다. 거래소의 역학 관계는 수수료가 변경되거나 새로운 참여자가 진입할 때마다 변하므로 모델은 지속적으로 재학습됩니다.
다크 애그리게이터
중간값 경제학
다크 애그리게이터는 숨겨진 거래소(dark venue) 전반에 걸쳐 대기 중인 노출을 관리합니다. 이들 거래소에서는 보통 중간값(midpoint)에서 매칭이 이루어집니다. 즉, 매수자와 매도자가 스프레드를 나누어 가지며 거래 전에는 아무것도 노출하지 않습니다. 모델링할 가시적인 대기열이 없기 때문에 애그리게이터는 과거 체결률과 실시간 피드백을 기반으로 배분합니다. 즉, 어떤 풀(pool)에서 어떤 크기로, 어떤 상대방을 상대로 체결이 발생해 왔는지를 기준으로 삼습니다.
핑, 포스트, 파운스 (Ping, Post, Pounce)
전형적인 배분 사이클: IOC를 통해 모든 풀에 핑(ping)을 보내 대기 중인 관심 물량을 찾고, 가장 유망한 것으로 분류된 풀에 잔여 수량을 게시(post)합니다. 그리고 게시된 주문이 갑자기 전부 체결되면 즉시 더 많은 수량을 덮칩니다(pounce). 완전 체결은 대개 거래 상대방에게 배후 물량이 더 있음을 의미하기 때문입니다.
어둠 속에서 안전 지키기
다크 거래에도 포식자가 존재합니다. 적대적인 상대방은 기관의 대규모 물량을 찾아내어 그보다 앞서 거래하기 위해 자체적인 핑 캠페인을 실행합니다. 방어책은 여러 레이어로 제공됩니다.
MAQ: 상대방이 대형 수량으로만 체결하도록 강제하여 감지 비용을 비싸게 만듭니다.
상대방 등급 분류(Counterparty tiering): 많은 풀에서 참여자가 매칭 대상을 "온건한" 세그먼트(자연스러운 기관 흐름)로 제한하고, 단기 차익을 노리는 가장 날카로운 참여자들을 배제할 수 있도록 지원합니다.
조건부 주문(Conditional orders): 중복 체결(5개의 풀이 각각 남은 잔량을 모두 체결시키는 현상)의 위험 없이 여러 풀에 동시에 의미 있는 수량을 대기시키기 위해, 애그리게이터는 구속력 없는 조건부 주문을 게시합니다. 풀에서 매칭 대상을 찾으면 확정 권유(invitation to firm up)를 보냅니다. 라우터는 실제 남아 있는 수량에 맞추어 그때서야 실제 수량을 할당합니다. 여기서는 규율이 중요합니다. 확정 권유를 반복적으로 거부("fall-downs")하면 패널티를 받거나 퇴출당할 수 있으며, 조건부 주문 자체도 수량을 탐색하는 낚시꾼들에게 악용될 수 있으므로 평판이 좋은 풀들은 양측을 모두 규제합니다.
라우터는 실행 스택의 "어디서(where)"를 완성합니다. 남은 전술적 질문은 각 자식 주문의 가격, 수량 및 노출 방식을 "어떻게(how)" 할 것인가 하는 점이며, 이는 Part 11의 주문 제출 로직(placement logic)에서 다룹니다. 거래소들이 거래 기록(tape)이나 청산소를 공유하지 않을 때 라우팅이 어떻게 변화하는지에 대해서는 암호화폐 실행에 관한 Part 14를 참조하십시오.



