1. 매칭 엔진이란?
- 매칭 엔진은 금융 시장에서 구매자와 판매자를 연결하는 정교한 시스템
2. 주문 매칭 알고리즘
- FIFO : 선입 선출 방법으로, 주문의 우선순위를 정하는 고전적인 알고리즘이다. 흔히 매도 매수에 사용되는 방법이다.
- Pro-Rata : 더 많은 주문을 할 수록 더 많은 거래량을 가진다. 예를들어 총량은 100개 이지만 한사람은 200개, 한사람은 300개를 요청한다. 그렇다면 2:3의 비율에 따라 각각 40:60 거래량을 가진다. 흔히 공모주 청약에서 잘 볼수있는 상황이다.
- TWAP(Time-Weighted Average Price) : 특정 시간 동안 일정하게 자산을 매수 혹은 매도하여 시장 가격에 미치는 영향을 최소화 하는 전략이다. 주로 대량의 주문을 한번에 체결하면 시장에 미치는 영향이 크기 때문에, 이를 방지하기 위해 일정 시간에 걸쳐 균등하게 나누어 체결하는 방식으로 사용한다.
3. 매칭 엔진의 유형
- 중앙집중식 매칭 엔진 : 높은 속도와 효율성으로 실시간 매칭을 재공한다. 빠른 매칭이 중요한 고트래픽 거래소에 이상적이다.
- 분산형 매칭 엔진 : P2P 네트워크에서 작동하여 공격에 대한 복원력을 제공한다. 더 안전한 거래 환경에 기여하지만 중앙집중식 엔진에 비해 속도와 효율성을 다소 희생할 수 있다. 침해위험이 최소화되어 더 안전한 대안이 된다.
4. 매칭 엔진설계시 고려 사항
1) 주문 데이터 구조 설계
- 오더북(order book): 매칭 엔진의 핵심 요소로, 매수 및 매도 주문을 각각 가격 순서대로 관리하는 데이터 구조입니다. 일반적으로 매수 주문은 높은 가격 순서, 매도 주문은 낮은 가격 순서로 정렬됩니다.
- 주문 매칭 알고리즘: FIFO(First In, First Out) 방식이나 가격 우선 방식이 많이 사용됩니다. 가격 우선 방식에서는 높은 매수 가격과 낮은 매도 가격 순으로 매칭하며, 같은 가격이면 먼저 들어온 주문부터 체결합니다.
2) 주문 매칭 로직
- 매수/매도 매칭: 매수와 매도 주문의 가격이 일치하는지 확인하고, 체결할 수 있다면 주문을 체결하고 체결된 수량을 업데이트합니다.
- 부분 체결: 주문량이 일치하지 않을 때 일부 수량만 체결하고 남은 수량을 오더북에 남겨두거나, 새로운 주문을 생성해 기록합니다.
3) 매칭 엔진 알고리즘
- 가격 우선: 가장 높은 매수 가격과 가장 낮은 매도 가격을 우선으로 매칭하여 체결합니다.
- 시간 우선: 동일한 가격일 경우, 먼저 들어온 주문을 우선적으로 처리합니다.
- 최적화된 매칭 알고리즘: 매칭 속도를 높이기 위해 이진 탐색이나 해시 테이블을 활용하여 탐색 및 매칭 시간을 최소화합니다.
4) 트랜잭션 관리 및 로그 기록
- 원자성 보장: 매칭 과정이 중간에 실패하거나 오류가 발생해도 데이터가 일관성을 유지하도록 트랜잭션 처리 및 롤백 기능을 구현합니다.
- 로그 기록: 모든 거래 기록을 로깅하여 거래의 투명성과 후속 문제 해결에 대비합니다.
5) 성능 최적화
- 비동기 처리 및 멀티스레딩: 높은 거래량을 처리하기 위해 주문 매칭을 비동기적으로 수행하고, 멀티스레딩을 통해 병렬로 처리하여 속도를 높입니다.
- 캐싱 및 메모리 관리: 빈번한 조회가 이루어지는 주문과 관련된 정보를 캐싱하여 성능을 향상시킵니다.
5. 참고 자료
1) 매칭 엔진에 이해 : https://academy.gopax.co.kr/teureidingeseo-maecing-enjin-ihaehagi/