Strasmore Research
학습 Matt Connor작성자 Matt Connor

아이스버그 주문이란 무엇인가? 숨겨진 유동성 이해하기

아이스버그 주문의 개념과 표시 수량 및 예비 수량의 작동 원리를 설명합니다. 주문이 체결될 때마다 대기 순번이 뒤로 밀리는 이유와 호가창에서 나타나는 패턴을 분석하여 대형 주문 처리 시 발생하는 시장 영향을 상세히 다룹니다.

아이스버그 주문(iceberg order)이란 무엇인가?

아이스버그 주문은 거래소 호가창에 두 가지 수량을 설정하여 대기하는 단일 지정가 주문(limit order)입니다. 시장 전체가 볼 수 있는 '표시 수량(displayed size)'과 그 뒤에 숨겨진 '예비 수량(hidden reserve)'으로 구성되며, 표시된 수량이 체결될 때마다 매칭 엔진이 자동으로 예비 수량을 내보냅니다. 명칭은 수면 위로 드러난 작은 빙산의 일각과 그 아래 거대한 본체라는 형상에서 유래했습니다. 숨기는 데는 대가가 따르며, 이는 대기 순번(queue position)으로 지불됩니다. 새로 보충되는 수량은 항상 해당 가격대에 이미 대기 중인 모든 주문보다 뒤에, 새로운 타임스탬프를 부여받고 게시됩니다.

가령 한 펀드가 50,000주를 50.00달러 이하로 매수하려 한다고 가정해 봅시다. 이를 일반적인 지정가 주문으로 제출하면, 호가창에는 50,000주 규모의 매수 수요가 모두에게 노출됩니다. 하지만 표시 수량을 500주로 설정한 아이스버그 주문으로 제출하면 호가창에는 500주만 보입니다. 이 500주가 체결되면 매칭 엔진은 예비 수량에서 다시 500주를 가져와 게시하며, 예비 수량이 소진되거나 주문이 취소될 때까지 이 과정을 반복합니다.

이 과정에서 두 가지 사실은 변하지 않습니다. 첫째, 이는 단일 거래소에서 단일 가격으로 이루어지는 하나의 주문입니다. 둘째, 거래소는 주문이 제출된 순간부터 전체 수량을 보유하고 있습니다.

흔히 대형 주문을 잘게 쪼개어 몇 시간 혹은 며칠에 걸쳐 분할 매수하는 방식은 아이스버그 주문과는 다른 기법입니다. 이는 알고리즘이 여러 거래소에 걸쳐 다수의 자식 주문(child order)을 보내는 '실행 스케줄(execution schedule)'이며, VWAP과 같은 벤치마크를 기준으로 성과를 측정합니다. 반면 아이스버그는 거래소 주문 속성(venue order attribute)입니다. 분할은 마이크로초 단위로 매칭 엔진 내부에서, 단일 호가창 내에서 이루어집니다.

용어는 거래소마다 다릅니다. 노출되는 부분은 표시 수량(display quantity) 또는 '팁(tip)'이라 부르고, 나머지는 예비 수량(reserve) 또는 '비표시 부분(non-displayed portion)'이라 부릅니다. 나스닥(Nasdaq) 규정집에서는 이를 '예비 수량(Reserve Size)' 속성으로 명시합니다.

표시 수량은 얼마나 작게 설정할 수 있는가?

거래소는 표시 수량에 하한선을 두며, 이를 고정된 주식 수가 아닌 매매 단위(round lot)로 표현합니다. 나스닥은 예비 주문의 표시 수량이 제출 시점에 최소 한 단위 이상의 정상적인 매매 단위여야 한다고 규정하며, 혼합 단위(mixed lot)는 가장 가까운 매매 단위로 내림 처리합니다. Cboe의 BZX 호가창은 표시 수량이 한 매매 단위 미만으로 줄어들면 이를 다시 보충합니다. 거래소마다 문구가 다르고 수시로 개정되므로, 타인의 말을 믿기보다는 직접 주문을 제출할 거래소의 규정집을 확인해야 합니다.

매매 단위 또한 더 이상 고정된 100주가 아닙니다. 2025년 11월 3일부터 시행된 개정 Regulation NMS에 따라 가격에 따라 달라집니다. 250.00달러 이하는 100주, 250.01달러에서 1,000.00달러까지는 40주, 1,000.01달러에서 10,000.00달러까지는 10주, 그 이상은 1주입니다. 거래소는 매년 3월과 9월의 평균 종가를 기준으로 반기마다 종목별 매매 단위를 재지정합니다. 변경 사항에 대한 나스닥의 공지에 등급과 날짜가 명시되어 있습니다. 4자리 가격대의 주식이라면 허용되는 최소 팁은 10주입니다.

아이스버그 주문은 대기 우선순위를 잃는가?

그렇습니다. 이는 대부분의 설명에서 간과하는 부분입니다. 미국 주식 호가창은 대기 중인 주문을 가격 우선, 그다음 시간 우선 원칙으로 정렬합니다. 같은 가격이라면 먼저 도착한 주문이 먼저 체결됩니다.

아이스버그 주문의 표시 수량은 게시되는 시점에 해당 대기열에 합류합니다. 표시 수량이 체결되어 엔진이 예비 수량에서 이를 보충하면, 보충된 수량은 새로운 타임스탬프를 가진 새로운 표시 주문으로 간주되어 해당 가격대의 맨 뒤로 밀려납니다. 나스닥 규정은 이러한 비대칭성을 명확히 합니다.

예비 주문이 게시된 상태에서 표시 주문이 체결되어 수량이 정상 매매 단위 미만으로 감소하면, 새로운 표시 주문이 입력되어 새로운 타임스탬프를 부여받는다. 이때 비표시 주문의 수량은 동일한 만큼 감소하며 새로운 타임스탬프를 부여받지 않는다.

이는 2021년 2월 18일 SEC의 예비 주문 규정 변경 승인 명령에 인용된 나스닥 Equity 4, Rule 4703(h)의 내용입니다. 예비 수량은 원래의 우선순위를 유지하지만, 눈에 보이는 팁은 새로 고침될 때마다 초기화됩니다. 50,000주 주문을 500주씩 표시하면 최대 100번까지 새로 고침이 발생하며, 매번 해당 가격대에 이미 대기 중인 모든 표시 주문보다 뒤로 밀려납니다. 이것이 바로 숨김의 실질적인 비용입니다.

많은 거래소는 두 번째 비용을 추가합니다. 같은 가격대에서 표시된 주문은 비표시 주문보다 우선순위가 높으므로, 예비 수량은 먼저 도착했더라도 표시된 주문에 항상 밀립니다.

아이스버그 주문 vs 비표시 주문 vs 다크풀

  • 아이스버그 주문은 공개 거래소에 대기하며 표시 수량을 공시 호가에 올립니다. 이 수량은 최우선 매수/매도 호가(NBBO)를 형성할 수 있습니다. 뒤에 숨겨진 예비 수량은 호가에 절대 나타나지 않습니다.
  • 완전 비표시 주문(fully hidden order)은 아무것도 표시하지 않습니다. 동일한 공개 거래소에 대기하며 지정가에 체결되지만, 체결된 후에야 공시 데이터에 나타납니다. 거래소는 일반적으로 이를 같은 가격의 표시 주문보다 후순위로 둡니다.
  • 다크풀(dark pool)은 공시 호가가 전혀 없는 별도의 거래소입니다. 체결 내역은 거래 보고 시설(trade reporting facility)을 통해 사후에 테이프(tape)에 기록됩니다.
  • 블록 트레이드(block trade)는 전체 수량을 한 번의 협상된 체결로 처리합니다. 최대 규모, 최소 시간으로 처리하며, 아이스버그처럼 조금씩 흘려보내는 방식과는 정반대입니다.

이 모든 방식은 사전에 광고하지 않고 수량을 이동시킨다는 공통점이 있습니다. 차이점은 주문이 어디에 대기하는지, 그리고 공시 호가에 얼마나 노출되는지에 있습니다. 비표시 수량은 호가창에 나타나지 않는 가격대에도 존재할 수 있으므로, 눈에 보이는 호가창은 항상 가용 유동성의 일부만을 보여줍니다. 이는 락드 앤 크로스드 마켓(locked and crossed markets)과 함께 고려해야 할 사항입니다.

테이프에 기록되는 소규모 체결의 비중은 어느 정도인가?

아이스버그 주문의 흔적을 읽으려면 먼저 테이프의 일반적인 질감을 파악해야 합니다. 아래 패널은 주식 분할이 없었던 두 대표 종목의 월별 거래량을 월별 체결 횟수로 나눈 값입니다.

조회월별 평균 체결 수량, MSFT 및 KO
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    toString(month_start)                                                            AS month,
    formatDateTime(month_start, '%b %Y')                                             AS month_label,
    round(sumIf(volume, ticker = 'MSFT') / sumIf(transactions, ticker = 'MSFT'), 1)  AS msft_shares_per_print,
    round(sumIf(volume, ticker = 'KO')   / sumIf(transactions, ticker = 'KO'), 1)    AS ko_shares_per_print
FROM
(
    SELECT
        toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
        ticker,
        volume,
        transactions
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MSFT', 'KO')
      AND window_start >= toDateTime('2019-01-01 00:00:00', 'UTC')
      AND window_start <  toDateTime('2026-07-01 00:00:00', 'UTC')
)
GROUP BY month_start
HAVING sumIf(transactions, ticker = 'MSFT') > 0
   AND sumIf(transactions, ticker = 'KO') > 0
ORDER BY month_start
Run this yourself

Jan 2019에 마이크로소프트의 평균 체결 규모는 137.4주였습니다. Jun 2026에는 39.5주가 되었고, 같은 기간 코카콜라는 47.7주였습니다. 기관 주문이 줄어든 것이 아니라, 체결 단위가 작아진 것입니다. 이제 하나의 부모 주문은 숨김, 스케줄링, 혹은 두 가지 방식을 모두 사용하여 수백, 수천 개의 소규모 체결로 테이프에 기록됩니다.

단일 세션을 확대해 보면 같은 질감이 나타납니다. 다음 패널은 2026년 6월 17일 AAPL의 모든 체결 내역을 규모별로 그룹화한 것입니다.

조회2026년 6월 17일 AAPL 체결 내역, 거래 규모별 그룹화
모든 수치 뒤에 숨겨진 정확한 SQL
WITH tape AS
(
    SELECT size
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-06-18 04:00:00', 'UTC')
)
SELECT
    multiIf(size < 100,  'under 100',
            size < 200,  '100 to 199',
            size < 500,  '200 to 499',
            size < 1000, '500 to 999',
            size < 5000, '1000 to 4999',
                         '5000 and up')                    AS print_size_bucket,
    count()                                                AS prints,
    round(100 * count() / sum(count()) OVER (), 2)         AS pct_of_prints,
    round(100 * sum(size) / sum(sum(size)) OVER (), 2)     AS pct_of_shares
FROM tape
GROUP BY print_size_bucket
ORDER BY min(size)
Run this yourself

100주 미만의 체결이 당일 전체 체결의 88.99%를 차지했으며, 전체 거래량의 22.84%를 담당했습니다. 반면 5000 and up 구간은 전체 체결의 0.02%, 거래량의 48.77%를 차지했습니다. 500주 체결은 이 분포에서 흔한 일이며, 이것이 아이스버그 탐지가 어려운 첫 번째 이유입니다.

테이프에서 아이스버그 주문을 어떻게 포착하는가?

통합 테이프는 모든 체결에 대한 가격, 수량, 시간, 거래소를 기록합니다. 주문 ID, 표시 수량, 예비 수량은 기록되지 않습니다. 포착할 수 있는 것은 '흔적'입니다. 특정 가격대에서 동일한 수량이 반복적으로 체결되는 현상인데, 이는 일반적인 표시 주문이라면 생존하기 어려운 시간 동안 지속됩니다. 아래 패널은 같은 세션에 대해 각 가격과 체결 수량을 짝지어 반복 횟수를 계산한 것입니다.

조회가장 빈번한 가격 및 수량 조합, AAPL, 2026년 6월 17일
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    concat(toString(size), ' shares at $', toString(round(toFloat64(price), 2)))                  AS level_and_size,
    count()                                                                                       AS prints,
    formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%H:%i')                    AS first_et,
    formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i')                    AS last_et,
    round(dateDiff('minute', min(sip_timestamp), max(sip_timestamp)) / 60.0, 1)                    AS hours_spanned
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 04:00:00', 'UTC')
  AND size >= 200
GROUP BY price, size
ORDER BY prints DESC
LIMIT 12
Run this yourself

가장 많이 반복된 조합은 300 shares at $300.54이며, 09:34부터 09:58 ET 사이(0.4시간 동안) 67번 체결되었습니다. 이 조합을 30분 단위로 추적하여 반복이 하루 종일 퍼져 있는지, 특정 구간에 집중되어 있는지 확인해 보십시오.

조회가장 활발한 가격 및 수량 조합, 30분 단위 추적
모든 수치 뒤에 숨겨진 정확한 SQL
WITH top_level AS
(
    SELECT
        price,
        size
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-06-18 04:00:00', 'UTC')
      AND size >= 200
    GROUP BY price, size
    ORDER BY count() DESC, size DESC, price DESC
    LIMIT 1
)
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    count()                                    AS prints,
    sum(count()) OVER (ORDER BY et_time)       AS cum_prints
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= toDateTime('2026-06-17 04:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 04:00:00', 'UTC')
  AND (price, size) IN (SELECT price, size FROM top_level)
GROUP BY et_time
ORDER BY et_time
Run this yourself

반복은 집중되어 나타납니다. 흔적은 09:30 ET에 시작된 30분 구간에서 나타나며, 67번의 체결을 기록하고 세션 누적 횟수 67로 종료됩니다. 한 가격대에서 30분간의 반복은 하루 종일 지속되는 감시가 아니라 일시적인 폭발이며, 이처럼 짧은 흔적은 패턴이 암시하는 것보다 훨씬 약한 증거입니다. 그만큼 활발한 종목에서 해당 가격에 그 정도 규모의 표시 주문이 있었다면 보통 수 초 내에 소진되었을 것입니다. 무언가가 계속해서 수량을 보충한 것입니다.

아이스버그 탐지가 신뢰할 수 없는 이유

"무언가가 계속해서 수량을 보충했다"는 말은 테이프가 제공하는 정보의 솔직한 한계입니다. 동일한 흔적이라도 예비 주문 없이 발생할 수 있는 일반적인 설명들이 존재합니다.

  • 브로커 서버에서 부모 주문을 동일한 크기의 자식 주문으로 쪼개어 하나씩 보내는 실행 알고리즘.
  • 관련 없는 참여자들이 라운드 넘버(round number)를 선호하여 우연히 같은 수량과 가격을 선택한 경우.
  • 시장 조성자가 특정 가격대에서 보유하고자 하는 수량을 반복적으로 다시 호가하는 경우.
  • 체결 횟수와 주문 횟수의 불일치(하나의 대기 주문이 여러 번의 체결로 보고되는 스윕(sweep) 발생 시).

또한 '침묵의 사례'도 있습니다. 절대 체결되지 않는 아이스버그 주문은 아무런 흔적을 남기지 않으며, 테이프는 체결 내역만 기록합니다. 체결 내역을 바탕으로 구축된 비표시 유동성 측정치는 체결된 부분만을 측정할 뿐, 대기 중인 부분은 측정하지 못합니다. 패턴을 특정 주문에 대한 사실로 단정하지 말고, 거래소 믹스 및 호가창과 대조해 볼 가치가 있는 가설로 해석하십시오.

자주 묻는 질문(FAQ)

트레이딩에서 아이스버그 주문이란 무엇인가?

두 가지 수량을 가진 지정가 주문입니다. 공시 호가에 나타나는 작은 표시 수량과, 표시된 수량이 체결될 때마다 거래소가 자동으로 내보내는 더 큰 예비 수량으로 구성됩니다. 단일 거래소에서 단일 가격으로 대기하는 하나의 주문입니다.

아이스버그 주문은 대기열에서 우선순위를 잃는가?

표시 수량은 잃습니다. 보충될 때마다 새로운 타임스탬프를 가진 새로운 표시 주문으로 게시되어, 해당 가격대에 이미 대기 중인 모든 주문보다 뒤로 밀려납니다. 나스닥 규정에 따르면 비표시 예비 수량은 원래의 타임스탬프를 유지합니다.

레벨 2(Level 2) 호가창에서 아이스버그 주문을 볼 수 있는가?

아니요. 호가창에는 표시 수량만 나타나며, 이는 일반적인 소규모 지정가 주문처럼 보입니다. 예비 수량은 체결되기 전까지 보이지 않으며 별도의 라인으로 표시되지 않습니다.

아이스버그 주문은 다크풀 주문과 같은가?

아니요. 아이스버그는 공개 거래소에 대기하며 일부를 공시 호가에 노출합니다. 다크풀 주문은 공시 호가가 없는 거래소에 대기하며, 체결 내역은 체결된 후에야 공시 데이터에 나타납니다.

아이스버그 주문은 합법인가?

네. 예비 주문은 SEC에 제출된 거래소 규정집에 명시된 주문 속성으로, 회원사와 고객에게 공개되어 있습니다. 주문 수량의 일부를 숨기는 것은 해당 주문 유형의 공개된 기능입니다.


여기에 포함된 모든 패널은 SQL 코드를 함께 제공하므로 각 수치가 어떻게 계산되었는지 확인할 수 있습니다. 원하는 종목과 날짜에 대해 반복 체결 스캔을 실행하려면 Strasmore 터미널에서 평이한 영어로 요청하십시오.

#order types#market microstructure#hidden liquidity#execution#market structure