Q

PRIVATE NAVIGATION MODE

ML4T_S 탭 잠금 해제

패스워드를 확인하면 이 브라우저에서 ML4T_S 탭과 검색 결과를 표시합니다.

STUDY SEARCH

학습 자료 검색

제목과 설명, 키워드, 학습 본문에서 찾습니다.

검색 범위

검색어를 입력해 주세요.

SEARCH THE NOTEBOOK

찾고 싶은 금융·통계·전략 개념을 입력해 보세요.

CHAPTER 05 / SECTION 02

5.2 실제 거래 시점에 맞춰 라벨 만들기

체결 가격, 고정 기간, 삼중 장벽과 라벨 중첩을 살펴봅니다.

5장. Defining the Learning Task(학습 과제 정의)초급 학습 노트

신호를 만들 때와 거래할 때 나누기

월요일 종가가 100원이고 화요일 시가가 105원이다. 화요일 시가에 매수해 수요일 시가 107.1원에 팔았다면 수익률은 2%다. 월요일 종가에서 출발하면 같은 청산 가격에서도 7.1%로 보인다. 차이 5.1%포인트에는 살 수 있기 전에 벌어진 상승이 들어 있다.

월요일 종가 신호와 화요일 시가 진입
  1. 월요일 장 마감 · 결정
    100원 종가를 확인하고 신호를 계산한다. 입력은 여기까지다.
  2. 화요일 시가 · 진입
    105원에 매수한다. 이 가격부터 보유 성과에 포함한다.
  3. 수요일 시가 · 확정
    107.1원에 청산하고 1거래일 보유 라벨을 확정한다.

화요일 진입 전 가격 변화는 이 거래의 수익에 포함되지 않는다.

Decision Time(결정 시점)에는 입력을 고정한다. Execution Anchor(체결 기준점)부터 가격 경로를 추적하고, 결과를 알 수 있는 Resolution Time(확정 시점)을 따로 저장한다. Close-to-close(종가 대비 종가)는 시작 종가로 체결할 수 있다는 전제가 필요하다. 종가가 나와야 신호를 만들 수 있다면 Next-open-to-open(다음 시가 대비 이후 시가)가 실제 주문에 가까울 수 있다. 청산도 가능한 가격으로 잡고, 호가 차이와 비용을 넣는 단계는 백테스트와 일치시킨다. 주식에서는 밤사이 갭 때문에 두 방식의 차이가 거래당 50~100 Basis Points(베이시스포인트)에 이를 수 있는 사례가 있다. 100bp는 1%포인트이며 격차의 방향은 가격 경로에 따라 달라진다.

일정한 간격을 예측할 때

매일 같은 시각에 진입하고 정해진 간격 뒤 청산한다면 Fixed-horizon Label(고정 기간 라벨)을 쓰기 쉽다. 기간은 거래일이나 분 단위 가격 기록의 개수로 셀 수 있다. 거래량이 일정량 쌓일 때마다 가격 기록을 끊는 방식이라면 같은 개수를 세더라도 실제 경과 시간은 달라진다.

r=PexitPentry−1,rlog⁡=log⁡ ⁣(PexitPentry)r=\frac{P_{\mathrm{exit}}}{P_{\mathrm{entry}}}-1,\qquad r_{\log}=\log\!\left(\frac{P_{\mathrm{exit}}}{P_{\mathrm{entry}}}\right)
rr
Simple Return(단순 수익률), 소수 비율. 0.02는 2%다.
rlog⁡r_{\log}
Log Return(로그 수익률), 단위 없는 로그 비율.
PexitP_{\mathrm{exit}}
Exit Price(청산 가격), 원.
PentryP_{\mathrm{entry}}
Entry Price(진입 가격), 원.
(107.1 원105 원−1)×100%=2%\left(\frac{107.1\,\text{원}}{105\,\text{원}}-1\right)\times100\%=2\%

작은 움직임에서는 두 수익률이 비슷하다. 단순 수익률은 진입금에 곱해 손익으로 바꾸기 쉽다. 로그 수익률은 이어지는 보유 구간의 값을 더해 전체 로그 수익률을 구할 수 있다. 두 가격이 양수일 때 적용한다.

수치로 남기거나 행동 범주로 바꾸기

Continuous Target(연속 목표값)은 2%처럼 움직임의 크기를 보존한다. 시장이 같은 기간 1.5% 올랐다면 기준 대비 수익률 0.5%포인트를 쓸 수 있다. 종목 선택이 목적이면 그날 여러 종목의 미래 수익률 순위를, 위험 관리가 목적이면 보유 기간에 실제로 나타난 변동성을 라벨로 둘 수 있다. 미래 종목 순위는 사후에 만드는 정답이며 결정 시점의 입력과 구별한다.

Discrete Target(이산 목표값)은 비용을 넘겼는지, 크게 하락했는지처럼 행동과 가까운 범주를 나타낸다. 양성 여부만 필요하면 비용 기준을 넘을 때 1, 나머지는 0으로 둔다. 매수·관망·공매도를 구분한다면 같은 수익률에 위아래 기준을 둘 수 있다.

y={+1r>τ0∣r∣≤τ−1r<−τy= \begin{cases} +1 & r>\tau\\ 0 & \lvert r\rvert\le \tau\\ -1 & r<-\tau \end{cases}
yy
Class Label(범주 라벨), 단위 없는 매수·관망·공매도 표식.
rr
Forward Return(선행 수익률), 소수 비율.
τ\tau
Threshold(임계값), 수익률과 같은 소수 비율.

기준이 1%면 +2%는 매수, −0.5%는 관망, −2%는 공매도 표식이다. 기준을 3%로 높이면 세 경우 모두 관망이다. 너무 좁으면 비용으로 사라질 움직임도 거래 표식을 얻고, 너무 넓으면 학습할 양성 표본과 거래 기회가 적어진다. 라벨을 연속값으로 학습한 뒤 모델 점수에 행동 문턱을 적용하는 설계도 가능하다.

  • 고정 임계값은 해석하기 쉽다. 시장이 격하게 움직일 때 같은 1%를 더 자주 넘는다.
  • 변동성 기준은 과거 변동성을 사용해 시끄러운 시장에서 기준을 넓힌다. 하루 변동성이 1%이고 일별 움직임의 분산이 더해진다고 근사하면 4일 변동폭은 2%다. 최근 고가·저가와 전일 종가를 반영하는 Average True Range(평균 실제 범위)도 쓸 수 있다. 가격 단위라면 진입가로 나눠 수익률 단위에 맞춘다.
  • 백분위 기준은 단일 자산에서는 과거 절대 수익률의 상위 25%처럼 기준을 정하고, 여러 자산에서는 같은 결정 시각의 미래 수익률 상·하위 20%를 라벨로 쓸 수 있다. 후자는 거래 가능한 자산이 충분하고 동률을 처리했다면 범주 비중이 비교적 일정하다. 단일 자산의 역사적 경계는 학습 구간 또는 결정 시각까지 확정된 관측으로 계산한다.

결과가 알려지는 시간이 달라질 때

가격 추세를 보고 기간을 고르기

5일, 10일, 20일 중 어느 기간에 방향이 뚜렷한지 연구자가 비교한다. 각 구간의 가격에 직선을 맞추고 기울기를 그 추정 오차로 나눈 t-statistic(t 통계량)의 절댓값을 비교한다. 방향과 관계없이 가장 뚜렷한 구간을 고르고, 기울기의 부호를 라벨로 쓸 수 있다. 이것이 Trend Scanning(추세 탐색)이다.

후보가 세 개면 잡음으로도 큰 값이 나올 기회가 세 번이다. 개별 검정이 타당하다면 선택 전 p값에 시험한 기간 수를 곱해 1을 상한으로 두는 Bonferroni Correction(본페로니 보정)을 적용할 수 있다. 보유와 회전율을 감당할 수 있는 기간으로 후보를 미리 좁히는 것도 도움이 된다. 5일이 선택됐더라도 20일까지 보고 골랐다면 정답은 20일 자료가 들어온 후 확정된다. 선택 기간이 섞인 점수 하나를 고정 기간의 순위 상관으로 해석하기 어렵다. 분할별로 선택 기간 분포와 기간별 성과를 함께 본다.

가격이 먼저 닿은 선으로 결과 정하기

100원에 매수해 3원 이익 또는 2원 손실에 닿으면 종료하고 최대 3거래일 보유한다고 하자. Triple-barrier Label(삼중 장벽 라벨)은 103원 먼저 도달 시 +1, 98원 먼저 도달 시 −1, 가격 장벽에 닿지 않고 시한에 도달하면 0으로 기록한다.

같은 마지막 가격에서 서로 다른 장벽 라벨
가격(원) · 가로축은 진입 후 거래일
9698100103105진입1일2일3일
경로 A · 1일째 이익선경로 B · 1일째 손실선경로 C · 시간 만료
103원과 98원 눈금이 가격 장벽이다. A와 B는 1일째 라벨이 끝나며 이후 점은 청산 뒤 시장 가격이다.

한 거래일의 고가가 103원, 저가가 98원이면 일별 기록만으로 어느 쪽에 먼저 닿았는지 모른다. 더 촘촘한 기록을 쓰거나, 손실 우선 또는 모호한 행 제외를 미리 정한다. 갭으로 장벽을 건너뛰면 라벨의 도달 여부와 실제 체결 손익을 구별한다. 장벽 폭은 과거 변동성에 맞춰 위아래를 다르게 둘 수도 있다.

장벽 폭을 가격 경로에서 확인하기

아직 장벽을 고르기 전, 진입가 100원 이후 102원, 97원, 101원을 관측했다고 하자. 예정 보유창에서 가장 유리한 움직임인 Maximum Favorable Excursion(최대 유리 변동)은 +2%, 가장 불리한 움직임인 Maximum Adverse Excursion(최대 불리 변동)은 −3%다. 둘 다 진입가를 기준으로 읽는다. 이미 종료 규칙을 적용한 거래를 진단할 때는 종료까지의 경로로 계산하며, 청산 뒤 움직임을 거래 중 위험에 섞지 않는다.

이런 경로를 학습 구간에서 모아 장벽 후보를 비교한다. 좁히면 빨리 종료되지만 작은 흔들림과 비용에 민감하다. 넓히면 시한 만료와 중첩이 늘 수 있다. 평가 구간에서는 장벽을 고정하고 이익·손실·만료 비중, 확정까지 걸린 기간, 거래 횟수를 확인한다.

겹치는 정답이 같은 움직임을 반복해 담는 경우

두 라벨이 공유하는 가격 변화 구간
라벨과 동시 개수월→화화→수수→목
월요일 진입 A포함포함—
화요일 진입 B—포함포함
동시 라벨 개수121

화요일에서 수요일 사이 급락하면 두 라벨이 함께 내려간다. 공유한 움직임을 각각 독립된 사건으로 세면 그날이 학습과 평가에 과도하게 반영된다. A의 두 간격 중 하나는 A 혼자, 하나는 두 라벨이 공유하므로 기여분 평균은 다음과 같다.

1+122=0.75\frac{1+\frac12}{2}=0.75

Average Uniqueness(평균 고유성)은 이런 방식으로 한 라벨의 관측 구간마다 Concurrency(동시 라벨 개수)의 역수를 평균한 값이다.

wi=1∣Li∣∑u∈Li1c(u),Neff≈∑iwiw_i=\frac{1}{\lvert L_i\rvert}\sum_{u\in L_i}\frac{1}{c(u)},\qquad N_{\mathrm{eff}}\approx\sum_i w_i
ii
Label Index(라벨 번호), 단위 없는 식별값.
wiw_i
Average Uniqueness(평균 고유성), 0과 1 사이의 비율.
LiL_i, ∣Li∣\lvert L_i\rvert
Label Lifetime(라벨 존속 구간)과 그 구간에 속한 가격 변화 간격의 개수.
uu, c(u)c(u)
Bar Index(가격 변화 간격 번호)와 그 간격을 포함하는 라벨 개수.
NeffN_{\mathrm{eff}}
Effective Sample Size(유효 표본 크기), 중첩을 할인한 표본 개수의 근사.

예시에서는 두 라벨의 고유성이 각각 0.75라 합계가 1.5다. 매 가격 구간마다 새 라벨을 만들고 21개 구간을 보유하면 내부에서는 약 21개가 동시에 살아 있다. 경계와 별도의 시장 상관을 무시하면 2,100행이 약 100개의 독립 관측에 해당하는 수준으로 줄 수 있다. 실제 추론은 시장 전체의 공통 충격과 시간 의존성도 다루어야 한다.

  1. Purging(겹침 제거)으로 평가 결과 구간에 닿거나 학습 시점까지 확정되지 않은 학습 라벨을 뺀다. 실제 확정 시각을 추적하거나 주문 지연과 최대 보유 기간을 함께 고려한 간격을 둔다.
  2. Sample Weighting(표본 가중)으로 같은 변화에 몰린 표본의 기여를 줄인다. 가중치로 학습·평가 경계를 대신할 수는 없다.
  3. Subsampling(간격 표집)으로 고정 보유 기간마다 시작하거나 직전 라벨이 끝난 뒤 새 라벨을 시작한다. 중첩은 줄지만 중간 신호를 버린다.
  4. Sequential Bootstrap(순차 부트스트랩)은 표본을 하나 뽑을 때마다 이미 뽑은 라벨들과 덜 겹치는 후보에 더 높은 확률을 준다. 표본을 더 활용할 수 있고, 유의성을 평가할 때는 별도로 연속 구간을 뽑는 등 의존성을 반영한다.

모델을 돌리기 전에 라벨 감사하기

분할과 종목군별 수익률 분포를 비교한다. 한 종목에서만 몇 배 오른 값이 나오면 분할이나 배당 조정부터 확인한다. 분류에는 양성 비율, 장벽에는 도달 순서와 확정 시간, 모든 경우에는 중첩과 예상 거래 강도를 함께 남긴다. 신호가 하루 20번 바뀌는데 비용 예산이 두 번만 감당한다면 라벨의 기준과 보유 기간을 다시 검토한다. 진입·청산 가격, 기간 단위, 같은 기록 안에서 장벽이 겹칠 때의 규칙도 함께 기록한다.

이미 방향을 정하는 규칙이 있을 때

기존 전략이 매수 방향을 제시하면, 별도 모델은 그 매수가 비용 후 이익이었는지만 배울 수 있다. 이를 Meta-labeling(메타 라벨링)이라 한다. 먼저 기존 규칙의 실제 후보 거래를 모은다. 이익이면 1, 그 밖에는 0을 붙인다. 새 후보에서 이익 확률을 추정하고, 과거 확률 구간별 실제 이익 비율로 보정 상태를 확인한 뒤 확률을 포지션 한도 내 크기로 바꾼다. 예를 들어 최대 100만 원 중 낮은 확신에는 0원, 중간에는 40만 원을 배정하는 규칙을 정할 수 있다. 완만하게 증가하는 Sigmoid(시그모이드 함수)도 이런 크기 조정에 쓰인다. 확률이 같아도 이익과 손실의 크기가 다를 수 있으므로 비용과 손실 규모도 따로 고려한다. 방향 모델이 없는 경우에는 하나의 라벨을 예측하고 별도의 배분 단계에서 크기를 정할 수 있다.