1. BOP는 거래 주체가 아니라 캔들 몸통 비율을 계산합니다
BOP(Balance of Power)는 당일 시가에서 종가까지 움직인 몸통을 당일 고가와 저가의 전체 범위로 나눈 가격 지표입니다. 거래량, 체결 주체, 투자자별 순매수는 계산에 들어가지 않습니다.
Raw BOP가 양수라는 것은 종가가 시가보다 높다는 뜻입니다. 분모인 고가와 저가의 차이가 양수이므로 부호는 양봉·음봉의 방향과 같습니다. BOP가 추가로 보여주는 정보는 몸통이 하루 전체 범위에서 차지하는 비율입니다.
| Raw BOP | 가격으로 확인되는 내용 | 단정할 수 없는 내용 |
|---|---|---|
| 양수 | 종가>시가인 양봉 | 특정 매수 주체의 장악 |
| 음수 | 종가<시가인 음봉 | 세력 이탈·물량 넘기기 |
| +1에 가까움 | 양봉 몸통이 하루 범위 대부분을 차지 | 에너지 소진·곧 하락 |
| -1에 가까움 | 음봉 몸통이 하루 범위 대부분을 차지 | 과매도·곧 반등 |
| 0 부근 | 시가와 종가가 가깝거나 평활값이 상쇄됨 | 매수자와 매도자의 실제 힘이 같음 |
기존 글은 BOP를 캔들의 거짓말 탐지기, 진짜 세력, 물량을 넘긴 흔적으로 설명했습니다. 하지만 OHLC 네 가격만으로 누가 거래했는지는 알 수 없습니다. 매수와 매도는 모든 체결에 동시에 존재하므로 거래 주체를 말하려면 별도의 수급 데이터와 정의가 필요합니다.
2. 복잡한 원형도 종가-시가를 하루 범위로 나눈 값으로 정리됩니다
Igor Livshin은 2001년 Technical Analysis of Stocks & Commodities에 이 지표를 소개했습니다. 원문 Balance of Market Power는 고가·저가·시가·종가를 이용해 황소와 곰의 보상을 여러 항으로 나눴지만, 최종값은 다음 식으로 정리됩니다.
발표 뒤 독자들이 각 항을 대수적으로 정리해 같은 단순식이 된다는 점을 지적했습니다. 잡지는 2001년 10월 후속 설명에 전개 과정을 실었고, BOP라는 명칭의 상표 문제 때문에 원 지표를 BMP(Balance of Market Power)로 부르겠다고 정정했습니다. 이후 차트 플랫폼에서는 BOP라는 이름이 널리 사용되고 있습니다.
Raw BOP는 한 봉마다 크게 움직이므로 원문은 일봉에서 보통 14일 이동평균을 사용했습니다. 기간은 시장과 시간 단위에 따라 달라질 수 있다고 설명합니다.
따라서 Raw BOP와 SMA(14) BOP는 구분해야 합니다. Raw BOP의 0선 교차는 양봉과 음봉이 바뀐 날에 가깝고, SMA(14)의 0선 교차는 최근 14개 몸통 비율의 평균 부호가 바뀐 날입니다.
3. 몸통의 높이와 갭은 BOP에 들어가지 않습니다
BOP는 같은 몸통 비율이면 하루 범위 안의 위치가 달라도 같은 값을 냅니다.
| 고가 | 저가 | 시가 | 종가 | 종가의 범위 내 위치 | Raw BOP |
|---|---|---|---|---|---|
| 110 | 100 | 100 | 105 | 50% | +0.5 |
| 110 | 100 | 105 | 110 | 100% | +0.5 |
첫 번째 봉은 저가에서 시작해 범위 중간에 끝났고, 두 번째 봉은 범위 중간에서 시작해 고가에 끝났습니다. 종가 위치는 다르지만 몸통 길이가 모두 5이므로 BOP는 같습니다. 후속 독자 지적도 이 위치 정보가 사라지는 점을 짚었습니다.
갭도 계산에서 제외됩니다. 전일 종가가 100, 당일 시가가 90, 종가가 92라면 당일 몸통은 양수여서 BOP도 양수일 수 있지만 전일 종가 대비 수익률은 -8%입니다. BOP의 양수는 당일 시가 이후 상승을 뜻할 뿐 전일 대비 가격이 상승했다는 뜻은 아닙니다.
고가와 저가가 같으면 분모가 0이므로 원식은 정의되지 않습니다. 이번 계산에서는 유효한 OHLC에서 시가·고가·저가·종가가 모두 같은 35거래일을 중립값 0으로 처리했습니다. 기존 코드처럼 분모를 임의의 매우 작은 수로 바꾸기보다, 데이터 오류인지 실제 무변동 봉인지 확인하고 결측 또는 중립 처리 규칙을 명시하는 편이 재현 가능성이 높습니다.
4. 같은 BOP 0선 교차와 추세 조건 뒤 결과는 달랐습니다
Raw BOP를 14일 단순이동평균한 값이 전일 0 이하에서 당일 0을 초과하고, 종가가 SMA120보다 높은 날을 관찰했습니다.

| 항목 | 상승 사례 | 하락 사례 |
|---|---|---|
| 판정일 | 2025년 12월 17일 | 2026년 7월 3일 |
| 판정일 종가 | 107,900원 | 309,500원 |
| SMA120 | 83,207원 | 227,710원 |
| Raw BOP | +0.9362 | +0.7119 |
| BOP SMA(14) | +0.0269 | +0.0817 |
| 5거래일 내 BOP(14) 재하향 | 아니오 | 예 |
| 10거래일 수익률 | +27.99% | -21.16% |
두 사례 모두 당일 양봉 몸통이 하루 범위의 70% 이상이었고 BOP(14)가 0선을 상향 교차했습니다. 종가도 SMA120보다 높았지만 이후 10거래일 수익률은 반대로 나타났습니다.
하락 사례의 Raw BOP와 평활 BOP가 모두 더 높았다는 사실도 이후 상승을 보장하지 못했습니다. BOP는 판정일까지의 캔들 몸통을 요약할 뿐 이후 매도 압력이나 갭, 새로운 정보를 미리 측정하지 않습니다.
5. 10개 대형주에서는 평활해도 상승 비율이 크게 달라지지 않았습니다
2018년부터 지표를 누적하고 2022년 이후 10개 대형주에서 이후 10거래일을 확인할 수 있는 8,860거래일을 평가했습니다.

| BOP 조건 | 0선 상향 교차 | 5일 내 재하향 | 10일 뒤 수익률 양수 | 10일 수익률 중앙값 |
|---|---|---|---|---|
| Raw BOP | 2,251개 | 98.36% | 48.69% | -0.17% |
| BOP SMA(5) | 905개 | 76.02% | 49.39% | -0.12% |
| BOP SMA(14) | 511개 | 72.41% | 49.12% | 0.00% |
| BOP SMA(28) | 282개 | 67.38% | 51.06% | +0.24% |
| BOP SMA(14)·종가>SMA120 | 291개 | 69.07% | 51.89% | +0.46% |
평활 기간이 길어질수록 교차 수와 5일 내 재하향 비율은 줄었습니다. 하지만 이는 신호가 늦고 적게 발생한 결과도 포함합니다. SMA(28)의 상승 비율 51.06%만 보고 기간 28이 더 우수하다고 결론 내리기에는 차이가 작고, 같은 표본에서 여러 기간을 비교한 과최적화 가능성도 있습니다.
갭 절댓값이 2% 미만인 7,100거래일에서는 Raw BOP와 전일 대비 수익률의 부호가 12.66% 어긋났습니다. 갭이 2% 이상인 1,169거래일에서는 불일치가 41.57%로 높아졌습니다. 당일 시가 이후 방향과 전일 종가 이후 방향을 구분해야 하는 이유입니다.
6. BOP는 양봉·음봉의 크기 비율로 제한해 해석합니다
BOP를 분석에 사용할 때는 다음 순서로 확인합니다.
- Raw BOP와 몇 기간으로 평활한 BOP인지 구분합니다.
- BOP 부호를 시가 대비 종가 방향으로 해석합니다.
- 전일 종가 대비 수익률과 갭을 별도로 확인합니다.
- 고저 범위가 0인 봉의 처리 규칙을 기록합니다.
- 0선 교차 뒤 재교차, 보유 기간과 거래비용을 함께 검증합니다.
핵심은 간단합니다. BOP는 캔들 몸통의 방향과 하루 범위 대비 크기를 계산하지만, 거래 주체나 숨은 수급을 식별하지 않습니다. 0선 상향 교차는 최근 몸통 비율 평균이 양수가 됐다는 뜻이며, 매수세 장악이나 미래 상승은 별도의 가설입니다.
시가·종가 몸통과 고가·저가 범위를 대칭 가중하는 방법은 Relative Vigor Index 계산법, 고가·저가와 EMA의 관계는 Elder-Ray 계산법, 가격과 거래량을 함께 사용하는 방법은 Force Index 계산법, 누적 수급값의 EMA 차이는 Chaikin Oscillator 계산법을 함께 참고할 수 있습니다.