투자 보조 지표 Sonar
Sonar 지표는 이동평균선의 한계 변화율을 나타내는 것으로, 주가와 이동평균선의 이격도를 통한 매매 시점, 추세를 파악할 수 있는 지표이다. 주가는 장기 이동평균선에 회귀하려는 특성을 이용한 것이다.
계산방법
Sonar = (금일 N일 지수이동평균 - 전일 N일 지수이동평균) / 전일 N일 지수이동평균 * 100
Sonar signal = Sonar M일 지수이동평균
해석
Sonar 지표의 상승으로 과매수 구간을 파악할 수 있고, 지표의 하락으로 과매도 구간을 파알 할 수 있다.
전략
Sonar 지표 활용
- Sonar 선이 상승하여 0 돌파시 상승추세 : 매수시점
- Sonar 선이 하락하여 0 돌파시 하락추세 : 매도시점
- 지표의 %가 커질 시 급격한 상승(과매수) 혹은 하락(과매도)으로 분석할 수 있다.
Sonar + Signal 분석
- Sonar선이 Signal 선을 상승하여 돌파(골든크로스) : 매수시점
- Sonar선이 Signal 선을 하락하여 돌파(데드크로스) : 매도시점
- 지표는 추세가 없는 횡보장일 때는 적절한 매매 시점을 못 찾으므로 추세가 살아있는 시장에서 이용해야 한다.
파이썬 구현
import ta
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import FinanceDataReader as fdr
import copy
df_krx = fdr.StockListing('KRX')
kospi_data = df_krx[(df_krx["Market"]=="KOSPI") & (~df_krx["Sector"].isna())]
target = kospi_data[kospi_data["Name"]=="KT&G"]
price_data = fdr.DataReader("033780","2020","2022-12-01")
price_data["ema"] = price_data["Close"].ewm(span = 26).mean()
sonar = np.round((price_data["ema"] - price_data["ema"].shift(1))/price_data["ema"].shift(1)*100,2)
ma_sonar = np.round(sonar.ewm(span = 9).mean(),2)
네이버 증권 기준 N은 26, Signal 선은 9일 지수이동평균으로 산출한다.
산식으로만 보면 전일 대비 변화량 정도로 이해하면 될 것 같다.
price_data["sonar"] = sonar
price_data["ma_sonar"] = ma_sonar
fig, ax1 = plt.subplots(figsize = (14,7))
ax1.set_ylabel('Price')
ax1.plot(price_data["Close"],color = "black",alpha = 0.7)
ax2 = ax1.twinx()
ax2.set_ylabel('Index')
ax2.plot(price_data["sonar"],color = "tab:blue",alpha = 0.5)
ax2.plot(price_data["ma_sonar"],color = "tab:red",alpha = 0.5)
ax2.plot(price_data["stand"],color = "green",alpha = 0.5)
ax2.legend(["sonar","ma_sonar"],loc = "upper left")
plt.title(target["Name"].values[0])
plt.show()
강한 상승 추세가 있을 때 Sonar 값이 0위로 올라가면서 매수 사인이 발생하는 것이 보인다.
전반적으로 주가의 움직임과 동행하고 있는 것을 알 수 있는데, 이상한 포인트가 몇 개 있어 이는 2022년 이후 데이터로 확인해 봐야겠다.
주가가 상승할 때 지표가 하락하는 것은 하락 다이버전스라고 한다. 그런데 2022년 10월과 급격한 상승 이후 11월 이후 두 곳을 보면 주가는 상승하지만, 급격한 상승 부분을 제외하고 지표값은 점차 하락하는 것이 보인다. 원래대로라면 매도를 고려해봐야 하는 다이버전스 상황인데 주가는 계속 오르고 있다. 이를 보아 추세와 관계없는 정보가 있었다는 것으로 생각해 볼 수도 있겠다.
자사주 매입, 배당금 증액, 전자담배 출시 등 호재의 기대감으로 의한 상승으로도 생각할 수 있겠다. 그런데 이런 정보가 있다면 그전에 지표에서의 움직임도 같이 보일 텐데, Sonar 지표에서는 반대로 나타나고 있다.
그리고 12월 1일 현재, 11월 30일에 급등(3% 상승) 이후 상승분의 절반만큼 빠지면서 Sonar 지표가 한번 크게 출렁였다.
지표값은 아직 0.2 위에 있는데 9일 지수이동평균선과 만나 있다.
그런데.. signal 선과 너무 자주 만나고 있어서 개인적으로는 매매 시점으로 활용하기엔 어려워 보인다.
여기까지 자주 사용하는 지표들에 대해 Python으로 구현해보았다.
다음 글로는 현재 각각 따로 분석한 지표들을 보고서 형식으로 한 곳에 보기 좋게 모아서 분석자료로 사용할 수 있게 만들 것이다.
어떤 지표는 매도 사인을 어떤 지표는 매수 사인을 내고 있기 때문에 종합적인 판단을 내리기 위해선 여러 지표를 동시에 보는 것이 중요할 것이다. 보통 모바일 증권 앱을 많이 사용하는데, 여러 지표를 한 번에 보기엔 화면이 너무 작고 4~5개 이상 띄우지 못하게 막아놓기도 한다. 그럼 종목마다 지표를 바꿔가면서 봐야 하는데 불편함이 매우 크기 때문에 내가 원하는 지표를 한 번에 보고서로 만들어 분석하기 위해 이 작업을 계속하고 있다.
단타 모니터링, RSI 모니터링 시스템을 통해 매일매일 매매 종목이 올라오고 있다. 그런데 종종 너무 많은 종목이 올라와서 어떤 종목을 우선시 사야 하는지 판단이 필요하다. 요즘 같은 경우는 매도 사인이 매우 많이 나기 때문에 관망하고 있지만, 시장이 다시 상승세로 바뀌면 종목을 잘 판단해야 하기에, 지표 보고서를 빠르게 정리해야겠다.
'개발일지' 카테고리의 다른 글
DART API python 데이터 수집 (0) | 2022.12.10 |
---|---|
한국은행 ECOS API python 데이터 수집 (0) | 2022.12.09 |
파이썬 투자 보조 지표 분석 / 전략 설계 - PSAR (0) | 2022.12.02 |
파이썬 투자 보조 지표 분석 / 전략 설계 - TRIX (0) | 2022.12.01 |
파이썬 투자 보조 지표 분석 / 전략 설계 - 모멘텀 (0) | 2022.11.30 |
댓글