1. OBV의 맹점을 극복하고 캔들 내부를 꿰뚫다: ADL의 탄생
조셉 그랜빌의 OBV(005번)는 거래량 분석의 훌륭한 고전이지만, 오직 '어제 종가'와 '오늘 종가'만 비교하여 당일 거래량을 전부 더하거나 빼버리는 거친 계산 방식을 사용합니다.
만약 오늘 주가가 장중에 20%나 폭등하며 엄청난 거래량이 터졌다가, 장 막판에 세력이 개인들에게 물량을 전부 떠넘기고 윗꼬리를 길게 달며 단 1% 상승으로 마감했다면 어떨까요? OBV는 이를 단순한 '매수(상승)'로 기록하지만, 마크 체이킨(Marc Chaikin)은 이를 심각한 '분산(매도)'으로 꿰뚫어 보았습니다. ADL은 당일 캔들의 고가($H$)와 저가($L$) 대비 종가($C$)가 어디에 위치해 있는지를 정밀하게 쪼개어 분석함으로써, 캔들 내부에 숨겨진 진짜 스마트 머니의 매집(Accumulation)과 분산(Distribution)을 추적해 내는 진화된 지표입니다.
2. 수리적 원리와 계산 구조
ADL은 당일 주가의 변동폭 안에서 종가가 차지하는 위치를 -1에서 +1 사이의 승수로 변환한 뒤, 이를 거래량에 곱하여 무한히 누적해 나갑니다.
Step 1. 자금 흐름 승수($MFM$, Money Flow Multiplier) 산출
종가($C$)가 당일의 변동폭($H - L$) 내에서 상단(고가)에 가까운지, 하단(저가)에 가까운지를 비율로 측정합니다. 종가가 고가에 딱 붙어 끝나면 +1, 저가에 딱 붙어 끝나면 -1이 됩니다.
Step 2. 자금 흐름 거래량($MFV$, Money Flow Volume) 도출
산출된 승수($MFM$)에 당일의 전체 거래량($V$)을 곱하여, 허수를 제거한 실질적인 매수/매도 압력의 절대적 크기를 구합니다.
Step 3. 최종 ADL 누적 (Cumulative Sum)
매일 정밀하게 계산된 $MFV$를 끝없이 누적 합산하여 지표 선을 완성합니다.
3. 차트에서 나타나는 수리적 특성: 한양디지텍(A078350) 분석 사례
캔들의 꼬리 속에 숨겨진 세력의 진짜 의도를 한양디지텍의 차트를 통해 추적해 보겠습니다.

- 폭등을 예고하는 스마트 머니의 매집: 2025년 9월 중순, 주가가 본격적인 랠리를 시작할 때 하단 패널의 진한 녹색 ADL 선이 오렌지색 20일 이동평균선을 수직으로 뚫고 솟구칩니다. 종가가 캔들의 고가 근처에서 꽉 차게 마감되는 강력한 에너지가 누적되며, 엄청난 자금이 매집되고 있음을 증명합니다.
- 분산 다이버전스 (세력의 이탈): 반대로 2026년 2월 우측 끝부분을 보십시오. 상단 패널의 주가는 30,000원 선에서 고점을 갱신하거나 유지하며 화려하게 빛나고 있지만, 정작 ADL 선은 고점을 낮추며 20일선 아래로 흘러내리고 있습니다. 이는 세력이 캔들의 윗꼬리를 활용해 개인들에게 교묘하게 물량을 떠넘기고 탈출하고 있다는, 가장 치명적이고 확실한 하락의 전조 증상입니다.
4. 장점 및 한계
- 장점: 캔들 내부의 역학(꼬리의 길이와 종가의 위치)을 거래량과 결합하여 분석하므로, 단순한 OBV보다 휩쏘(거짓 신호)가 적고 세력의 은밀한 이탈을 훨씬 빠르고 정밀하게 잡아냅니다.
- 한계: 전일 종가와 당일 시가 사이의 '갭(Gap)'을 수식에 전혀 반영하지 않습니다. 엄청난 갭 상승 후 하루 종일 흘러내려 음봉 마감(실질적 매도 우위)했음에도, 캔들 자체의 저가 대비 종가 위치만 보기 때문에 이를 온전히 해석하지 못하는 수리적 한계가 존재합니다.
5. 파이썬 구현 (캔들 역학 및 누적 연산)
당일 고가($H$)와 저가($L$)가 같아 변동폭이 없는 점하한가/점상한가 상황에서 발생하는 '0으로 나누기' 에러를 방지하기 위해 numpy.where를 사용하고, 판다스의 cumsum()으로 고속 누적 연산을 수행하는 정통 코드입니다.
import sqlite3
import pandas as pd
import numpy as np
def calculate_adl(df):
# 분모에 해당하는 당일 변동폭(H - L) 계산
h_l = df['high'] - df['low']
# 자금 흐름 승수(MFM) 산출 (분모가 0일 경우 0으로 처리)
mfm_numerator = (df['close'] - df['low']) - (df['high'] - df['close'])
mfm = np.where(h_l == 0, 0, mfm_numerator / h_l)
# 자금 흐름 거래량(MFV) 계산 및 최종 누적 합산(ADL)
df['MFV'] = mfm * df['volume']
df['ADL'] = df['MFV'].cumsum()
return df
6. 실전 Tip 및 요약
ADL 지표 하나만으로 진입 시점을 잡는 것은 위험합니다. 가장 치명적인 타점은 가격과 ADL 지표의 흐름이 정반대로 엇갈리는 '다이버전스(Divergence)'가 발생할 때입니다. 주가는 계속 전고점을 돌파하며 화려하게 오르고 있지만, ADL 지표가 고점을 갱신하지 못하고 꺾여 내려온다면 세력은 이미 캔들 내에서 교묘하게 물량을 떠넘기고(분산) 있는 것입니다. 폭락이 임박했다는 가장 강력한 수리적 경고를 절대 무시하지 마십시오.
'기술지표' 카테고리의 다른 글
| 윌리엄스 %R 지표 단기 과매도/과매수 헌팅 실전 매매 기법 [지표 백과 031] (1) | 2026.03.03 |
|---|---|
| 아룬(Aroon) 지표 수식 및 새로운 추세의 시작점 파악하는 법 [지표 백과 030] (1) | 2026.03.02 |
| 켈트너 채널(Keltner Channel) 돌파 매매: 볼린저 밴드와의 차이점 [지표 백과 028] (0) | 2026.03.01 |
| CCI 지표 우물 파기 기법 및 과매도 구간 탈출 타점 잡기 [지표 백과 027] (0) | 2026.03.01 |
| 슈퍼트렌드(SuperTrend) 지표: 소음 없는 직관적 추세 추종 매매 [지표 백과 026] (0) | 2026.02.28 |