본문 바로가기
주식투자/퀀트

[젠포트] RSI 구현해보기

by 재테커 Mr.꾸 2022. 6. 16.
반응형

RSI 구현해보기

 

RSI의 정의

RSI는 상대 강도지수이며, 현재의 시장 상황이 과열된 상태인지 아니면 과매도된 상태인지 판단하기 위해 고안된 지표
단순히 상승 추세, 하락 추세를 판단하는 것을 넘어서 주가의 상승 또는 하락 속도를 나타낼 수 있어 추세전환의 결정적인 신호를 제공

RS = Au / Ad

Au : n일간의 평균상승폭

Ad : n일간의 평균 하락폭

 

RSI = RS / (1+RS) * 100

해당 내용을 젠포트로 구현하여 전략을 짜보자.

 

젠포트에는 RSI 팩터가 존재하나 이는 14일 기준 값이기 때문에 n을 변동하기 위해서 수식을 짜보았다.

 

Au : 기간총합("큰개수('({종가}-과거값({종가}, 1))',{1일},{0})*({종가}-과거값({종가}, 1))", 14)

Ad : 기간총합('절대값("작은개수('{종가}-과거값({종가}, 1)',{1일},{0})*({종가}-과거값({종가}, 1))")', 14)

RSI : (기간총합("큰개수('({종가}-과거값({종가}, 1))',{1일},{0})*({종가}-과거값({종가}, 1))", 14) / 기간총합('절대값("작은개수('{종가}-과거값({종가}, 1)',{1일},{0})*({종가}-과거값({종가}, 1))")', 14)) * 100 / (1+(기간총합("큰개수('({종가}-과거값({종가}, 1))',{1일},{0})*({종가}-과거값({종가}, 1))", 14) / 기간총합('절대값("작은개수('{종가}-과거값({종가}, 1)',{1일},{0})*({종가}-과거값({종가}, 1))")', 14)))

※  젠포트의 사칙연산이 앞에서 순차적으로 진행되는 듯해 보이고, 소수점 자릿수가 2자리로 제한이 되면서 ( * 100 ) 부분이 뒤에 있으면, 앞의 식의 계산 값이 0.00으로 처리가 되는 경우가 있어 앞에 위치하게 했다.

 

해당 수식이 14일 기준의 RSI 값과 맞는지 Back test를 하면서 값을 찍어보자.

수식 비교

 

젠포트에서 계산한 RSI 값과 일치하는 것을 확인했다.

 

이제 RSI 기준 값을 변형하면서 전략을 만들어 보자

 

MTS에 있는 것과 같이 6일 시그널 교차 시 매수/매매

MTS에 있는 것은 14일 기준의 RSI와 이것의 6일 이동평균의 교차점에 시그널을 주고 있다.

이것으로 전략을 한번 짜 보자.

최대 10일 보유하고, 시그널 교차가 발생하는 경우 매매를 하는 기본 전략으로 세워봤다.

과매수 구간이 70을 제외하고 한번 해봤다.

 

필터 조건 : before(A,1) and A and B and C and D and E

  • A : {RSI}-이동평균({RSI},{6}) > 0
  • B : {RSI} <= 70
  • C : 변화율_기간({RSI},{1일}) > 0
  • D : 변화율_기간('이동평균({종가},{3})', 1) > 0
  • E : {KOSDAQ_MT_or(3_5_10)} = 1

우선순위 조건

  • A : {RSI}-이동평균({RSI},{6}) <= 0
  • B : 변화율_기간({RSI},{1일})-과거값('변화율_기간({RSI},{1일})', 1) <= 0
  • C : 변화율_기간({RSI},{1일}) <= 0
  • D : {KOSDAQ_MT_or(3_5_10)} = 0

상승 구간을 잡기 위해서 위에 있는 거처럼 했지만!!! 역시나 결과는 아래와 같았다.

다시 골격을 손봐야 될 거 같다.

RSI 결과
728x90

'주식투자 > 퀀트' 카테고리의 다른 글

[scenario 1] 전체 수급 기준 - test2  (0) 2022.06.08
[scenario 1] 전체 수급 기준 - test1  (0) 2022.06.08

댓글