1. ZigZag는 고점과 저점을 예측하는 지표가 아닙니다
지그재그(ZigZag) 지표를 과거 차트에 적용하면 큰 고점과 저점이 정확히 연결된 것처럼 보입니다. 작은 등락은 사라지고 의미 있어 보이는 파동만 남기 때문에 추세선, 엘리어트 파동, 피보나치 기준점을 찾을 때 자주 사용됩니다.
하지만 완성된 선의 꼭짓점은 그 날짜에 확정된 신호가 아닙니다. 이후 가격이 설정한 비율만큼 반대 방향으로 움직인 뒤에야 과거의 극값이 피벗으로 확정됩니다. 최신 극값은 다음 반전이 나오기 전까지 계속 바뀔 수 있습니다.
TradingView의 Zig Zag 설명도 일정 비율 이상의 반전과 피벗 확인을 사용하며, 피벗을 확인하려면 이후 가격이 필요하므로 선이 과거 위치에 그려진다고 설명합니다. 또한 최신 선은 최종 상태가 아니며 후속 가격에 따라 제거되거나 다시 그려질 수 있다고 명시합니다.
| ZigZag가 보여주는 것 | ZigZag만으로 알 수 없는 것 |
|---|---|
| 설정값보다 큰 과거 가격 파동 | 현재 극값이 최종 고점·저점인지 여부 |
| 확인된 고점과 저점의 구조 | 다음 가격 방향과 반전 확률 |
| 작은 움직임을 제거한 시각적 골격 | 피벗 날짜에 실제 주문할 수 있었는지 여부 |
따라서 ZigZag는 신호 생성기보다 과거 파동을 단순화하는 표시 도구에 가깝습니다. 백테스트에서는 차트에 표시된 피벗 날짜와 그 피벗을 알게 된 확정 날짜를 반드시 분리해야 합니다.
2. 5% 반전이 나온 날 과거 극값을 확정합니다
플랫폼마다 고가·저가 사용 여부, 피벗을 확인하는 좌우 봉 수, Depth·Deviation·Backstep 설정이 다릅니다. 이번 검증은 원리를 가장 분명하게 보기 위해 종가 기준 단일 5% 반전 방식을 사용했습니다.
상승 구간에서는 마지막 확정 저점 이후 가장 높은 종가를 고점 후보로 계속 갱신합니다.
당일 종가가 고점 후보에서 반전 비율 r 이상 하락하면 그 과거 고점을 확정합니다.
하락 구간에서는 가장 낮은 종가를 저점 후보로 갱신하고, 당일 종가가 그 값에서 r 이상 상승하면 과거 저점을 확정합니다.
| 계산 상태 | 처리 방법 |
|---|---|
| 상승 구간에서 새 고가 발생 | 고점 후보의 날짜와 가격을 새 값으로 교체합니다 |
| 고점 후보에서 5% 하락 | 과거 고점을 확정하고 저점 후보 추적을 시작합니다 |
| 하락 구간에서 새 저가 발생 | 저점 후보의 날짜와 가격을 새 값으로 교체합니다 |
| 저점 후보에서 5% 상승 | 과거 저점을 확정하고 고점 후보 추적을 시작합니다 |
| 데이터의 마지막 극값 | 다음 5% 반전 전까지 미확정 상태로 남습니다 |
예를 들어 고점 후보가 100,000원이라면 종가가 95,000원 이하가 된 날 고점을 확정합니다. 차트의 꼭짓점은 100,000원을 기록한 과거 날짜에 표시되지만, 그 값을 고점이라고 알 수 있었던 시점은 95,000원 이하로 하락한 날입니다.
이번 계산은 2018년부터 상태를 이어 초기 시작점의 영향을 줄였고, 비교 표본은 2022년 1월 3일부터 2026년 8월 7일까지로 고정했습니다. 장중 고가와 저가를 사용하지 않았으므로 같은 5%를 설정한 다른 플랫폼과 결과가 다를 수 있습니다.
3. 마지막 선은 새 극값이 나올 때마다 위치가 바뀝니다
아래 차트는 삼성전자에서 2024년 7월 9일 종가 87,800원이 고점으로 확정된 뒤, 다음 저점 후보가 어떻게 이동했는지 날짜별로 다시 계산한 결과입니다.

| 화면을 확인한 날짜 | 마지막 확정 피벗 | 당시 저점 후보 | 후보 날짜 |
|---|---|---|---|
| 2024년 7월 22일 | 7월 9일 고점 87,800원 | 83,000원 | 7월 22일 |
| 2024년 7월 31일 | 7월 9일 고점 87,800원 | 80,400원 | 7월 25일 |
| 2024년 8월 5일 | 7월 9일 고점 87,800원 | 71,400원 | 8월 5일 |
7월 22일 화면의 마지막 선은 83,000원을 향했지만 이후 더 낮은 종가가 나오면서 끝점이 80,400원, 다시 71,400원으로 이동했습니다. 71,400원 저점은 8월 12일 종가가 75,500원까지 올라 5% 반전 조건을 만족한 뒤에야 확정됐습니다.
완성된 차트만 보면 8월 5일 저점을 정확히 찍은 선처럼 보입니다. 그러나 8월 5일에는 그 가격이 최종 저점인지 알 수 없었습니다. 이후 더 낮은 종가가 나왔다면 마지막 선은 다시 그 날짜와 가격으로 이동했을 것입니다.
이 글에서 리페인트는 이미 충분한 반전으로 확정된 모든 과거 파동이 계속 바뀐다는 뜻이 아닙니다. 현재 진행 중인 마지막 극값과 그 극값을 잇는 선이 확정 전까지 이동한다는 뜻입니다. 플랫폼이 미확정 피벗이나 좌우 봉 확인을 함께 사용하면 최신 실선까지 다시 계산되는 범위가 더 넓을 수 있습니다.
4. 같은 고점 확정도 하락 지속과 재상승으로 갈렸습니다
ZigZag 고점이 확정됐다는 사실을 매도 신호로 사용하면 어떤 결과가 나오는지도 확인했습니다. 삼성전자에서 종가가 고점 후보 대비 5% 이상 하락해 고점을 확정한 뒤, 신호 다음 거래일 시가부터 열 번째 거래일 종가까지 관찰했습니다.

| 항목 | 하락 지속 사례 | 고점 신호 실패 사례 |
|---|---|---|
| 과거 고점 | 2024년 7월 9일 · 87,800원 | 2025년 7월 3일 · 63,800원 |
| 확정일 | 2024년 7월 22일 | 2025년 7월 9일 |
| 고점부터 확정까지 | 9거래일 | 4거래일 |
| 확정일 종가 | 83,000원 | 60,400원 |
| 다음 날 시가 | 84,200원 | 60,600원 |
| 열 번째 거래일 종가 | 71,400원 | 66,400원 |
| 10거래일 수익률 | -15.20% | +9.57% |
| 기간 중 최고 수익률 | +2.26% | +13.53% |
| 기간 중 최저 수익률 | -16.63% | -0.33% |
첫 사례는 87,800원 고점을 기록한 뒤 9거래일이 지나서야 5% 하락 조건을 충족했습니다. 확정 다음 날 시가 이후에도 하락이 이어져 열 번째 거래일 종가는 15.20% 낮았습니다.
두 번째 사례도 같은 삼성전자와 같은 5% 고점 확정 조건입니다. 그러나 확정 다음 날 시가 이후 가격이 다시 상승했고 열 번째 거래일 종가는 9.57% 높았습니다. 고점이 사후적으로 확정됐다는 사실과 이후에도 하락이 계속된다는 예측은 같은 명제가 아닙니다.
기간 중 최고·최저 수익률은 다음 날 시가부터 10거래일의 고가와 저가로 계산했습니다. 일봉만으로 장중 가격의 선후 관계는 알 수 없으며 이 수치를 곧바로 익절·손절 전략 성과로 해석해서는 안 됩니다.
5. 임계값이 커지면 파동은 줄지만 확정은 더 늦어집니다
10개 대형주 일봉에 같은 종가 기준 알고리즘을 적용해 3%·5%·10% 반전을 비교했습니다. 피벗은 과거 극값이 아니라 반전 조건을 충족한 날을 기준으로 평가했으며, 신호 다음 날 시가부터 열 번째 거래일 종가까지의 방향을 확인했습니다.

| 반전 비율 | 확정 피벗 | 확정 지연 중앙값 | 확정 지연 90분위 | 고점 뒤 하락 | 저점 뒤 상승 |
|---|---|---|---|---|---|
| 3% | 1,398개 | 2거래일 | 4거래일 | 49.00% | 49.57% |
| 5% | 827개 | 3거래일 | 8거래일 | 47.82% | 51.08% |
| 10% | 343개 | 7거래일 | 18거래일 | 46.47% | 45.09% |
반전 비율을 3%에서 10%로 높이자 확정 피벗은 1,398개에서 343개로 줄었습니다. 더 큰 움직임만 남아 차트는 단순해졌지만 피벗부터 확정까지 걸린 기간의 중앙값은 2거래일에서 7거래일로 늘었습니다. 10% 설정의 확정 지연 90분위는 18거래일이었습니다.
큰 임계값이 이후 방향을 더 잘 맞힌 것도 아닙니다. 5% 설정의 고점 확정 412개 중 10거래일 뒤 가격 방향이 하락이었던 비율은 47.82%, 저점 확정 415개 중 상승이었던 비율은 51.08%였습니다. 이번 표본에서 ZigZag 피벗은 과거 파동 분류에는 유용했지만 단독 방향 신호로 뚜렷한 우위를 보이지 않았습니다.
이 결과는 거래비용 전 단순 관찰이며 완성된 매매 전략의 백테스트가 아닙니다. 반전 비율을 사후적으로 고르거나 종목별로 최적화하면 과거 차트는 더 매끄러워질 수 있지만 미래 성과까지 좋아진다는 보장은 없습니다.
6. 백테스트에서는 피벗 날짜가 아니라 확정 날짜를 사용합니다
ZigZag를 차트 분석이나 시스템 규칙에 사용할 때는 다음 순서로 확인합니다.
- 종가와 고가·저가 중 어떤 가격을 사용하는지 기록합니다.
- 반전 비율과 Depth·피벗 확인 봉 수 등 모든 설정을 고정합니다.
- 확정된 피벗과 진행 중인 마지막 후보를 다른 선으로 표시합니다.
- 피벗 날짜와 확정 날짜를 데이터에 각각 저장합니다.
- 백테스트 신호는 확정 날짜 이후에만 사용할 수 있도록 제한합니다.
- 반전 비율별 신호 수, 확정 지연과 실패 사례를 함께 비교합니다.
핵심은 간단합니다. ZigZag의 과거 꼭짓점은 그날 발견한 신호가 아니라 이후 반전으로 뒤늦게 확정된 극값입니다. 마지막 선은 계속 움직일 수 있고, 확정된 고점과 저점도 다음 방향을 보장하지 않습니다.
확정 피벗을 기준점으로 사용하는 방법은 피보나치 되돌림 보는 법, 좌우 봉 확인이 필요한 다른 지표는 Williams Fractal 계산법, 가격을 따라가는 반전 기준선은 파라볼릭 SAR 계산법, 변동성에 맞춰 폭을 조정하는 방법은 ATR 계산법을 참고할 수 있습니다.