Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

마켓 메이커가 역선택으로 손실을 보는 이유

마켓 메이커의 주요 손실 원인인 역선택(adverse selection)을 분석합니다. 마크아웃(markout) 곡선을 활용한 측정 방법과 재고 위험, 대기 위치 비용이 수익에 미치는 영향을 상세히 설명합니다.

마켓 메이커는 역선택(adverse selection)으로 인해 손실을 봅니다. 호가를 체결시키는 트레이더는 종종 해당 호가가 이미 유효하지 않다는 사실을 알고 있는 경우가 많기 때문입니다. 모든 체결은 스프레드(spread)의 절반 정도인 소액의 크레딧으로 시작하며, 그 직후 이어지는 몇 초가 그 크레딧 중 얼마만큼이 유지될지를 결정합니다. 이를 측정하는 도구가 마크아웃(markout)으로, 이는 체결 후 일정 시점이 지났을 때의 가격 변화를 부호화하여 나타낸 것입니다. 아래 패널들은 실제 거래 및 호가 데이터를 바탕으로 마크아웃 곡선을 구성합니다. 마켓 메이커의 수익 창출 방식에 관한 당사의 다른 글에서는 동일한 장부의 수익 측면을 다룹니다.

트레이딩에서 역선택이란 무엇인가?

마켓 메이커는 매수 호가(bid)와 매도 호가(offer)라는 두 가지 가격을 동시에 제시하며, 각각 정해진 수량만큼 유효합니다. 이 둘 사이의 간격이 매수-매도 스프레드(bid-ask spread)이며, 이 사업은 산술적인 계산에 기반합니다. 매수 호가에 사서 매도 호가에 팔기를 하루에 수만 번 반복하면, 평균적인 왕복 거래에서 스프레드에 가까운 수익을 거두게 됩니다.

이러한 산술적 계산은 매수와 매도 양측이 균형을 이루며 들어온다는 가정에 기반합니다. 하지만 실제로는 그렇지 않습니다. 대기 중인 호가는 누구나 원하는 순간에 행사할 수 있는 옵션과 같으며, 가장 주의 깊게 시장을 살피는 트레이더들이 가장 좋은 타이밍을 포착합니다. 대규모 주문을 처리하는 펀드는 매도 호가가 저렴하게 유지되는 동안 계속해서 매수합니다. 이미 상관관계가 있는 종목의 움직임을 확인한 시스템은 아직 가격이 재조정되지 않은 쪽을 선택합니다.

역선택은 이러한 혼합된 주문 흐름에서 발생하는 편향을 의미합니다. 즉, 마켓 메이커가 받는 체결은 해당 호가를 가장 원했던 트레이더 쪽으로 쏠리게 됩니다. 그 징후는 마켓 메이커가 제시한 스프레드와 실제로 유지되는 스프레드 사이의 격차로 나타납니다.

마켓 메이킹에서 마크아웃이란 무엇인가?

마크아웃은 모든 체결 이후에 발생하는 "체결 후 일정 시간이 지난 시점의 가격은 얼마인가?"라는 질문에 답합니다. 이때 가격은 마켓 메이커가 위치했던 쪽을 기준으로 측정됩니다. 예를 들어, 중간 가격(midpoint)이 50.00달러일 때 마켓 메이커가 100주를 50.02달러에 매도했다고 가정해 보겠습니다. 이 체결은 주당 2센트, 즉 데스크 단위로 20밀(mil, 1센트의 10분의 1)의 크레딧으로 시작합니다. 60초 후 중간 가격이 50.04달러로 이동했다면, 60초 마크아웃은 마이너스 20밀이 됩니다. 초기 크레딧은 사라졌고, 그만큼의 손실이 추가로 발생한 것입니다.

특정 기간 동안의 모든 체결에 대해 이를 평균 내어 시간 흐름에 따라 그래프로 그리면 마크아웃 곡선이 됩니다. 아래 패널은 2026년 5월 14일 목요일, 정오부터 3시간 동안 AAPL 종목에 대해 이를 구성한 것입니다. 각 거래는 체결된 초의 중간 가격을 기준으로 부호화됩니다. 중간 가격보다 높은 가격의 거래는 테이커(taker)가 매수하는 것으로 간주하며, 이는 마켓 메이커를 매도 포지션에 놓이게 합니다.

조회스프레드 잔존율: AAPL 마크아웃 곡선(1초~5분)
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
  qs AS (
    SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
           avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-05-14 14:00:00'
      AND sip_timestamp <  '2026-05-14 17:06:00'
      AND bid_price > 0 AND ask_price > bid_price
    GROUP BY ts
  ),
  fills AS (
    SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
           if(t.px > q.mid, 1, -1) AS taker_side
    FROM (
      SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
             toFloat64(price) AS px, toUInt64(size) AS shares
      FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= '2026-05-14 14:00:00'
        AND sip_timestamp <  '2026-05-14 17:00:00'
        AND size > 0
    ) AS t
    INNER JOIN qs AS q ON q.ts = t.ts
    WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
  )
SELECT
  concat('+', toString(e.secs), 's')                          AS horizon,
  round(1000 * avg(e.taker_side * (e.px - e.mid_at_fill)), 2) AS edge_at_fill_mils,
  round(1000 * avg(e.taker_side * (e.px - f.mid)), 2)         AS edge_after_mils
FROM (
  SELECT toUInt32(ts + secs) AS future_ts, secs, px, mid_at_fill, taker_side
  FROM (SELECT *, arrayJoin([1, 5, 15, 30, 60, 300]) AS secs FROM fills)
) AS e
INNER JOIN qs AS f ON f.ts = e.future_ts
GROUP BY e.secs
ORDER BY e.secs
Run this yourself

첫 번째 시리즈는 체결 순간의 크레딧으로, 거래 가격과 중간 가격 사이의 거리이며 주당 평균 19.66밀입니다. 두 번째 시리즈는 중간 가격이 이동할 시간을 가진 후 해당 체결의 가치를 나타내며, 1초 후 20.5밀, 5분 후 9.81밀입니다. 임의의 시점에서 두 시리즈 사이의 거리가 마크아웃이며, 이는 마켓 메이커가 제시한 스프레드에서 차감됩니다.

곡선이 빠르게 하락한 뒤 평탄해진다면, 마켓 메이커가 즉각적인 가격 재조정에 대한 비용을 지불하고 나머지를 수익으로 가져가고 있음을 의미합니다. 반면 모든 시점에서 곡선이 계속 같은 방향으로 기울어진다면, 이는 가격이 계속 움직이는 방향의 반대편에서 체결이 발생하고 있음을 뜻합니다. 첫 번째 형태는 사업 운영 비용이지만, 두 번째 형태는 호가 수정이 필요하다는 신호입니다.

어떤 체결이 독성 흐름(toxic flow)인가?

여기서 '독성'이라는 단어는 기술적인 의미로 사용됩니다. 마크아웃 곡선이 대규모 표본에서 모든 시점에 걸쳐 마켓 메이커에게 불리하게 기울어져 있다면, 그 흐름은 독성을 띱니다. 데스크는 거래 규모, 거래소, 주문 유형, 상대방 식별자 등 확인할 수 있는 모든 라벨별로 체결을 분류합니다. 규모는 공공 테이프(public tape)에 기록되는 라벨입니다.

조회체결 규모별 AAPL 마크아웃: 체결 시점 수익 및 60초 후 가치
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
  qs AS (
    SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
           avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-05-14 14:00:00'
      AND sip_timestamp <  '2026-05-14 17:06:00'
      AND bid_price > 0 AND ask_price > bid_price
    GROUP BY ts
  ),
  fills AS (
    SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
           if(t.px > q.mid, 1, -1) AS taker_side
    FROM (
      SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
             toFloat64(price) AS px, toUInt64(size) AS shares
      FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= '2026-05-14 14:00:00'
        AND sip_timestamp <  '2026-05-14 17:00:00'
        AND size > 0
    ) AS t
    INNER JOIN qs AS q ON q.ts = t.ts
    WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
  )
SELECT
  multiIf(s.shares < 100, 'under 100 shares',
          s.shares < 500, '100 to 499',
          s.shares < 1000, '500 to 999',
          '1,000 or more')                                    AS size_bucket,
  count()                                                     AS fills_count,
  round(1000 * avg(s.taker_side * (s.px - s.mid_at_fill)), 2) AS edge_at_fill_mils,
  round(1000 * avg(s.taker_side * (s.px - f.mid)), 2)         AS edge_after_60s_mils
FROM (SELECT *, toUInt32(ts + 60) AS future_ts FROM fills) AS s
INNER JOIN qs AS f ON f.ts = s.future_ts
GROUP BY size_bucket
ORDER BY min(s.shares)
Run this yourself

100주 미만의 체결은 주당 19.47밀의 크레딧으로 시작하여 1분 후 15.22밀의 가치를 가집니다. 1,000주 이상의 거래는 36.26밀로 시작하여 같은 기간 후 21.34밀의 가치를 가집니다. 동일한 종목, 동일한 3시간 동안이라도 주당 경제적 효과는 다릅니다. 가장 큰 주문들은 종종 공개 호가창을 완전히 피하는데, 이것이 바로 블록 트레이드(block trade)가 구성되는 이유입니다.

재고 위험, 제때 헤지할 수 없는 포지션

마크아웃 기간은 시계와도 같습니다. 매수 호가에 5,000주를 매수한 마켓 메이커는 5,000주를 보유하게 되며, 이 포지션이 헤지되거나 매도되기 전까지는 가격 변동에 노출됩니다. 헤지는 즉각적으로 이루어지는 경우가 드뭅니다. 단일 주식 포지션은 상관관계가 있는 ETF나 옵션 포지션으로 상쇄할 수 있지만, 각각의 거래에는 넘어야 할 스프레드가 존재합니다. 재고 위험은 해당 기간 내에 발생하는 가격 변동의 크기이며, 모든 종목에 대해 동일한 방식으로 측정됩니다. 가격은 다음 1분 동안, 그리고 다음 1시간 동안 일반적으로 얼마나 이동하는가?

조회포지션 보유 중 가격 변동폭: SPY 및 NVDA, 2026년 5월
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
  bars AS (
    SELECT ticker, window_start,
           toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
           toFloat64(close) AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'NVDA')
      AND window_start >= '2026-05-01 00:00:00'
      AND window_start <  '2026-06-01 00:00:00'
      AND transactions >= 50
      AND close > 0
  ),
  starts AS (
    SELECT ticker, et_date, px, mins,
           window_start + toIntervalMinute(mins) AS future_start
    FROM (SELECT *, arrayJoin([1, 2, 5, 15, 30, 60]) AS mins FROM bars)
  )
SELECT
  concat(toString(s.mins), ' min')                                AS hold_horizon,
  round(avgIf(abs(f.px / s.px - 1) * 10000, s.ticker = 'SPY'), 1)  AS spy_drift_bps,
  round(avgIf(abs(f.px / s.px - 1) * 10000, s.ticker = 'NVDA'), 1) AS nvda_drift_bps
FROM starts AS s
INNER JOIN bars AS f
  ON f.ticker = s.ticker AND f.et_date = s.et_date AND f.window_start = s.future_start
GROUP BY s.mins
HAVING countIf(s.ticker = 'SPY') > 0 AND countIf(s.ticker = 'NVDA') > 0
ORDER BY s.mins
Run this yourself

2026년 5월 전체를 통틀어 SPY의 1분간 평균 절대 변동폭은 1.9 베이시스 포인트(basis point, 1%의 100분의 1)였습니다. 같은 1분 동안 NVDA는 5.5를 기록했습니다. 시간을 1시간으로 늘리면 두 수치는 각각 14.140.4이 됩니다. 1분 이내에 포지션을 평탄화(flatten)할 수 있는 마켓 메이커는 첫 번째 수치를 감당하며, 1시간 동안 보유하는 마켓 메이커는 두 번째 수치를 감당하게 됩니다. 어느 경우든 체결 시점에 수취하는 크레딧은 동일합니다.

마켓 메이커가 호가창 뒤쪽에서 손실을 보는 이유

거래소는 가격 우선, 시간 우선 원칙에 따라 대기 중인 주문을 체결합니다. 매수 호가창에서 40,000주 뒤에 대기 중인 주문은 앞선 40,000주가 소진될 때까지 기다려야 하며, 대기 순번 추정은 그 자체로 하나의 전문 영역입니다.

까다로운 점은 '소진'의 의미입니다. 호가창은 두 가지 방식으로 비워집니다. 매도자가 호가가 소진될 때까지 계속 매도하거나, 가격이 해당 레벨 아래로 내려가면서 호가를 뒤에 남겨두는 경우입니다. 앞쪽에 있는 주문은 두 경우 모두에 참여합니다. 뒤쪽에 있는 주문은 주로 두 번째 경로, 즉 해당 가격 레벨이 과거의 가격이 되기 직전의 순간에 체결됩니다. 두 마켓 메이커가 동일한 종목을 동일한 가격에 거래하더라도 보유하게 되는 수익은 다를 수 있습니다. 대기 순번은 제시된 스프레드에 나타나지 않습니다. 두 마켓 메이커 모두 동일한 가격을 제시했기 때문입니다. 이는 마크아웃 곡선에 나타납니다.

호가 폭을 넓히는 것이 근본적인 해결책이 아닌 이유

나쁜 마크아웃 곡선에 대한 명백한 답은 호가 폭을 넓히는 것입니다. 더 넓은 호가는 체결당 더 많은 수익을 얻지만, 체결 횟수는 줄어듭니다. 이 거래의 양면은 모두 같은 날의 거래 기록에 남아 있으며, 각 거래가 중간 가격에서 얼마나 떨어져 있었는지에 따라 분류됩니다.

조회중간가 대비 거리별 AAPL 체결: 거래량 비중 및 60초 마크아웃
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
  qs AS (
    SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
           avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-05-14 14:00:00'
      AND sip_timestamp <  '2026-05-14 17:06:00'
      AND bid_price > 0 AND ask_price > bid_price
    GROUP BY ts
  ),
  fills AS (
    SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
           if(t.px > q.mid, 1, -1) AS taker_side
    FROM (
      SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
             toFloat64(price) AS px, toUInt64(size) AS shares
      FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= '2026-05-14 14:00:00'
        AND sip_timestamp <  '2026-05-14 17:00:00'
        AND size > 0
    ) AS t
    INNER JOIN qs AS q ON q.ts = t.ts
    WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
  )
SELECT
  multiIf(s.cents <= 0.5, '0.5 cents or less',
          s.cents <= 1.0, '0.5 to 1 cent',
          s.cents <= 2.0, '1 to 2 cents',
          'over 2 cents')                                  AS distance_from_mid,
  round(100 * sum(s.shares) / sum(sum(s.shares)) OVER (), 2) AS share_of_volume_pct,
  round(1000 * avg(s.taker_side * (s.px - f.mid)), 2)        AS edge_after_60s_mils
FROM (
  SELECT *, toUInt32(ts + 60) AS future_ts, abs(px - mid_at_fill) * 100 AS cents
  FROM fills
) AS s
INNER JOIN qs AS f ON f.ts = s.future_ts
GROUP BY distance_from_mid
ORDER BY min(s.cents)
Run this yourself

중간 가격에서 0.5센트 이내의 거래는 해당 기간 전체 거래량의 27.58%를 차지했으며, 1분 후 주당 0.95밀의 가치를 보였습니다. 2센트 이상 떨어진 곳에서 체결된 거래는 33.19%를 차지했으며, 46.86밀의 가치를 보였습니다. 중간 가격에서 더 멀리 떨어진 호가는 당일 거래량 중 더 적은 비중만이 체결됩니다.

체결률 하락은 호가를 넓힐 때 발생하는 첫 번째 비용입니다. 거래소 리베이트는 두 번째 비용입니다. 많은 거래소가 체결된 주당 수수료를 마켓 메이커에게 지급하는데, 이 수입은 호가의 폭이 아니라 체결된 주식 수에 비례하기 때문입니다. 리베이트 요율을 결정하는 거래량 구간은 매달 산정되므로, 거래가 적은 달은 다음 달의 모든 체결 수익에 영향을 미칩니다. 대기 순번을 포기하는 것은 마지막 비용이며, 이는 나갈 때 지불하고 다시 들어올 때 대기열 뒤쪽에서 또다시 지불하게 됩니다. 모든 마켓 메이커는 이 곡선상의 어딘가에 위치하며, 자신의 마크아웃을 가장 정밀하게 측정하는 이들이 터치(touch) 가격에 가장 가깝게 위치하면서도 크레딧을 유지할 수 있습니다. 그 측정이 바로 대형 마켓 메이커들이 지키는 우위입니다.

자주 묻는 질문(FAQ)

마켓 메이커는 개별 거래에서 손실을 보는가?

일상적으로 발생합니다. 마켓 메이킹 장부는 작은 이익과 작은 손실의 분포이며, 손실이 발생하는 체결은 가격이 움직이기 직전의 순간에 집중됩니다. 이 사업은 수백만 건의 체결에 대한 평균에 기반합니다.

트레이딩에서 마크아웃이란 무엇인가?

마크아웃은 체결 후 일정 시점이 지났을 때 시장 가격의 변화를 한쪽의 관점에서 부호화한 것으로, 양수(+)는 해당 측이 이익을 보았음을 의미합니다. 주식 데스크는 마크아웃을 주당 밀(mil)로, 옵션 데스크는 계약당 틱(tick)으로 표시합니다.

독성 주문 흐름(toxic order flow)이란 무엇인가?

이는 마크아웃 곡선이 해당 주문을 체결한 마켓 메이커에게 지속적으로 불리하게 기울어지는 주문 흐름을 의미하며, 체결 후에도 가격이 계속해서 반대 방향으로 움직인다는 뜻입니다. 이 라벨은 주문 흐름의 통계적 특성일 뿐, 특정 트레이더에 대한 판단을 담고 있지는 않습니다.

마켓 메이커는 왜 호가를 취소하는 대신 스프레드를 넓히는가?

더 넓은 호가는 더 나쁜 마크아웃 곡선을 상쇄할 수 있는 가격으로 시장에 머물게 해줍니다. 호가를 취소하면 아무런 수익도 얻지 못하며 대기 순번까지 포기하게 됩니다. 데스크는 두 가지 방식을 모두 사용하며, 선택은 호가가 얼마나 오랫동안 유효하지 않은 상태로 유지될 것으로 예상되느냐에 달려 있습니다.

역선택은 어떻게 측정되는가?

마크아웃을 통해 측정합니다. 각 체결을 마켓 메이커의 포지션 방향에 따라 부호화한 뒤, 이후 일정 시점에서의 중간 가격 변화를 평균 냅니다. 체결 시점의 크레딧과 각 시점에서의 가치 사이의 격차가 스프레드와 동일한 단위로 표시된 역선택 비용입니다.

이 수치들이 산출된 방식

모든 AAPL 패널은 거래 테이프와 호가 테이프라는 두 가지 공공 기록을 읽습니다. 2026년 5월 14일 14:00부터 17:00(UTC) 사이의 각 거래는 해당 거래가 발생한 초의 평균 국가 최우선 매수-매도 호가(NBBO) 중간 가격과 매칭된 후 부호화됩니다. 중간 가격보다 높은 거래는 테이커 매수로 간주하며, 이는 마켓 메이커를 매도 포지션에 놓습니다. 중간 가격과 정확히 일치하는 거래는 방향성이 없으므로 제외하며, 중간 가격에서 2% 이상 떨어진 거래도 함께 제외합니다. 매수 호가가 매도 호가와 만나거나 교차하는 호가 기록은 잠김 또는 교차 시장(locked or crossed market) 상태로 유용한 중간 가격이 없으므로 제외됩니다.

초 단위 매칭은 체결된 마이크로초의 호가를 근사치로 계산하며 가장 빠른 업데이트를 평활화합니다. 시점별 가격은 동일한 초 단위 중간 가격에서 가져옵니다. 재고 패널은 1분 단위 막대 그래프를 사용하며, 최소 50건 이상의 거래가 포함된 막대만 유지하여 하루 중 가장 바쁜 시간에 표본을 집중시킵니다.


여기에 있는 모든 패널에는 이를 생성한 SQL이 포함되어 있으므로, 마크아웃 계산식을 한 줄씩 검토할 수 있습니다. 다른 종목이나 다른 날짜의 곡선을 다시 구성하려면 Strasmore 터미널에서 평이한 영어로 요청하십시오.