저번에 RSI를 힘겹게 구하고... 코드까지 만든 이후에 이제 RSI SIgnal을 구하는 단계까지 왔습니다.
그런데 Average 함수로 구한 RSI SIgnal이 현실과 너무 동떨어진겁니다;;
RSI 를 처음 구했을때와 같은 신선한 충격이었습니다.
그 이유는 바로 RSI SIgnal 이 '지수평균'이기 때문입니다.
오늘은 제가 고생하며 알아낸, 엑셀로 지수평균 구하는 방법과 함께 엑셀로 지수평균 구하는 수식까지 공유해보도록 하겠습니다.
RSI Signal은 RSI라는 '상대강도지수'의 '지수평균'입니다. 'Exponential Moving Average'이라고 하죠.
중요한건. 이 지수평균이 일반적인 평균(Average)와는 전혀 다르다는 것입니다.
지수평균은 좀더 풀어서 '지수가중이동평균'이라고 합니다. 즉.
모든 값에 '같은' 가중치를 주는 일반적인 평균과 달리.
과거의 값과 현재의 값에 '다른' 가중치를 주는 평균법.
그것이 지수평균입니다. 그리고 지수평균의 공식은
EMA(t) = a*X(0) + (1-a)*EMA(t-1) (단, a=2/(1+period))
입니다. 무슨소린지 이해가 안되시죠? 저도 처음엔 그랬습니다. 뭔 개소리야 이거 보고 어떻게 이해하냐고 엌ㅋㅋㅋ
지수평균식을 구성하는 요소는 다음과 같습니다.
변수 |
번역 |
설명 |
period |
기간 |
9,14,20 등 원하는 기간으로 설정 |
a |
가중치 |
평균을 내는 기간(period)가 길수록, 오늘 변수의 가중치가 작아짐 |
t |
0봉전(현재) |
- |
t-1 |
1봉전 |
X(t) |
구하고자 하는 변수 |
가격, RSI 등이 해당됨 (본 포스팅에서는 X(0)=RSI(14)) |
EMA(t) |
현재 지수평균 |
- |
EMA(t-1) |
과거 지수평균 |
만약 t-1 = 0 인경우 EMA(0)=Averge(RSI(14),20) |
여기서 중요한건 'EMA(t-1)'입니다.
만약 t-1 = 0 인 경우. 즉 앞서 가중치를 부여할 일이 없는, 최초로 '지수평균'을 하는 경우 그 값은 가중치가 없기때문에
일반적인 평균값으로 설정됩니다.
풀어서 적어보면
이하에서 RSI(t) 는 t라는 시간에 해당하는 RSI를 의미합니다!
EMA(0) = average(RSI,20) .....RSI의 최근 20일치를 더하여 나누기 20
EMA(1) = a*RSI(1) + (1-a)EMA(0)
EMA(2) = a*RSI(2) + (1-a)EMA(1)
= a*RSI(2) + (1-a)(a*RSI(1) + (1-a)EMA(0))
= a*RSI(2) + (1-a)a*RSI(1) + (1-a)²EMA(0)
...........
이렇게 각 시점의 RSI 마다 서로 다른 가중치가 적용됨을 알 수 있습니다!
'지수가중이동평균'이라는 정의대로 현재에서 가까운 값일수록 큰 가중치를 부여하고 과거의 값일수록 작은 가중치를 부여함으로써, 과거의 값에도 미미하게나마 그 영향력을 인정해주는 평균값임을 이렇게 확인할 수 있었습니다.
지수평균구하기(RSI Signal).xlsx
0.04MB
위와 같은 수식을 적용한 것이 위 파일입니다!
PJ2. 엑셀로 VBA로 '진짜' RSI 구하기 (코드 배포!)
0.들어가며 안녕하세요 새벽단호박입니다! 어제 코드를 발급받고, 이제 본격적으로 검색기를 만들어보려고합니다. 정말 많은... 많은 시행착오가 있었습니다. 여기까지오는데 하루를 썻네요...
dawnpkin.tistory.com
(위 글을 보시면 파일에 대한 이해가 조금 더 쉬우실 수 있습니다)
2행에서 33행까지가 비어있는 이유는
1) RSI(14)를 구하기 위해서는 14일 간의 변화값이 필요함
따라서 I2:I14까지는 비어있음
2) RSI Signal(20) = EMA(RSI(14),20)을 구하기 위해서는
RSI(14)의 최근 20일 간 값이 필요함
따라서 15:33행이 비어있음
****************추가****************
만일 왼쪽의 값은 필요없고, 지수평균을 구하는 수식만 구하고 싶으시다면은
지수평균구하기(simple).xlsx
1.93MB
심플한 버전도 만들어 보았습니다.
이용하실 경우 1열(X)에 원하시는 값을 넣어서 사용하시면 됩니다
참 그냥 사용할 땐 몰르다가 직접 테스트 해보고 부딪히면서 배우는게 정말 많은거 같습니다.
RSI로 먹고사는데 실제로 어떻게 구하는지 몰랐다는게 참 아이러니네요
어쨋든 다른 블로그에서 읽으면서 어려웠던 점 위주로 최대한 쉽게 풀어보았습니다
도움이되셨나요? 댓글도 구독도 큰힘이됩니다.
그럼 20,000!