BIAS와 이격도
BIAS
주가와 이동평균선의 괴리도를 나타내는 지표입니다.
$$\text{BIAS} = \frac{\text{현재종가 - N일 이동평균선}}{\text{N일 이동평균선}}\times 100(\%)$$N은 일반적으로 사용자가 설정하는 기간으로 6, 12, 24일 등입니다.
pandas_ta.bias(close, length=None, mamode=None, offset=None, **kwargs)
함수를 적용합니다. 매개변수 mamode로 이평선의 종류를 지정할 수 있습니다. length(기간)의 기본값은 26일 입니다.
import numpy as np import pandas as pd import FinanceDataReader as fdr import yfinance as yf import pandas_ta as ta import matplotlib.pyplot as plt import mplfinance as mpf st=pd.Timestamp(2024,9, 1) et=pd.Timestamp(2025, 5,2) trgnme="000660.KS" trg=yf.download(trgnme, st, et) trg.columns=[i[0] for i in trg.columns]
bias=ta.bias(trg.Close) bias.tail(3)
Date 2025-04-28 -0.019559 2025-04-29 -0.019789 2025-04-30 -0.031520 Name: BIAS_SMA_26, dtype: float64
BIAS를 주가의 봉차트와 비교해 봅니다.
adp=[mpf.make_addplot(ta.bias(trg.Close, length=5, mamode='ema'), panel=1, color="Navy", label="bias_5"), mpf.make_addplot(ta.bias(trg.Close, length=20, mamode='ema'), panel=1, color="brown", label="bias_20"), mpf.make_addplot(ta.ema(trg.Close, length=5), panel=0, color="Navy", label="ema_5"), mpf.make_addplot(ta.ema(trg.Close, length=20), panel=0, color="brown", label="ema_20")] fig, axs=mpf.plot(trg, type="candle", style="yahoo", addplot=adp, volume=False, returnfig=True, figsize=(12,6)) axs[3].axhline(0, color="gray", ls="dotted") axs[0].legend(loc="upper left") axs[2].legend(loc="upper left") plt.show()
위 결과에서 ema20의 경우 평활화가 진행된 것으로 ema5에 비해 주가와 큰 이격이 발생합니다.
- 주가 > ema → bias > 0 즉, bias와 0선의 이격이 클수록 주가가 이평선 위로 큰차이로 존재하는 것을 의미하고 차츰 그 이격이 감소하는 경향을 보입니다. 그러므로 +BIAS의 고점(과매수 의심)이후 감소하는 경향을 보이는 것으로 매도 신호일수 있습니다.
- 주가 < ema → bias < 0 즉, bias와 0선의 이격이 클수록 주가가 이평선 아래로 큰차이로 존재하는 것을 의미하고 차츰 그 이격이 감소하는 경향을 보입니다. 그러므로 -BIAS의 저점(과매도 의심)이후 감소하는 경향을 보이는 것으로 매수 신호일수 있습니다.
- BIAS의 고점, 저점은 과매수와 과매도로 매도와 매수 전략을 고려하고 추세반전의 가능성을 인지해야 합니다. 그러나 이 과매도/과매수가 장기간 지속될 수 있으므로 다른 지표와의 함께 분석이 필요합니다.
- BIAS가 0 선에 근접한 상태가 지속되면 횡보구간이지만 상향 또는 하향 돌파의 가능성을 고려해야 합니다.
- BIAS가 +을 유지하면 상승추세, -을 유지하면 하락추세로 해석할 수 있습니다.
BIAS는 단기적인 과열 또는 침체를 나타내는 지표 장기적인 추세분석에는 적합하지 않음
이격도
BIAS와 매우 유사. 현 주가와 이평선의 이격정도를 백분율로 나타냅니다.
$$\text{이격도} = \frac{\text{현재종가}}{\text{N일전 이동평균선}}\times 100(\%)$$기간 N은 일반적으로 20, 60, 120일 이평선을 사용합니다.
pandas_ta에서 이격도를 직접 계산하는 함수는 제공하지 않지만 sma(), ema() 함수를 사용하여 다음 UDF를 작성하여 사용할 수 있습니다.
def cal_separation(data, n=20, mamode="sma"): if mamode=="sma": ma=ta.sma(data, length=n) else: ma=ta.ema(data, length=n) return data/ma * 100
sepa=cal_separation(trg.Close) sepa.tail(3)
Date 2025-04-28 101.226397 2025-04-29 101.014051 2025-04-30 99.738713 dtype: float64
adp=[ mpf.make_addplot(ta.ema(trg.Close, length=5), panel=0, color="orange", label="ema5"), mpf.make_addplot(ta.ema(trg.Close, length=20), panel=0, color="brown", label="ema20"), mpf.make_addplot(cal_separation(trg.Close, n=20), panel=1, color="brown", label="separation20")] f, axs=mpf.plot(trg, type="candle", style="yahoo", volume=False, addplot=adp, returnfig=True, figsize=(12, 6)) axs[2].axhline(100, color='orange', ls="dotted") axs[0].legend(loc="upper left") axs[2].legend(loc="upper left") plt.show()
위 결과에서 20일 이격이 100 이상일 경우 주가는 이평선 위에 존재하면 주가가 위, 아래에 존재하며 주가가 아래에 존재
- 이격선이 100선 위에서 상승하면 주가 상승, 하락하면 주가 하락
- 이격선이 100선 아래에서 하강하면 주가 하락, 상승하면 주가 상승
- 100% 초과: 현재 주가가 N일 이동평균선 위에 있다는 것을 의미합니다. 이격도가 높을수록 단기적으로 과매수 상태일 가능성이 높아져 매도 신호로 해석될 수 있습니다.
- 100% 미만: 현재 주가가 N일 이동평균선 아래에 있다는 것을 의미합니다. 이격도가 낮을수록 단기적으로 과매도 상태일 가능성이 높아져 매수 신호로 해석될 수 있습니다.
- 100% 근처: 현재 주가가 N일 이동평균선 부근에 있다는 것을 의미하며, 뚜렷한 매수 또는 매도 신호로 보기 어렵습니다.
BIAS와 계산상의 차이만 존재하며 해석이나 주의 사항은 같음
댓글
댓글 쓰기