#주식/투자

기술적지표 파헤치기 #7: PSAR

SUNGWOO BAE
PRO

2023-02-02 · 10 MIN READ

Parabolic SAR의 수식, 엑셀과 트레이딩뷰로 구현해보기

*2021-11-02 글


PSARParabolic Stop And Reverse의 약자로, Wilder에 의해 개발되었습니다.

Wilder 아저씨, RSI 게시물에서 뵌 적 있었죠?


PSAR은 추세추종의 정석적인 지표로, 하나의 점선으로 추세를 따라 오르거나 내려가는 지표입니다.


사진 자료와 같이 점선을 갱신하면 추세의 전환으로 정의하는 지표입니다.

그러나 이렇게 추세를 잘따라가는 지표도, 지표만으로 거래했을 때 생기는 문제점은 존재합니다.



바로 기준 이상의 변동성을 유지하는 횡보 국면에서 취약한 모습을 보이곤하는데,

추세가 전환되기 전까지 어떠한 행동도 취할 수 없기 때문입니다.


PSAR은 어떠한 원리로 다음과 같은 모습을 나타내는 것일까요?

수식은 다음과 같습니다.


PSAR = 전일 PSAR + AF * (EP - 전일 PASR)


여기서 AF(Acceleration Factor)은 가속 변수로, 주가의 등락폭에 따라 점선을 크게 움직이게 만드는 역할을 합니다.


그리고 EP(Extreme Price)는 중요 가격을 의미합니다. 상승추세 도중 신고점 혹은 하락추세 도중 신저점을 의미합니다.


Backtest


카카오를 대상으로, 2000년 3월부터 2021년 10월까지 PSAR를 사용한 "Long Only" 백테스팅 결과입니다.

모든 백테스트는 리스크 관리를 따로 하지 않았으며, 조건에 따라 자산의 100%를 전부 운용했을 때의 결과입니다.

PSAR 설정 값은 AF=0.02, Maximum AF=0.2입니다.


1.

매수 조건: 고가가 PSAR를 상향 돌파하였을 때

매도 조건: 저가가 PSAR을 하향 돌파하였을 때

Sharpe Ratio = 0.098

Sortino Ratio = 0.199


기본적인 조건식입니다. 카카오가 이전에 긴 추세를 유지한 적이 적어 수익곡선이 오랜기간동안 크게 증가되지 않는 모습을 보입니다.


2.

매수 조건: 고가가 PSAR를 상향 돌파하고 표준편차의 7일 평균이 14일 평균보다 높을 때

매도 조건: 저가가 PSAR을 하향 돌파하였을 때



Sharpe Ratio = 0.099

Sortino Ratio = 0.246


PSAR은 주가가 추세를 이루지 않고 횡보를 반복할 때 취약한 점을 감안하여,

최근의 표준편차가 더 장기간의 표준편차보다 높을 때 진입이라는 조건을 덧붙였습니다.

표준편차, 즉 변동성이 늘었다는 것은 보합 국면이 아닐 가능성이 더 높다는 뜻이기 때문입니다.


결과 또한 매우 좋아졌습니다. 불필요한 거래 횟수가 감소하였고, MDD또한 크게 감소하는 모습을 보입니다.



3.

매수 조건: 고가가 PSAR보다 높고 표준편차의 7일 평균이 14일 평균보다 높을 때

매도 조건: 저가가 PSAR을 하향 돌파하였을 때




Sharpe Ratio = 0.079

Sortino Ratio = 0.154


표준편차가 늦게 높아지는 경우또한 존재해, PSAR이 돌파된 이후 표준편차가 늘어나도 진입할 수 있게 수정하였습니다.

그러나 그 결과는 오히려 악화되었습니다. 상승이 시작되고 일정 기간 후에 늘어나, 이미 아래 쪽에 위치한 PSAR과의 거리가 멀어져 손익비가 안좋아졌기 때문입니다.


4.

매수 조건: 고가가 PSAR를 상향 돌파하고 금일 거래량이 14일 평균보다 높을 때

매도 조건: 저가가 PSAR을 하향 돌파하였을 때


Sharpe Ratio = 0.087

Sortino Ratio = 0.184


거래량과는 어떠한 상관관계가 있었을까요?

호가창에 쌓인 주문들이 가벼워져 더 쉬운 상승을 해낼 수 있었을까요?

나쁘지는 않은 결과이나, 호가창이 가벼워진 만큼 MDD도 늘어난 모습이 확인됩니다.


결론적으로 PSAR을 사용할 때는, 표준편차가 함께 증가하는 것을 짚고 넘어가는 것이 포인트인 듯 합니다.



Excel


1. 첫번째 행


첫번째 행은 간단합니다.


PSAR의 첫 값 = 저가

EP의 첫 값 = 고가

EP - PSAR = EP - PSAR

이후 PSAR에 영향을 주는 셀입니다.


AF = 임의 값 (0.02)

(EP - PSAR) * AF = (EP - PSAR) * AF

이후 PSAR에 영향을 주는 셀입니다.


추세 = 0 또는 1의 임의 값 (1)

상승추세를 1, 하락추세를 0으로 정의하겠습니다.


AF MAX = 임의 값 (0.2)

AF가 무한히 증가하지 않도록 상한값을 지정하는 셀입니다.


2. 두번째 행 EP

두번째 행부터 조금 번거로움이 있습니다.


EP =

상승 추세이고 고가 > 전일 EP일 때 고가

상승추세이고 고가 <= 전일 EP일 때 전일 EP

하락추세이고 저가 < 전일 EP일 때 저가

하락추세이고 저가 >= 전일 EP일 때 전일 EP


=IF(AND(J3=1,B3>F2),B3,IF(AND(J3=1,B3<=F2),F2,IF(AND(J3=0,C3<F2),C3,IF(AND(J3=0,C3>=F2),F2,""))))



3. 두번째 행 AF

AF =

상승추세이고 금일 EP > 전일 EP일 때 전일 AF + 설정 AF

상승추세이고 금일 EP <= 전일 EP일 때 전일 AF

하락추세이고 금일 EP < 전일 EP일 때 전일 AF + 설정 AF

하락추세이고 금일 EP >= 전일 EP일 때 전일 AF

추세가 유지되고 있으며 전일 AF = 최대 AF일 때 AF MAX

해당 사항 없을 시 설정 AF


=IF(J3=J2,IF(H2=$N$1,$N$1,IF(AND(J3=1,F3>F2),H2+$H2,IF(AND(J3=1,F3<=F2),H2,IF(AND(J3=0,F3<F2),H2+$H2,IF(AND(J3=0,F3>=F2),H2,""))))),$H$2)


설정 AF을 사용하기 위해서는 "$"가 들어가야 합니다. 이 부분 유의 부탁드리겠습니다.



4. 두번째 행 PSAR

PSAR =

상승추세일 때 전일 EP + 전일 (EP - PSAR) * AF > 금일 저가일 때 전일 EP

하락추세일 때 전일 EP + 전일 (EP - PSAR) * AF < 금일 고가일 때 전일 EP

해당 사항 없을 시 전일 EP + 전일 (EP - PSAR) * AF


=IF(AND(J2=1,E2+I2>C3),F2,IF(AND(J2=0,E2+I2<B3),F2,E2+I2))



5. 두번째 행 추세

끝이 보입니다.


추세 =

금일 PSAR < 금일 고가 일 때 상승추세 (1)

금일 PSAR > 금일 저가 일 때 하락추세 (0)


=IF(E3<B3,1,IF(E3>C3,0,""))



TradingView


정말 다행입니다. Trading View에는 "sar"이라는 편리한 함수가 존재합니다.

이에 따라 설정 값만 유의해 주시면 됩니다.


만약 그동안 TradingView를 사용하지 않으셨었다면, 이번이 입문하실 계기가 되실지도 모르겠습니다.


//@version=4

study("psar", overlay=true)


startAF = input(type=input.float, step=0.001, defval=0.02)

AF = input(type=input.float, step=0.001, defval=0.02)

maxAF = input(type=input.float, step=0.01, defval=0.2)


psar = sar(startAF, AF, maxAF)


plot(psar, title="psar", style=plot.style_circles, color=psar<close?color.green:color.red, linewidth=2, transp=0)