피보나치 볼린저밴드 파이썬 코딩
피보나치 볼린저밴드(Fibonacci Bollinger Bands)는 밴드의 간격을 조정하는데 피보나치 비율을 활용합니다. 일반적인 볼린저밴드가 표준편차로 밴드의 간격을 조정하는데 비해, 피보나치 볼린저밴드는 ATR로 밴드의 간격을 조정합니다. 피보나치 볼린저밴드를 활용하면 시장의 움직임을 보다 정밀하게 분석할 수 있다고 알려져 있습니다. 이번 포스팅에서는 비보나치 볼린저밴드를 파이썬으로 구현하는 방법을 알아보겠습니다.
글의 순서
볼린저 밴드 (Bollinger Bands)
볼린저 밴드에서 표준편차의 배수와 통계학적 의미
피보나치 볼린저밴드란?
피보나치 볼린저밴드가 사용하는 피보나치 비율
피보나치 볼린저밴드 파이썬 코딩
볼린저 밴드 (Bollinger Bands)
볼린저 밴드는 주식, 외환, 암호화폐 등 다양한 금융 시장에서 가격의 변동성과 추세를 시각화하는 데 사용되는 기술적 분석 도구입니다. 볼린저 밴드는 중심선(일반적으로 단순 이동평균선, SMA)과 상단 및 하단 밴드로 구성됩니다.
상단 밴드와 하단 밴드는 이동평균선으로부터 일정한 표준편차만큼 떨어져 있는데, 이 표준편차는 시장의 변동성을 반영합니다. 통계학적으로, 표준편차는 데이터가 평균에서 얼마나 퍼져 있는지를 나타내는 값입니다. 만약 상단 밴드와 하단 밴드가 좁아진다면 이는 시장의 변동성이 낮다는 것을 의미하며, 밴드가 넓어지면 변동성이 높아졌음을 나타냅니다.
볼린저 밴드에서 표준편차의 배수와 통계학적 의미
통계학적으로, 데이터가 정규분포를 따를 경우 평균에서 ±1 표준편차 이내에 데이터의 약 68.27%가 존재하며, ±2 표준편차 내에는 약 95.45%, ±3 표준편차 내에는 약 99.73%가 포함됩니다. 이를 금융 시장에 적용하면, 가격이 ±2 표준편차를 초과하여 상단 밴드를 돌파하거나 하단 밴드 아래로 떨어질 확률은 약 5% 미만으로 매우 낮습니다.
따라서 볼린저 밴드는 가격이 비정상적으로 과매수되었거나 과매도되었는지 판단하는 지표로도 활용될 수 있습니다. 따라서 투자자들이 매수 또는 매도의 타이밍을 결정하는 데 유용하게 활용될 수 있습니다.
피보나치 볼린저밴드란?
피보나치 볼린저밴드는 기존의 볼린저밴드와 동일하게 중심선(주로 단순 이동평균, SMA)을 기준으로 상단과 하단의 밴드를 생성합니다. 그러나 표준편차 대신 ATR(Average True Range)에 피보나치 비율(1.618, 2.618, 4.236 등)을 곱하여 밴드의 폭을 조정한다는 점에서 기존의 볼린저밴드와 다릅니다.
ATR(Average True Range)
ATR은 특정 기간 동안의 가격 변동성을 측정하기 때문에, 표준편차보다 실시간 변동성을 반영하는 데 더 효과적입니다. 따라서 피보나치 볼린저밴드는 표준편차 기반의 기존 볼린저밴드와는 계산 방식에서 근본적인 차이가 있습니다. ATR은 TR(True Range)를 기반으로 계산되는데, 지금부터는 ATR을 구하는 방법에 대해 알아보겠습니다.
step1) True Range(TR) 계산
True Range는 현재 기간 동안의 가격 변동성을 나타냅니다. 다음 세 가지 값 중 가장 큰 값을 선택하여 계산합니다.
여기서, High는 현재 기간의 고가, Low는 현재 기간의 저가, Previous Close는 이전 기간의 종가를 각각 나타냅니다.
step2) ATR(Average True Range) 계산
ATR은 일정 기간 동안의 True Range(TR)의 이동 평균을 사용합니다.
여기서, 은 ATR을 계산하는 기간 (일반적으로 14 기간이 사용됨), 는 번째 기간의 True Range를 의미합니다. 물론 이와 같은 단순이동평균 대신 지수이동평균도 가능합니다.
피보나치 볼린저밴드가 사용하는 피보나치 비율
1.618, 2.618, 4.236 등의 값은 피보나치 수열과 황금비율(1.618)의 관계에서 유도된 비율입니다. 이 값들은 피보나치 되돌림이나 확장을 파악할 때 자주 사용되며, 다음과 같은 수학적 계산으로부터 나온 값입니다.
▶1.618: 황금비율
피보나치 수열에서, 큰 숫자를 바로 이전 숫자로 나누면 황금비율(1.618…)에 점점 가까워집니다.
이 비율은 피보나치 수열의 기본 비율로, 자연과 금융 시장에서 널리 사용됩니다.
▶2.618: 황금비율의 제곱
황금비율을 제곱한 값이 2.618입니다.
이는 피보나치 수열에서 두 칸 건너뛴 수의 비율과도 일치합니다.
이 값은 피보나치 확장(Fibonacci Extension)에서 사용되며, 강한 추세가 지속될 때 예상되는 목표 가격을 설정하는 데 활용됩니다.
▶4.236: 황금비율의 세제곱
황금비율을 세제곱한 값이 4.236입니다.
이는 피보나치 수열에서 세 칸 건너뛴 수의 비율과도 일치합니다.
이 비율은 더 강한 가격 확장을 예상할 때 사용됩니다.
피보나치 볼린저밴드 파이썬 코딩
Binance API를 통해 BTCUSDT의 일봉 데이터를 가져와 피보나치 볼린저밴드(Fibonacci Bollinger Bands)를 생성하는 파이썬 코드를 작성하였습니다. 특히 피보나치 볼린저밴드와 기존 볼린저밴드에서 변동성을 담당하는 부분인 ATR과 표준편차를 시각적으로 비교할 수 있도록 하였습니다. 아래의 내용과 함께 코드의 해당부분을 유심히 봐주시기 바랍니다.
▶피보나치 볼린저밴드 : 각 날짜의 고가, 저가, 이전 종가를 활용해 변동성(Volatility)을 ATR(Average True Range)로 측정합니다. ATR에 피보나치 비율(1.618, 2.618, 4.236)을 곱해 상단 및 하단 밴드를 계산합니다.
▶볼린저밴드(Bollinger Bands): 종가의 20일 단순 이동평균(SMA)과 표준편차를 이용해 상단 및 하단 밴드를 계산합니다.
코드로 그린 첫 번째 그래프는 피보나치 볼린저밴드(Fibonacci ATR Bands)를 캔들스틱 차트 위에 시각화하며, 두 번째 그래프는 표준편차 기반의 밴드와 ATR 기반의 밴드 간의 차이를 확인할 수 있도록 표준편차(1σ)와 ATR을 비교하였습니다.

마치며 …
이번 포스팅에서는 피보나치 볼린저밴드와 일반적인 볼린저밴드를 파이썬으로 구현하고 비교해보았습니다. 피보나치 볼린저밴드는 ATR(Average True Range)을 활용해 변동성을 반영하고, 피보나치 비율(1.618, 2.618, 4.236)을 기반으로 밴드의 간격을 조정하여 시장의 움직임을 더욱 정밀하게 분석할 수 있는 도구입니다.
반면, 기존 볼린저밴드는 표준편차를 활용하여 밴드의 범위를 계산하며, 특정 구간 내 가격 움직임을 통계적으로 평가하는 데 유용합니다. 이번 시각화를 통해 두 지표가 시장에서 어떤 차이를 보이는지 직관적으로 확인할 수 있었습니다. 변동성, 추세 등 시장을 파악하는데 이 포스팅이 도움이 되길 바랍니다.
함께 참고하면 좋은 글
▶ 피보나치 되돌림, 엘리어트 파동으로 시장흐름 읽기
▶ 피보나치 수열과 황금비율 파이썬 코딩
▶ 피보나치 수열과 황금비율
▶ 볼린저밴드, BBW, 파이썬 pyplot 캔들스틱 차트에 표시 방법
▶ 바이낸스 API, 판다스 시계열 데이터 분석. 볼린저 밴드 지표 %b, 밴드폭(Bandwidth)
▶ 파이썬 바이낸스 API로 시계열 데이터 분석. 판다스, 볼린저 밴드 (Bollinger Band)
▶ 파이썬 바이낸스 비트코인 투자 백테스팅 : 볼린저 밴드 추세 추종 매매 기법
참고자료
▶ Adam Hayes, Average True Range (ATR) Formula, What It Means, and How to Use It, Investopedia
▶ Ted English Subtitles, Arthur Benjamin: The magic of Fibonacci number [Eng Sub]