파이썬 투자 보조 지표 분석 / 전략 설계 - TRIX
투자 보조 지표 TRIX
Trix는 이동평균선의 불필요한 데이터 값을 제거해 명확하게 추세를 파악할 수 있는 장점이 있다.
불필요한 값을 제거한다는 것은 이동평균선을 3번에 거쳐 완만하게 표현시켜주는 것이다. 따라서 추세선이 부드러워지고, 시장의 변동성에 대응하기 쉬워진다.
계산방법
EMA1 = 종가의 N일 지수 이동 평균
EMA2 = EMA1의 N일 지수 이동 평균
EMA3 = EMA2의 N일 지수 이동 평균
TRIX = (금일의 EMA3 값 - 전일을 EMA3값) / 전일의 EMA3값 * 100
해석
3번의 필터(지수이동평균)을 거쳐 완만하고 정확성이 높은 이동평균선을 활용해 추세의 등락 및 매매시점을 포착하는데 유용한 지표이다.
전략
TRIX는 12일 Signal은 9일을 기준으로 한다.
- TRIX선이 상승하여 0 돌파시 상승 추세 : 매수시점
- TRIX선이 하락하여 0 돌파시 하락 추세 : 매도시점
- TRIX선이 Signal선을 상향하여 돌파시 : 매수시점
- TRIX선이 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-11-29")
trix = ta.trend.TRIXIndicator(price_data["Close"],12).trix()
ma_trix = trix.rolling(window=9).mean()
ta 패키지로 Trix, signal 계산은 함수 하나로 간단하다.
ema1 = price_data["Close"].ewm(span= 12).mean()
ema2 = ema1.ewm(span= 12).mean()
ema3 = ema2.ewm(span= 12).mean()
trix = (ema3 - ema3.shift(1))/ema3.shift(1)*100
ma_trix = trix.rolling(window=9).mean()
pandas로 계산하는 식도 간단하다. pandas의 내장 함수를 적절히 이용해주면 된다.
price_data["trix"] = trix
price_data["ma_trix"] = ma_trix
trix 12일, signal 9일로 계산해준 지표 값이다.
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["trix"],color = "tab:blue",alpha = 0.5)
ax2.plot(price_data["ma_trix"],color = "tab:red",alpha = 0.5)
ax2.legend(["trix","ma_trix"],loc = "upper left")
plt.title(target["Name"].values[0])
plt.show()
2020년 부터의 KT&G Trix 지표.
주가는 파동이 심한 반면, Trix지표는 주가의 흐름을 따르면서 매우 완만해진 것을 볼 수 있다. 3번의 지수 이동 평균으로 추세를 확인하기가 쉬워진 것으로 보인다.
2022년부터 최근 추세를 보자.
Trix지표가 0선 위에 있을 때 상승세가 두드러진다. 조금 후행하기는 하지만, 0선 이하로 내려왔을 때 한 번 매도해도 괜찮았던 포인트가 6월 말쯤에 있었다. 그 후 다시 0선을 돌파하고, Trix선이 signal선을 돌파하면서 주가는 큰 폭으로 상승했다.
현재는 Trix지표가 0.22, signal이 0.28 정도로 signal 선에 대해서는 하향 돌파했지만, Trix 지표값 자체가 0.2로 큰 편이다.
기본적인 전략 중 한가지만 만족하고 0선을 기준으로는 아직 여지가 남아있어 보인다. 물론 추세가 꺾여서 하락할 수도 있겠지만 말이다.
다른 지표를 봤을 때도 하락하는 시그널은 크지 않은 것 같았다. 이렇기 때문에 여러 지 표를 동시에 보면서 자신만의 매매 기준을 세워야 한다는 것 같다.
TRIX선의 경우 흐름이 완만하기 때문에 벡테스팅이나 매매 포인트, 발생 횟수 등의 분석에 사용하기 적절해 보인다. RSI도 변동폭이 큰 편이라 시그널이 많이 발생한 것을 이전 포스팅에서 확인했었다.
2022.11.15 - [개발일지] - 8. 투자지표를 활용한 매매 시점 모니터링 - 전략 설계 참고
역시 조금 후행하는 것으로 보인다. 아무래도 3번의 지수 이동평균으로 반영이 조금 늦게 되는 것 같다. 오르기 시작한 후 매수 사인이, 내리기 시작한 후 매도 사인이 많이 발생하는 것을 보아서는 Trix 단일 지표만으로는 활용 가능성이 낮아보이기도 한다.
물론 시그널 선을 돌파하는 전략까지 벡테스팅에 반영하지는 못했다. 코드 수정이 좀 필요한데 다양한 지표에 사용 가능하도록 통합하며 수정할 예정이다.
따라서 전략의 검증은 지표를 모두 구현한 후 해야할 것 같다.