latest update: 20250512

1. 히스토리

HFT 전략을 운용함에 있어서 어느 정도까지 정교한 backtest simulator을 만들어야 할지 고민이 되는 순간이 있었다.

파이썬 기반으로 작성해야 하기 때문에 너무 복잡하면 언어 한계상 성능이 느려지고, 또한 현실적으로 리서치 이터레이션이 너무 길어져서 생산성 저하가 심해질 것이다. 그렇다고 너무 단순하게 작성하면 실제 시장과 괴리율이 증가하여 시뮬레이터로서 역할이 필요하지 않을 것이다.

1. 아키텍처 & 모듈링

  1. 전략, 주문 매칭, 데이터 피드, 리포팅을 위한 최적의 인터페이스 분리 방안
  2. 페어, 시뮬레이터, 전략 인스턴스 간 의존성 최소화를 위한 이벤트 버스 설계
  3. 재사용 가능한 플러그인(지연 시간 모델, 슬리피지 모델) 주입 방식

2. 데이터 인프라

  1. 수십억 개의 틱 데이터에 대한 메모리·디스크 할당 전략
  2. 압축(Parquet, Zstandard)과 랜덤 액세스가 동시 지원되는 포맷 선정
  3. 결측값, 중복, 비정상 틱 데이터의 통계량 수집 및 알림

시뮬레이터 정확도, 성능 최적화, 테스트 전략 등 여러 엔지니어링 관점에서 트레이드-오프 판단을 하고 최적의 지점을 찾아내야 했다.

이 성능과 요구사항 사이의 골디락스 존을 찾기란 쉽지 않은 일이다. 여러번의 프로토타입을 만든 이후 설계된 최종 Tick level simulator의 대략적인 구조는 다음과 같다.