글 목차

근거와 범위

저자는2016–2023 총수익률+1,637%, IRR41.6%, 샤프2.81, 최대 드로다운12%를 보고했다. 주당 수수료$0.0035를 적용하고 별도 슬리피지 모델은 없다. 발표된 연구 결과이며 새 재현 실험이나 감사받은 계좌 성과가 아니다. [1]

데이터와 시장주요 연구 대상은 미국 주식이다. 선물, 암호화폐 및 장중 휴장 구간이 있는 시장은 별도 가설과 체결 모델이 필요하다.
연구 대상 시간봉다섯 분 시가 범위. 체결 연구에는 이벤트 또는 초 단위 데이터를 쓴다.
가격이 시가 범위 고점50.30에 닿은 후50.34에 체결되고51.14로 오른다. 보호 스톱은 진입 체결가보다0.20 낮다.도표를 원래 크기로 열기
가상 데이터. 처음 다섯 관측치는 시가 범위 구간을 보여 주고 이후 점은 간격이 일정하지 않은 선택 이벤트다. 거래량 단위는 천 주다.

실전 적용 절차

적용 절차: RVOL을 활용한 시가 범위 돌파: 규칙과 근거
전체 단계는 아래에 설명되어 있습니다. 각 단계에서 데이터가 부족하거나 조건을 충족하지 못하면 제외 사유를 기록해야 합니다.
  1. 과거 자료 준비장 시작 전에 가용한 종목군과 과거 입력을 사용한다.
  2. 시가 범위 구간 완료다섯 분 구간 전체가 끝나기를 기다리고 데이터 가용 시점을 기록한다.
  3. RVOL 순위 동결선택한 주식, 방향 및 자본 예산을 확정합니다.
  4. 진입 스톱 주문 제출처리 후 주문을 활성화하고 거절되거나 놓친 진입을 기록에 남긴다.
  5. 보호 및 청산실제 체결 수량을 보호하고 장 일정에 따라 포지션을 청산한다.

거래량은 종목을 선택하고, 가격은 방향을 제시합니다.

많은 주식은 개장 직후 몇 분 동안 급격한 움직임을 보입니다. 검증 가능한 가설은 거래량이 해당 주식의 정상적인 개장 거래량에 비해 비정상적으로 높을 때 돌파가 조건부 행동 양상을 보인다는 것입니다. 상대적 거래량만으로는 매수자와 매도자를 구분할 수 없습니다. 모든 완료된 거래에는 매수자와 매도자가 모두 참여합니다. 따라서 거래 방향은 별도의 가격 규칙에 따라 결정되어야 하며, 거래량은 참여 강도를 측정하는 지표입니다.

개장 시 상대 거래량을 RVOL(d) = V(d, opening window) / mean(V(d−j, same window), j=1…14)로 정의합니다. 분모는 이전 세션에서 얻을 수 있어야 합니다. 처음 5분간의 거래량을 하루 평균 거래량과 비교하는 것은 다른 질문에 대한 답을 제시하며 호환되지 않는 시간 단위를 도입하는 것입니다. TradingView는 누적 거래량과 특정 시점의 거래량을 구분하므로, 구현 시에는 일관되게 하나의 정의를 선택해야 합니다. [3]

RVOL이 넷이라고 하나일 때의 기대수익 네 배를 뜻하지 않는다. 높은 활동은 뉴스, 넓은 스프레드, 거래 정지나 보고 정정과 함께 나타날 수 있다. 평소 개장 거래량이 매우 작으면 절대 거래량이 크지 않아도 비율은 매우 높아진다. 따라서 적격 필터와 체결 평가는 최종 결정 전에 해야 한다.

거래량 필터의 경제적 기여도는 실증적인 문제입니다. 위험과 노출을 유사하게 유지하면서 RVOL를 포함하거나 포함하지 않은 동일한 가격 규칙을 테스트하십시오. 그렇지 않으면, 더 나은 자산 곡선은 단순히 선택된 그룹에서 거래 횟수가 적거나 포지션 규모가 더 큰 것을 반영하는 것일 수 있습니다.

논문의 구성과 구현 방식을 분리하십시오.

기준 설정은 시가가 $5보다 높고, 직전 14일 평균 거래량이 백만 주 이상이며, ATR14가 $0.50보다 높고, 장 시작 후 다섯 분의 RVOL이 하나 이상인 상위 20개 주식을 사용합니다. 첫 봉이 양봉이면 롱 돌파, 음봉이면 숏 돌파를 설정하고 도지는 제외합니다. 손절가는 체결가에서 0.1 ATR만큼 떨어진 곳에 두며, 포지션은 당일 청산하고 위험은 배정 자본의 1%, 레버리지는 최대 네 배로 제한합니다. [1]

다음 엔지니어링 관례는 제안된 사양이며, 논문에 추가된 주장이 아닙니다. 일광 절약 시간제 변경 및 단축된 세션을 포함하여 America/New_York의 거래소 달력을 사용하십시오. 누락된 과거 데이터는 관측 자료를 사용할 수 없음을 의미하며, 거래량이 0인 날을 의미하는 것은 아닙니다. 지연된 개장 막대는 해당 데이터가 실제로 도착한 경우에만 사용할 수 있습니다.

전체 종목군, 개시 OHLC, 일별 ATR, 과거 거래량 관측치(14) 및 최종 순위를 포함하는 선택 스냅샷을 고정합니다. 안정적인 종목 식별자를 사용하여 동일한 순위의 종목들을 분할합니다. 돌파가 발생한 종목은 선택 집합에 추가하지 마십시오. 만약 12 종목만 조건을 충족하는 경우, 수익률 평가 전에 미사용 할당량을 유지할지 또는 재분배할지 결정해야 합니다.

스냅샷에는 이벤트 발생 시간과 가용 시간이 모두 포함되어야 합니다. 예를 들어, 공급업체는 나중에 수정 사항을 제공하는 동안 09:35 시점에 바에 타임스탬프를 찍을 수 있습니다. 최종 수정된 이력을 바탕으로 모든 결정을 재구성하면 원래 주문 처리 과정에서 사용 가능했던 정보 세트와는 다른 정보가 생성됩니다.

상태 기계로 소급 진입을 막는다

진입 주문은 선정·처리·전송 후에만 존재한다. 그 이전의 가격 돌파로 나중 주문을 체결할 수 없다. 스톱 시장가 주문이 활성화될 때 이미 트리거를 지나 있다면 현재 시장 부근에서 즉시 체결될 수 있다. 과거 트리거 가격을 부여하면 존재하지 않는 유리한 체결을 만들어 낸다.

실제 진입 체결가에서 보호 스톱을 계산한다. 부분 체결된 수량을 보호하고 미체결 잔량 정책도 둔다. 공매도 거절, 차입 불가나 브로커 위험 거절은 기록할 시스템 결과다. 이를 조용히 빼면 남은 거래만 실제 기회 집합보다 쉽게 체결되는 듯 보인다.

선정·전송·부분 체결·보호·청산·거절 상태를 명시한다. 모든 전이에 시각과 수량을 남겨 진입 직후 급반전 동안 보호 주문이 작동할 수 있었는지 점검한다.

on_opening_range_ready(session):
    snapshot = freeze_available_data(session)
    candidates = rank_eligible_by_rvol(snapshot)
    selected = candidates[:20]
    for asset in selected:
        side = sign(asset.or_close - asset.or_open)
        if side == 0: continue
        trigger = asset.or_high if side > 0 else asset.or_low
        submit_stop_after_processing_delay(asset, side, trigger)
on_entry_fill(fill):
    stop_distance = 0.1 * frozen_daily_atr[fill.asset]
    protective_stop = fill.price - fill.side * stop_distance
    protect_filled_quantity(fill, protective_stop)
on_session_liquidation_deadline():
    cancel_pending_entries()
    close_remaining_positions()

배분된 자본은 총 계정 자본과 다릅니다.

가상의 $100,000 계좌를 각각 $5,000인 20개 자본 예산으로 나눈다고 가정합니다. 한 예산의 1%를 위험에 노출하면 종목당 위험은 $50입니다. 이 규칙을 전체 계좌의 1%로 잘못 해석하면 종목당 $1,000이 됩니다. 레버리지를 논하기 전부터 스무 배 차이가 나는 셈입니다. 이 구분은 비슷한 전략 이름을 사용하는 구현들을 비교할 때 중요합니다.

손절매 거리가 $0.20이고 아직 비용이 포함되지 않은 경우, $50의 손실 예산으로 250 주식을 매수할 수 있습니다. 주가가 $50일 때, 명목상 투자 규모는 $12,500가 되어 현금 할당액인 $5,000를 초과합니다. 따라서 실제 투자 규모는 위험 한도, 명목상 한도, 차입 가능액 및 남은 포트폴리오 여력 중 최소값을 충족해야 합니다.

포트폴리오 레버리지 한도는 모든 동시 거래 규모를 해당 한도까지 허용한다는 의미가 아닙니다. 제출된 주문에 대해서는 레버리지 노출을 유보하고, 주문 취소 또는 거부 시에 이를 해제하십시오. 그렇지 않으면 개별적으로는 유효한 주문이라도 여러 주문이 동시에 체결될 경우 레버리지 한도를 초과할 수 있습니다.

계획한 스톱 손실과 실제 극단 손실을 구분한다. 상관된 종목들이 동시에 갭으로 스톱을 넘을 수 있다. 모든 스톱이 계획대로 체결될 때의 포트폴리오 손실을 보고하고 스프레드 확대, 보호 지연, 불리한 갭의 영향을 시험한다. 스무 종목은 스무 독립 위험을 보장하지 않는다.

합성 성공, 실패 및 모호한 막대

시가 범위가 O=50, H=50.30, L=49.90, C=50.20이라고 하자. 개장 거래량600,000주와 과거 평균200,000주로 RVOL=3이다. 사전에 알려진 일봉 ATR은2다. 선정 완료 뒤50.30 매수 스톱이50.34에 체결되면 보호 스톱은50.14다. 장 마감에51.14로 팔면 주당$0.80 이익이며 R=$0.20 기준 비용 전4R이다.

동일한 초기 설정에서 반전이 발생하면 50.10에서 손절매가 체결될 수 있습니다. 이 경우 손실은 주당 $0.24이며, 수수료 제외 시 손실액은 1.2R입니다. 목표 손절매 수준이 50.14였으므로 −1R까지 강제로 되돌려서는 안 됩니다. 이 차이가 바로 좁은 손절매 수준으로 인해 증폭될 수 있는 실행 위험을 보여줍니다.

벤더가 추후 개시 물량을 600,000에서 150,000로 수정하는 경우, 최초 수령 값과 수정된 값을 별도로 보관해야 합니다. 최초 수령 값을 기준으로 내린 결정은 수정된 값이 선정 시점에 알려져 있었다고 가정할 수 없습니다.

한 OHLC 봉에 진입가와 스톱 가격이 모두 있어도 먼저 닿은 순서는 알 수 없다. 더 세밀한 데이터 또는 보수적·낙관적 경계를 보고한다. 수익 나는 봉 내부 순서를 선택하는 것은 중립적 단순화가 아니다. OHLC는 같지만 순서가 다른 두 틱 경로를 만들어 시뮬레이터가 결과 차이를 인지하는지 검증할 수 있다.

공개된 결과를 실제 범위 내에서 읽어보세요.

공개된 QuantConnect 구현체는 1,000 주식군과 Sharpe 계수 2.396를 사용한 2016 테스트 결과를 보고합니다. 해당 구현체의 설명에서는 초기 Python 버전과 C# 구현체 간의 차이점을 설명합니다. [2]는 유용한 재현 시작점이지만, 8년간의 연구 전체를 독립적으로 검증하지는 않습니다.

논문의 IRR 레이블을 그대로 유지하십시오. 회귀 알파는 CAGR가 아니며, 포트폴리오 적중률은 분모를 설정하지 않고는 거래당 승률로 재분류할 수 없습니다. 수익률 계산 방식의 차이로 인해 총 수익률이 비슷하더라도 연환산 수치가 달라질 수 있습니다.

제안된 어블레이션은 A: 가격만 사용한 ORB; B: ORB에 RVOL 임계값 추가; C: 임계값에 상위 20개 순위 추가를 사용합니다. 동일한 고정 평가 일정에서 기회 수, 승인된 주문, 실제 체결, 회전율 및 순 결과를 비교합니다. 비용은 명목 금액의 작은 백분율이 아닌 각 거래의 R 대비 비율로 보고합니다.

최종 수익률 곡선을 비교하기 전에, 일별 적격 종목군, 선택된 종목, 트리거 시점 및 수량을 비교해야 합니다. 여기서 불일치가 발생하면 규칙이나 데이터에 문제가 있는 것이며, 최종 수익률을 일치시키기 위해 슬리피지를 조정하면 이러한 불일치가 은폐될 수 있습니다. 신뢰할 수 있는 재현을 통해 남아 있는 불일치를 문서화한 다음, 완전히 수정되지 않은 기간을 평가해야 합니다.

흔한 실수

장 마감 정보를 바탕으로 개장가를 순위 매기기

09:35에서는 전체 거래량 데이터를 사용할 수 없습니다. 이 데이터를 사용하여 개장 거래를 선택하면 미래를 예측하는 편향이 발생할 수 있습니다.

좁은 스톱에 비현실적으로 낮은 비용 적용

몇 센트의 스프레드 또는 슬리피지가 R의 상당 부분을 소모할 수 있습니다. 비용 분포를 위험 단위로 보고하십시오.

보호를 한 봉 늦춤

진입 다음 봉에서야 스톱을 만들면 즉시 반전을 놓칠 수 있다. 실제 처리 가정으로 진입부터 보호까지의 순서를 모델링한다.

이 기법을 사용하기 전 체크리스트

자신의 데이터로 확인한 뒤 각 항목에 체크하세요. 진행 상태는 이 브라우저에 저장되며, 전략의 수익성을 인증하지는 않습니다.

0/8 개 항목

자주 묻는 질문

높은 RVOL 수치는 정보에 밝은 투자자들이 매수하고 있다는 의미일까요?

아니요. 이는 비정상적인 거래 완료 활동을 측정하는 것입니다. 거래 방향과 참여자 신원 확인에는 서로 다른 증거가 필요합니다.

시가 범위 구간을15분으로 바꿀 수 있나요?

예, 별도로 테스트된 변형으로 가능합니다. 과거 거래량 기간을 15 분 단위로 맞추고, 이후 진입, 다른 정지점, 비용 및 추가 연구 테스트를 고려하십시오.

연구 출처

각 출처는 옆에 설명된 정의나 근거를 뒷받침합니다. 의사코드, 가상 예시와 제안된 매개변수는 별도로 검증해야 합니다.

  1. A Profitable Day Trading Strategy For The U.S. Equity MarketZarattini, Barbon, Aziz — 16/02/2024. 전체 PDF를 읽었다. 표2는 실제 PDF17쪽, 인쇄16쪽에 있다. 성과는 저자 가정에 따른 것이며 새 백테스트는 수행하지 않았다. 확인일: .
  2. Opening Range Breakout for Stocks in PlayDerek Melchin — QuantConnect. 기사, 예제 코드 및 구현 설명은 읽었습니다. 코드는 실행하지 않았습니다. 확인일: .
  3. Relative Volume at TimeTradingView. 동일 시점의 상대적 거래량을 정의하는 주요 문서입니다. 이는 ORB 수익성을 입증하는 것은 아닙니다. 확인일: .

관련 기법

위험 안내

이 내용은 학습과 연구 설계를 위한 것이며 금융 조언이 아닙니다. Backtest는 과거 데이터 시뮬레이션으로, 미래 성과를 보장하지 않으며 실제 거래를 주문하지 않습니다. 이 라이브러리의 기법이 모두 앱에 구현된 기능은 아닙니다. 관련 정보: 검증 방법 및 학습 센터.

실제 자금을 투입하기 전에 규칙을 검증하세요

앱 지원 범위, 데이터와 개별 모의 거래를 확인하세요. 고급 탐지 기법은 별도 구현이 필요할 수 있습니다.

App Store에서 Backtest 다운로드