Strasmore Research
학습 Matt Connor작성자 Matt Connor · data as of August 15, 2026 · refreshed weekly

브래킷 주문 및 OCO 주문 개념 정리

브래킷 주문은 진입 주문과 수익 목표가 및 손절매를 하나로 묶어 관리하는 방식입니다. OCO(One Cancels the Other) 원리를 통해 한쪽이 체결되면 다른 주문이 자동 취소되는 구조를 설명하며 부분 체결 시 발생하는 상태 변화와 주문의 연결 원리를 상세히 다룹니다.

브래킷 주문(bracket order)은 세 가지 주문을 하나의 고정된 관계로 묶어 전송하는 방식입니다. 진입 주문과 그에 연결된 한 쌍의 청산 주문으로 구성됩니다. 이 한 쌍의 주문은 OCO(One Cancels the Other, 하나가 체결되면 다른 하나는 취소됨)라고 합니다. 수익 목표가(profit-target limit)는 진입 가격 위에, 손절매(protective stop)는 진입 가격 아래에 설정되며, 어느 한쪽이 체결되면 다른 쪽은 자동으로 취소됩니다. 브래킷은 사실상 작은 상태 머신(state machine)이며, 대부분의 예상치 못한 상황은 각 상태 사이의 전환 과정에서 발생합니다.

브래킷 주문이란 무엇입니까?

200주를 50달러 근처에서 매수하고, 수익이 나면 53달러 근처에서 청산하며, 손실이 나면 48.50달러 근처에서 빠져나오려는 트레이더를 가정해 보겠습니다. 이를 별도의 주문으로 제출하면 세 건의 주문이 필요하며 수동으로 관리해야 하는 번거로움이 생깁니다. 목표가가 체결되는 즉시 손절 주문을 취소하지 않으면 200주를 두 번 매도하는 위험을 감수해야 합니다. 브래킷은 이러한 의도를 하나의 주문으로 묶어줍니다. 진입 주문은 일반적인 시장가 주문 또는 지정가 주문입니다. 두 개의 청산 주문은 진입 주문의 하위 주문으로, 목표가에 도달하면 청산하는 지정가 주문과 보호 수준에서 청산하는 스톱 주문 또는 스톱 지정가 주문으로 구성됩니다.

용어는 다양하게 사용됩니다. 브래킷, 연결 주문(attached order), OCO 브래킷, OTOCO 등이 모두 이 형태를 설명합니다. OTOCO(One Triggers a One-Cancels-the-Other, 하나가 체결되면 OCO가 활성화됨)는 이 순서를 가장 직관적으로 나타내는 명칭입니다. 진입 주문이 한 쌍의 주문을 활성화하고, 이후 한쪽이 체결되면 다른 쪽이 취소되는 구조입니다.

브래킷 주문에서 OCO란 무엇을 의미합니까?

OCO는 취소 연결(cancel link)로 묶인 두 개의 대기 주문입니다. 두 주문 모두 호가창에 동시에 존재합니다. 한쪽이 체결되면 다른 쪽은 즉시 취소됩니다. 한쪽이 부분 체결되면 다른 쪽은 완전히 취소되는 대신 체결된 수량만큼 주문 수량이 줄어들며, 이러한 수량 조정 덕분에 포지션과 보호 주문이 항상 일대일로 유지됩니다.

200주 매수 브래킷의 전체 순서는 다음과 같습니다.

  1. 진입 주문만 작동합니다. 목표가와 손절가는 브로커 시스템 내에 존재하지만 아직 활성화된 주문은 아니므로, 진입 주문이 체결되기 전에 목표가에 거래가 발생해도 아무 일도 일어나지 않습니다.
  2. 진입 주문이 200주 체결됩니다. 두 하위 주문이 각각 200주 규모로 활성화됩니다.
  3. 시세가 손절 가격에 도달합니다. 손절 주문이 활성화된 매도 주문으로 전환되어 호가창에 진입합니다.
  4. 시장이 반전되기 전 손절 주문이 120주 체결됩니다. 목표가 지정가 주문은 200주에서 80주로 줄어들어 남은 포지션과 일치하게 됩니다.
  5. 나머지 80주가 장중 목표가에 체결됩니다. 손절 주문의 잔여 80주는 취소되고 브래킷이 종료됩니다.

진입 주문의 부분 체결 시 플랫폼별 대응 방식이 가장 크게 갈립니다. 일부 브로커는 체결된 수량만큼 즉시 하위 주문을 활성화하고 진입 주문이 완료됨에 따라 수량을 늘립니다. 반면 진입 주문이 완전히 체결될 때까지 기다리는 브로커도 있는데, 이 경우 그 사이 포지션이 보호받지 못하는 공백이 생깁니다. 브로커마다 하위 주문의 활성화 시점이나 한쪽 하위 주문을 수정할 때 취소 연결이 유지되는지 여부 등 기술적 세부 사항이 다릅니다.

두 주문의 간격은 어느 정도로 설정해야 합니까?

두 주문의 간격은 트레이더가 직접 조절해야 합니다. 각 종목이 평소 움직이는 노이즈 범위를 벗어나면서도 실제로 도달 가능한 거리 내에 있어야 합니다. 일일 변동폭(daily range)이 이를 측정하는 첫 번째 척도입니다. 아래 패널은 지난 1년간 주요 6개 종목의 시가 대비 고가-저가 범위의 중앙값과 시가 대비 종가의 절대적 변동 중앙값을 보여줍니다.

조회종목별 일일 변동폭 및 시가 대비 종가 등락률 (최근 1년)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    ticker,
    round(quantileDeterministic(0.5)(
        (toFloat64(high) - toFloat64(low)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_range_pct,
    round(quantileDeterministic(0.5)(
        abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 100,
        toUInt32(date)), 2)                                   AS median_open_to_close_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ')
  AND date >= today() - 370
  AND date <  today() - 2
GROUP BY ticker
ORDER BY median_range_pct DESC
Run this yourself

NVDA는 6개 종목 중 가장 넓은 일일 변동폭인 2.72%을 기록했고, SPY0.86%로 가장 좁았습니다. 모든 행에서 두 번째 열이 첫 번째 열보다 훨씬 낮다는 점에 주목하십시오. 일반적인 종목은 시가와 종가 사이의 순 변동보다 장중 훨씬 더 많이 움직이며, 브래킷의 두 주문은 모두 그 움직임 범위 내에 위치합니다. 따라서 목표가와 손절가는 같은 날 모두 도달 가능할 수 있습니다.

브래킷 주문이 체결될 확률은 어느 정도입니까?

진입 가격으로부터의 거리는 트레이더가 실제로 제어할 수 있는 변수입니다. 다음 패널은 SPY의 3년치 데이터를 바탕으로, 시가로부터 특정 거리만큼 떨어진 가격에 장중 도달할 확률을 보여줍니다.

조회SPY(S&P 500 ETF) 세션별 시가 대비 도달 거리 비율 (2023년 8월 ~ 2026년 7월)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    concat(toString(d.dist), '%')                             AS distance_from_open,
    round(100 * countIf(
        (toFloat64(a.open) - toFloat64(a.low)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_below_pct,
    round(100 * countIf(
        (toFloat64(a.high) - toFloat64(a.open)) / toFloat64(a.open) * 100 >= d.dist
    ) / count(), 1)                                           AS reached_above_pct
FROM global_markets.stocks_daily_aggs AS a
CROSS JOIN
(
    SELECT arrayJoin([0.25, 0.5, 1.0, 1.5, 2.0, 3.0]) AS dist
) AS d
WHERE a.ticker = 'SPY'
  AND a.date >= '2023-08-01'
  AND a.date <  '2026-08-01'
GROUP BY d.dist
ORDER BY d.dist
Run this yourself

시가로부터 0.25% 떨어진 지점의 경우, 62.3%의 세션에서 하락 방향으로, 64.7%의 세션에서 상승 방향으로 도달했습니다. 거리를 3%로 넓히면 하락 도달 확률은 0.5%로 감소합니다. 두 곡선은 함께 하락하며, 이것이 바로 브래킷 설정의 핵심 고민입니다. 너무 좁은 손절가는 평범한 날에도 체결되어 버리고, 너무 먼 목표가는 대부분 체결되지 않은 채 만료됩니다.

손절매는 항상 설정한 가격에 체결됩니까?

아닙니다. 스톱 주문은 트리거 가격에 도달하면 주문을 전송하라는 지시일 뿐입니다. 일반 스톱 주문은 시장가 주문을 전송하므로, 체결 시점의 호가창 상황에 따라 가격이 결정됩니다. 스톱 지정가 주문은 설정한 가격으로 지정가 주문을 전송하여 가격을 방어하지만, 체결되지 않을 위험을 감수해야 합니다. 이 상충 관계는 스톱 주문 대 스톱 지정가 주문에서 다룹니다.

오버나이트 갭(overnight gap)이 가장 대표적인 사례입니다. 보호용 손절 주문은 시장이 닫힌 시간 동안에도 유지되는데, 장 시작 시 시가가 트리거 가격을 훨씬 벗어나 형성될 수 있습니다. 3년 반 동안 AAPL에서 발생한 10가지 사례는 다음과 같습니다.

조회AAPL(Apple Inc.)의 최대 하락 갭(gap down) 상위 10개 (2023년 1월 ~ 2026년 6월)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    formatDateTime(session_date, '%b %e, %Y')                 AS gap_label,
    round((day_open / prev_close - 1) * 100, 2)               AS overnight_gap_pct
FROM
(
    SELECT
        session_date,
        day_open,
        lagInFrame(day_close) OVER (
            ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
        )                                                     AS prev_close
    FROM
    (
        SELECT
            date                  AS session_date,
            toFloat64(any(open))  AS day_open,
            toFloat64(any(close)) AS day_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2023-01-01'
          AND date <  '2026-07-01'
        GROUP BY date
    )
)
WHERE prev_close > 0
ORDER BY overnight_gap_pct ASC
LIMIT 10
Run this yourself

가장 큰 갭은 Aug 5, 2024-9.45%였으며, 10번째 사례도 -2.96%에 달했습니다. 해당 갭 내부에 설정된 보호용 손절 주문은 트리거 가격이 아닌 시가에 체결되었습니다. 장중 변동폭만 고려하여 브래킷을 설정하면 이러한 갭 리스크를 모델링할 수 없습니다.

OCO 연결은 실제로 어디에서 관리됩니까?

거의 대부분 거래소가 아닌 곳에서 관리됩니다. 두 하위 주문 사이의 취소 연결은 브로커의 주문 관리 시스템(OMS)이나 사용자의 컴퓨터에서 실행되는 트레이딩 플랫폼에서 유지됩니다. 거래소는 두 개의 일반적이고 독립적인 주문으로 인식합니다.

이 관리 위치에 따라 시스템 장애 시 대응이 달라집니다. 브로커 측에서 관리하는 브래킷은 노트북을 꺼도 브로커 서버가 양쪽 주문과 취소 로직을 유지하므로 계속 작동합니다. 반면 차트 프로그램 등에서 로컬로 구현하는 플랫폼 측 브래킷은 애플리케이션이 실행되고 연결되어 있어야 합니다. 일부 플랫폼은 트리거 가격이 도달하기 전까지 로컬 메모리에만 존재하는 시뮬레이션 스톱을 사용하는데, 이 경우 노트북을 끄면 손절 주문이 전송되지 않습니다.

자체 개발한 코드도 마찬가지입니다. 실행 중인 프로세스 내부에만 존재하는 스톱 주문은 프로세스가 종료되면 호가창에 아무것도 남지 않습니다. 트레이딩 봇을 위한 서킷 브레이커에서는 자동화 시스템이 최악의 순간에 중단될 경우를 대비해 브로커 측에 어떤 주문이 남아있는지 확인하는 패턴을 다룹니다.

유효 기간(Time in force)은 각 주문에 적용됩니다

각 주문은 고유한 유효 기간 설정을 가집니다. 당일 유효(Day) 진입 주문과 GTC(Good Till Cancelled, 취소 전까지 유효) 하위 주문을 조합하는 것은 흔하지만 주의가 필요한 방식입니다. 진입 주문은 장 마감 시 만료되지만 하위 주문은 활성화되지 않은 채 남아, 다음 날 아침 아무런 보호 장치 없이 브래킷이 유지될 수 있습니다. 반대로 설정하면 오버나이트 포지션에 대한 보호 주문이 오후 4시(ET)에 만료되어 버립니다.

정규장 외 시간에는 호가창의 성격이 바뀝니다. 아래 패널은 SPY의 1분 봉 데이터를 시간대별로 분류하여 30분 단위로 1분당 평균 변동폭(basis points, 1bp는 0.01%)과 평균 거래량을 보여줍니다.

조회SPY의 시간대별(ET 기준) 분봉 움직임 및 거래량
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i')                                              AS et_time,
    round(avg(abs(toFloat64(close) - toFloat64(open)) / toFloat64(open) * 10000), 1) AS avg_move_bps,
    round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(window_start)), 0)  AS median_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= today() - 120
  AND window_start <  today() - 2
GROUP BY et_time
ORDER BY et_time
Run this yourself

이 패널은 32개의 30분 단위 버킷을 04:00부터 19:30(ET)까지 보여줍니다. 왼쪽에서 오른쪽으로 읽어보면 형태가 명확해집니다. 두 지표 모두 프리마켓 시간에는 바닥권에 머물다가 09:30 장 시작과 함께 급격히 상승하고, 16:00 이후 다시 하락합니다. 오전 5시에 설정된 GTC 스톱 주문은 유동성이 낮은 구간에 머물게 되며, 이처럼 얇은 호가창에서는 시장가 스톱 주문이 트리거 가격과 크게 떨어진 가격에 체결될 수 있습니다.

자주 묻는 질문(FAQ)

브래킷 주문과 OCO 주문의 차이점은 무엇입니까?

OCO는 두 개의 대기 주문이 취소 연결로 묶여 한쪽이 체결되면 다른 쪽이 취소되는 그 '쌍' 자체를 의미합니다. 브래킷은 진입 주문에 OCO 쌍이 결합된 형태이며, 진입 주문이 체결되어야만 하위 주문이 활성화됩니다. 모든 브래킷은 OCO를 포함하지만, OCO 쌍은 단독으로도 많이 사용됩니다.

컴퓨터를 끄면 브래킷 주문은 어떻게 됩니까?

연결이 어디에서 관리되는지에 따라 다릅니다. 브로커 측 브래킷은 브로커 서버에 저장되므로 플랫폼을 꺼도 계속 작동합니다. 플랫폼 측 또는 시뮬레이션 브래킷은 애플리케이션이 실행되고 연결되어 있어야 하며, 그렇지 않으면 하위 주문이 시장에 도달하지 않을 수 있습니다.

수익 목표가가 부분 체결되면 손절 주문은 어떻게 됩니까?

손절 주문은 취소되지 않고 체결된 수량만큼 줄어듭니다. 200주 목표가 중 60주가 체결되면 손절 주문은 140주로 줄어들어 남은 포지션과 일치하게 됩니다. 취소는 포지션이 완전히 청산될 때 발생합니다.

프리마켓이나 애프터마켓에서도 브래킷 주문을 사용할 수 있습니까?

브로커마다 다르며, 많은 경우 브래킷 하위 주문은 정규장에만 라우팅됩니다. 특히 미국 주식의 경우 스톱 주문은 오전 9시 30분부터 오후 4시(ET) 외의 시간에는 거부되거나 보류되는 경우가 많습니다. 각 주문의 유효 기간 설정에 따라 연장 시간대 거래 가능 여부가 결정됩니다.

거래소도 내 두 주문이 연결되어 있다는 것을 알고 있습니까?

아닙니다. 미국 주식 시장에서 취소 연결은 브로커나 플랫폼이 관리하며, 거래소는 두 개의 독립적인 주문으로 수신합니다. 한쪽 주문이 체결되었다는 보고가 들어오면, 연결을 관리하는 시스템이 나머지 주문에 대한 취소 메시지를 거래소로 보냅니다.


여기에 포함된 모든 패널은 정확한 SQL 쿼리를 기반으로 합니다. 추적 중인 종목의 변동폭과 갭 리스크를 측정하려면 Strasmore 터미널에서 평이한 영어로 질문하십시오.

#order types#oco#bracket orders#stop orders#execution