두 브로커를 사용하는 헤지 차익거래 환경에서는 탐지된 괴리의 60~80%가 지연(latency) 아티팩트이며, 실제 LP 가격 차이가 아닙니다. 이러한 신호로 주문을 실행하면 거래마다 손실이 발생하고, 브로커가 분류하고 제한하는 독성 주문 흐름을 만들어냅니다. 이 가이드는 두 가지 필터 수준을 모두 다룹니다. 즉, 단순한 difference-to-open 임계값과 지연 오염을 거의 완전히 제거하는 고급 fast feed 참조 아키텍처입니다.
헤지 차익거래 소프트웨어가 두 브로커의 호가 사이에서 괴리를 탐지할 때, 그 괴리는 근본적으로 서로 다른 두 가지 원인 중 하나에서 발생할 수 있습니다. 첫째는 브로커의 유동성 공급자들 사이에 존재하는 실제 가격 차이로, 거래 가능한 기회입니다. 둘째는 피드 지연 아티팩트로, 한 브로커가 글로벌 시장 이벤트를 다른 브로커보다 더 빨리 수신했고, 느린 브로커의 호가가 아직 갱신되지 않았기 때문에 겉보기 괴리가 생긴 경우입니다. 이 두 경우는 원시 호가 비교만으로는 구분할 수 없지만, 실제 주문 실행 결과는 완전히 반대가 됩니다.
| 신호 유형 | 원인 | 지속 시간 | 실행 시 결과 |
|---|---|---|---|
| 실제 LP 괴리 | 브로커 A의 LP가 브로커 B의 LP와 다르게 가격을 책정함 – 시장 이벤트 타이밍과는 무관 | 200ms ~ 2,000ms | 제시된 가격에 체결 – 예상한 순이익 실현 |
| 지연 유발 아티팩트 | 브로커 A의 피드가 시장 이벤트를 더 빨리 수신함. 겉보기 괴리 = 가격 이동이지 LP 차이가 아님 | 30ms ~ 150ms | 체결 시점에는 브로커 B가 이미 업데이트됨 – 손실 또는 재호가 |
필터링이 없으면, 전형적인 두 브로커 환경에서 지연 유발 신호와 실제 LP 괴리 신호의 비율 중 60~80%가 지연 아티팩트입니다. 가격 틱, 경제 지표 발표, 유동성 이동 같은 시장 이벤트는 계속 발생하며, 그때마다 더 빠른 브로커의 피드가 먼저 업데이트되면서 일시적인 지연 유발 괴리가 생깁니다. 이 비율은 두 브로커 간 피드 속도 차이에 크게 좌우됩니다. 한 피드가 다른 피드보다 일관되게 100ms 빠른 브로커 조합은, 두 피드 차이가 10ms 이내인 조합보다 훨씬 더 많은 아티팩트를 만들어냅니다.
지연 아티팩트에 기반한 주문 실행은 개별 거래 수준에서 수익성이 없습니다. 그러나 문제는 거기서 끝나지 않습니다. 그것은 브로커가 기술적으로 독성이라고 분류하는 특정한 주문 흐름 패턴을 만들어냅니다.
지연 유발 신호는 가격 이벤트가 발생하는 정확한 순간에 발생합니다. 빠른 브로커의 피드는 업데이트되지만 느린 브로커의 피드는 아직 업데이트되지 않았기 때문입니다. 필터링되지 않은 헤지 차익거래는 가격 이동 이벤트가 일어나는 정확한 순간에 과도한 비율의 주문을 넣습니다. 주문 타임스탬프와 가격 이벤트 타임스탬프를 상관 분석하는 브로커 리스크 시스템은 이러한 집중을 기술적 흐름으로 식별합니다.
지연 유발 거래는 몇백 밀리초 뒤의 시장 가격과 비교했을 때 지속적으로 불리한 가격에 체결됩니다. 브로커 리스크 시스템은 각 체결 이후의 단기 가격 경로를 추적합니다. 체결 직후 불리한 가격 이동이 이어지는 체결 비율이 높다는 것은, 시장이 체결 방향에 불리하게 움직인 바로 그 순간에 주문이 들어왔다는 신호이며, 계정을 역선택 검토 대상으로 표시합니다.
지연 아티팩트에 기반해 실행하는 시스템은 저변동성 구간에서는 수익성이 있고(실제 LP 괴리가 우세), 고변동성 구간에서는 수익성이 떨어집니다(지연 아티팩트가 급증). 손익과 변동성 사이의 이러한 역상관은 정상적인 기술적 트레이딩과 일치하지 않으며, 식별 가능한 독성 흐름의 특징입니다.
지연 유발 거래가 잘못된 가격에 체결되면 시스템은 몇 초 안에 청산합니다. 수익 거래는 오래 보유하고, 손실 거래는 빠르게 정리하는 이러한 패턴은 비대칭적인 보유 시간 분포를 만들며, 리스크 시스템은 이를 자동화된 기술적 악용으로 표시합니다.
일단 독성 흐름으로 분류되면 해당 계정은 열악한 실행을 받게 됩니다. 재호가, 스프레드 확대, 또는 브로커 자체 북으로의 내부 라우팅이 발생합니다. 이것은 수익성이 있는 실제 LP 괴리 거래까지 악화시킵니다. 필터 문제는 단지 개별 거래 수익성의 문제가 아니라, 그 계정이 차익거래에 계속 적합한 상태로 남을 수 있는지를 결정하는 문제입니다.
가장 단순한 필터는 최소 가격 괴리 임계값, 즉 difference-to-open이며, 이 값보다 작으면 주문을 넣지 않습니다. 지연 유발 괴리는 평균적으로 실제 LP 괴리보다 더 작은 경향이 있습니다. 피드 지연 아티팩트는 같은 이벤트를 받은 두 피드 사이의 속도 차이만 반영하는 반면, 실제 LP 괴리는 LP 수준의 실제 가격 차이를 반영하므로 더 크고 오래 지속될 수 있습니다. 최소 임계값을 설정하면 작은 지연 유발 신호를 잘라내고 더 큰 실제 신호는 유지할 수 있습니다.
| 단계 | 조치 | 출력 |
|---|---|---|
| Step 1 | 5~10 거래일 동안 모니터링 전용 모드로 실행합니다. 탐지된 모든 괴리에 대해 타임스탬프, 크기(pips), 붕괴 전 지속 시간, 탐지 후 200ms 동안의 가격 이동을 기록합니다. | 원시 신호 데이터셋 |
| Step 2 | 각 신호를 사후 분류합니다. 실제 신호(150ms 이상 지속, 참조 피드 정적) 또는 지연 유발 신호(100ms 미만에서 붕괴, 방향성 가격 이벤트가 선행)로 구분합니다. | 분류된 데이터셋 |
| Step 3 | 실제 신호와 지연 신호의 크기 분포를 그래프로 표시합니다. 그 이상 구간의 80%+가 실제 LP 괴리가 되는 임계값을 찾습니다. | 최적 임계값 |
| Step 4 | 식별한 임계값으로 difference-to-open을 설정합니다. 분기마다 재보정합니다. 브로커 LP 관계와 시장 변동성 체제가 바뀌면 최적 임계값도 변하기 때문입니다. | 배포된 필터 파라미터 |
고변동성 구간에서는 큰 가격 이동이 발생합니다. 10핍 움직임 중 발생한 피드 지연 아티팩트는 브로커 간 4~5핍 괴리로 보일 수 있습니다. 3핍 임계값으로는 이를 잡을 수 없습니다. 큰 지연 이벤트가 가장 해롭습니다. 손실 규모가 가장 크고, 독성 흐름 패턴도 가장 뚜렷하게 나타납니다.
최적 임계값은 시장 상황에 따라 달라집니다. 아시아 세션의 조용한 시간대에는 1.5핍 임계값으로 충분할 수 있습니다. 하지만 런던 오픈에서는 같은 임계값이 많은 지연 아티팩트를 통과시킵니다. 고정 임계값은 언제나 절충안입니다.
단순 필터는 신호 탐지 순간의 시장 맥락과 무관하게, 임계값을 넘는 모든 괴리를 동일하게 취급합니다. 빠른 가격 이벤트가 만든 3핍 지연 아티팩트와 실제 3핍 LP 괴리를 구분할 수 없습니다.
fast feed filter는 실행 브로커 둘보다 더 빠른 제3의 독립 데이터 소스를 도입하여, 탐지된 각 괴리를 분류하는 메커니즘으로 사용합니다. 단순히 크기만으로 필터링하는 대신, 시스템은 fast feed를 사용해 탐지된 괴리가 참조 피드의 가격 이동 이벤트와 일치하는지 판단합니다. 일치하면 그 신호는 지연 유발로 분류되어 폐기됩니다. 참조 피드가 정적이면 그 괴리는 실제 LP 차이로 분류되고 실행이 진행됩니다.
각 신호 탐지 이벤트에서의 분류 로직:
다음 모든 조건이 참일 경우, 신호는 실제 LP 괴리로 분류됩니다.
(1) FastFeed.RateOfChange(last 100ms) < MovementThreshold
— 직전 구간에서 참조 피드가 크게 움직이지 않음
— 현재 시장을 통해 전파되는 방향성 가격 이벤트가 없음
(2) FastFeed.LastTickAge < StalenessThreshold
— 참조 피드가 활발히 업데이트되고 있음(정체 또는 연결 끊김 상태가 아님)
— 분류 점검이 실시간 데이터에 기반함을 보장
(3) Discrepancy.Persistence > MinPersistenceWindow
— 괴리가 최소 N 밀리초 이상 존재함
— 실제 LP 괴리는 지속되고, 지연 아티팩트는 30~100ms 내에 붕괴함
하나라도 조건을 만족하지 못하면 신호는 지연 유발로 분류되고 → 주문은 폐기됩니다.
이것이 핵심 분류 조건입니다. 빠른 참조 피드는 두 실행 브로커보다 더 빠르며, 두 브로커의 호가가 업데이트되기 전에 글로벌 시장 이벤트를 수신합니다. 신호 탐지 이전 구간에서 참조 피드가 유의미한 가격 이동을 보인다면, 이 움직임이 겉보기 괴리의 원인일 가능성이 높습니다. 즉, 한 실행 브로커의 피드는 이벤트로 업데이트되었고 다른 쪽은 아직 업데이트되지 않은 것입니다.
| 파라미터 | 전형적 값 | 비고 |
|---|---|---|
| MovementThreshold | 주요 통화쌍은 100ms당 0.5~1.5핍, 변동성 큰 통화쌍은 1.5~3.0핍 | 해당 종목의 평시와 이벤트 상황에서 100ms당 일반적인 핍 움직임을 측정해 설정 |
| Lookback window | 50~200ms | 움직임 이벤트를 포착해야 하지만, 지연 뒤에 발생하는 실제 괴리를 가려서는 안 됩니다. 측정된 피드 지연 차이를 바탕으로 보정합니다. |
| Staleness threshold | 500ms~2,000ms | 이 구간 내에 참조 피드가 업데이트되지 않았다면 멈춰 있을 수 있습니다. 이런 정체 상황의 신호는 보수적으로 처리해야 하며, 폐기하거나 피드 재개까지 보류합니다. |
주요 가격 이벤트 중 발생한 5핍 지연 아티팩트는 크기와 무관하게 fast feed filter에 의해 지연 유발로 분류됩니다. 단순 임계값 방식은 5핍보다 낮게 설정돼 있다면 이를 통과시킵니다. fast feed filter는 괴리 크기가 아니라 시장 상태를 기준으로 분류합니다.
조용한 구간에서는 참조 피드의 변화율이 낮아 분류가 거의 트리거되지 않습니다. 변동성이 큰 구간에서는 참조 피드가 활발하게 움직이며 지연 아티팩트를 지속적으로 분류합니다. 이 필터는 고위험 구간에서 수동 조정 없이 자동으로 더 엄격해집니다.
단순 임계값이라면 막혔을 0.8핍의 실제 LP 괴리도 참조 피드가 정적이면 fast feed filter를 통과합니다. 이 필터는 작은 지연 신호를 피하기 위해 작은 실제 신호를 희생하지 않습니다. 각 신호를 시장 맥락에 따라 독립적으로 분류합니다.
잘 보정된 배포 환경에서는 fast feed filter가 지연 유발 오염을, 필터링되지 않은 신호의 60~80% 수준에서 5% 미만으로 줄입니다. 남는 오염은, 가격 이벤트가 변화율 임계값을 넘기에는 충분히 빠르지 않지만 피드 차이를 만들기에는 충분히 빠른 예외적 경우들로 구성됩니다.
| 필터 | 지연 거부율 | 실제 신호 유지율 | 복잡도 | 적합한 용도 |
|---|---|---|---|---|
| 필터 없음 | 0% — 모두 통과 | 100% | 없음 | 실행 불가 수준 — 독성 흐름이 확실함 |
| Difference-to-open만 사용 | 40–60% | 80–90% | 낮음 | 초기 설정, 피드 속도가 매우 비슷한 브로커 조합 |
| Difference-to-open + persistence | 60–75% | 75–85% | 낮음 | 개선된 기본선이지만, 여전히 큰 지연 이벤트는 놓침 |
| Fast feed filter (full) | 90–97% | 85–95% | 높음 | 실전 차익거래, 적대적인 브로커 환경 |
실제 LP 괴리는 두 브로커의 유동성 공급자가 동일한 종목을 서로 다르게 가격 책정하기 때문에 발생합니다. 이는 각 LP가 시장을 모델링하거나 재고를 관리하는 방식의 구조적 차이입니다. 지연 유발 괴리는 한 브로커의 피드가 시장 이벤트를 다른 쪽보다 더 빨리 수신했기 때문에 발생합니다. 실제 괴리는 거래 가능하며 200ms~2,000ms 동안 지속됩니다. 지연 아티팩트는 느린 피드가 따라잡으면서 30~150ms 내에 붕괴하며, 일반적으로 주문이 느린 브로커에 도달하기도 전에 사라집니다.
Difference-to-open은 두 브로커의 호가 사이에 존재해야만 주문을 넣는, pips 단위의 설정 가능한 최소 가격 괴리입니다. 피드 지연 아티팩트가 평균적으로 실제 LP 괴리보다 작다는 경향을 이용해 지연 유발 신호를 필터링합니다. 작은 지연 신호를 제거하는 데는 효과적이지만, 빠른 가격 이동이 서로 다른 업데이트 속도의 피드 사이에 큰 겉보기 괴리를 만들 수 있는 고변동성 구간의 큰 지연 이벤트는 잡아내지 못합니다.
Fast feed filter는 두 실행 브로커보다 빠른 제3의 참조 가격 피드를 사용해, 주문을 넣기 전에 탐지된 각 괴리를 분류합니다. 참조 피드가 신호 탐지 이전 구간에서 유의미한 가격 이동을 보이면, 그 괴리는 지연 유발로 분류되어 폐기됩니다. 참조 피드가 정적이면, 그 괴리는 실제 LP 차이일 가능성이 있는 것으로 분류되고 실행이 진행됩니다. 이렇게 하면 단순한 크기 기준이 아니라 시장 상태 기준으로 신호를 분류하므로, 단순 임계값 방식이 놓치는 큰 지연 이벤트도 잡아낼 수 있습니다.
지연 유발 신호는 가격 이동 이벤트가 발생하는 정확한 순간에 주문을 만들어냅니다. 브로커 리스크 시스템은 이 집중을 기술적 흐름 패턴으로 감지합니다. 또한 지연 유발 거래는 일관되게 불리한 체결과 작은 손실의 빠른 청산을 만들어내며, 비대칭적인 보유 시간과 손익 분포를 형성합니다. 이로 인해 계정은 기술적 악용으로 더욱 쉽게 식별됩니다. 일단 분류되면 계정은 열악한 실행을 받게 되고, 이는 수익성 있는 실제 LP 괴리 거래에도 영향을 줍니다.
글로벌 시장 이벤트를 수신하는 속도가 두 실행 브로커보다 명확하게 더 빠른 제3의 가격 데이터 소스가 필요합니다. 전용 시장 데이터 제공업체, 코로케이션된 가격 피드 서비스, 또는 참조 피드 전용으로 사용하는 제3의 브로커 계정(여기에는 주문을 넣지 않음)이 될 수 있습니다. 참조 피드는 소켓 수신 시 하드웨어 수준 타임스탬프를 사용하는 별도의 모니터링 스레드에서 실행됩니다. 참조 피드를 통해 주문을 넣는 일은 절대 없으며, 오직 분류 입력으로만 사용됩니다.
최소 분기별입니다. 브로커 LP 관계가 변하고, 피드 인프라가 바뀌고, 시장 변동성 체제가 이동함에 따라 최적 파라미터도 달라집니다. 다음과 같은 경우 즉각적인 재보정이 필요합니다. 브로커가 LP 또는 가격 엔진을 바꾸는 경우, VPS 제공업체 또는 네트워크 라우팅 변경이 피드 지연에 영향을 주는 경우, 또는 종목 변동성에 지속적인 변화가 생기는 경우입니다. SharpTrader의 신호별 귀속 로깅은 별도의 오프라인 모드 없이도 지속적인 보정에 필요한 데이터를 제공합니다.
Difference-to-open · 고속 참조 피드 필터 · 신호별 귀속 로깅 · FIX API 호환 · 25년의 차익거래 개발 경험