시스템매매-좀비전략매매법

시스템매매 - 백테스팅 편 (3탄 : 기술지표 수식만들기)

born-again-mraz 2024. 5. 26. 12:18
반응형
Main Contents
1. 주요 5대 기술지표 - 이동평균선, RSI, MACD, Bollinger Band, Stochastic Oscillator 
2. 구글스프레드시트 활용 - 주요 기술지표 수식

 이번시간에는 시스템매매 전략 구축을 위해 활용될 수 있는 주요 기술지표에 대해 알아보고, 이를 구글스프레드시트에 수식을 통해 구현하는 방법을 공유해 드리려고 합니다. 제 경우엔 매수 매도기법을 활용한 좀비전략매매를 선호합니다만, 1차 시스템 매매전략 시 이러한 기술지표를 활용하여 접근하는 방법도 좋은 전략이라고 생각합니다. 

1. 주요 5대 기술지표

많은 투자자들이 본인들의 기술지표활용하여 투자를 진행하고 있고, 기술지표의 성격과 종류는 매우 다양합니다. 이 중 가장 많이 선호하는 주요 5대 기술지표를 먼저 소개해 드리겠습니다. 

  • 이동 평균 (Moving Average, MA)
    : 이동 평균은 주가의 변동성을 줄여주고 주가의 추세를 파악하는 데 사용됩니다. 일반적으로 단기 이동 평균(5일)과 장기 이동 평균(60일)을 많이 사용합니다.

  • 상대 강도 지수 (Relative Strength Index, RSI)
    : RSI는 주가의 과매수나 과매도 상태를 판단하는 데 사용됩니다. 0에서 100 사이의 값을 가지며, 일반적으로 70 이상은 과매수, 30 이하은 과매도로 간주됩니다.

  • 이동 평균 수렴·발산 지수 (Moving Average Convergence Divergence, MACD)
    : MACD는 두 개의 이동 평균 간의 차이를 활용하여 주가의 추세와 변화 속도를 파악하는 데 사용됩니다. 일반적으로 12일과 26일 지수 이동 평균(EMA) 간의 차이를 계산하고, 신호선을 통해 매수와 매도 신호를 파악합니다.

  • 볼린저 밴드 (Bollinger Bands)
    : 볼린저 밴드는 주가의 변동성을 나타내는 지표로, 주가가 이동 평균을 중심으로 상위와 하위 밴드 사이에서 움직이는 경향이 있습니다. 밴드의 폭은 변동성에 따라 달라지며, 주가가 밴드의 상한선에 가까워지면 과매수, 하한선에 가까워지면 과매도로 판단할 수 있습니다.

  • 스토캐스틱 오실레이터 (Stochastic Oscillator)
    : 이 지표는 주가의 종가와 일정 기간 동안의 가격 범위를 비교하여 현재의 가격 위치를 백분율로 나타냅니다. 0에서 100 사이의 값을 가지며, 일반적으로 80 이상은 과매수, 20 이하는 과매도로 간주됩니다.

2. 구글스프레드시트 활용

 자, 이제부터 위에 소개시켜드린 주요 기술지표를 구글스프레드시트에서 수식을 통해 구하는 방법을 알려드리겠습니다.

종목은 TQQQ주가를 이용해서 해 보도록 하겠습니다.

해당 관련된 내용은 아래 포스팅을 참고하시길 바랍니다.

 

 

시스템매매 - 백테스팅 편 (2탄 : 구글스프레드시트 활용편)

Main Contents.1. 나만의 백테스팅 툴 구축하기 - 구글스프레드시트 활용  1) 구글 스프레드시트 장점  2) 구글 스프레드시트 접속방법2. 백테스팅을 위한 데이터 수집   1) 구글스프레드시트 : 구글

born-again-mraz.tistory.com

 

먼저 구글스프레드시트를 열어줍니다.
그리고, 기술지표들은 대부분 주가데이터를 이용하여 산출하기 때문에 ,
B3셀을 클릭하여 2024.1.1부터 최근 거래일까지의 주가데이터를 전부 불러옵니다. 

=GOOGLEFINANCE("TQQQ", "all", date(2024,1,1), today())

구글스프레드시트에서 TQQQ주가 정보 불러오기

 

이동 평균 (Moving Average, MA) 구하기

이동평균은 원하는 기간동안의 주가의 평균이기 때문에 아래와 같은 수식으로 구합니다.

=AVERAGE(F4:B8)

여기서 F4:F8은 종가 데이터 범위(최근 5일)를 의미합니다. 다른 기간으로 이동 평균을 계산하려면 범위를 조정하면 됩니다. 아래 표는 MA5, MA10, MA20에 해당하는 데이터를 위에 수식의 범위를 조절하여 계산한 결과입니다.

 

상대 강도 지수 (Relative Strength Index, RSI) 구하기
=100 - (100 / (1 + (AVERAGEIF(C2:C15, ">0") / ABS(AVERAGEIF(C2:C15, "<0")))))

K열은 '변화율'(Change) 열입니다. K5에 해당하는 수식은 '=K5-K4'입니다. RSI는 일정 기간 동안 주가가 전일 가격에 비해 상승한 변화량과 하락한 변화량의 평균값을 구하여 계산되기 때문에 이렇게 나타내면 됩니다.
K2:C15 범위는 14일간의 변화율을 의미하며, 이 기간은 투자 성향에 따라 변경하시면 됩니다.

RSI 수식 내 변화율

반응형
이동 평균 수렴·발산 지수 (Moving Average Convergence Divergence, MACD) 구하기
=AVERAGE(B2:B13) - AVERAGE(B2:B27)

 MACD는 일반적으로 12일과 26일 지수이동평균(EMA) 간의 차이를 계산하기 때문에 저도 같은 기간을 이용해서 수식을 구해보겠습니다. 
 하지만,  구글 스프레드시트는 기본적으로 EMA 수식을 제공하지 않기떄문에, 아래와 같은 방식을 사용하여 12일간의 EMA(Exponential Moving Average)와 26일간의 EMA를 계산하는 수식을 작성하는 방법을 설명하겠습니다. 

  1) 12일간의 EMA 구하기.

   EMA=(금일 종가×k)+(전일EMA×(1−k)

여기서,
 k=2/(n+1)이며, n은 EMA 기간입니다.

따라서, 12일 EMA의 경우 k=2/(12+1) = 2/13입니다.

 2) 26일간의 EMA 구하기.

   위와 같은 방법으로 k = 2/(n+1) = 2/(26+1) = 2/27입니다.

 3) 9일간의 EMA 구하기. (= Singnal 9)

9일간의 EMA는 MACD에서 시그널 9일에 해당하는 수치입니다.
같은 방법으로 구하면, k = 2/(n+1) = 2/(9+1) = 2/10입니다.

4) 구글 스프레드시트에서 EMA 구하기.

  • 종가는 F열의 Close입니다.
  • 먼저 초기 EMA를 아래의 수식을 통해 구합니다.
=AVERAGE(F18:F29)

이 수식은 12일간의 F18에서 F29까지의 종가 평균을 구합니다. 이 값이 초기 12일 EMA로 사용됩니다.
그리고 해당 수식은 M29 셀에 적용했습니다. (12 MA)

=AVERAGE(F4:F29)

이 수식은 26일간의 F4에서 F29까지의 종가 평균을 구합니다. 이 값이 초기 26일 EMA로 사용됩니다.
그리고 해당 수식은 N29 셀에 적용했습니다. (26 MA)

=AVERAGE(F21:F29)

이 수식은 9일간의 F21에서 F29까지의 종가 평균을 구합니다. 이 값이 초기 9일 EMA로 사용됩니다.
그리고 해당 수식은 O29 셀에 적용했습니다. (9 MA)

  • 이번엔 12, 26, 9 EMA를 P30, Q30, R30 셀에 계산합니다.
P30 : =($F30 * (2 / (12 + 1))) + (M29 * (1 - (2 / (12 + 1))))
Q30 : =($F30 * (2 / (26 + 1))) + (N29 * (1 - (2 / (26 + 1))))
R30 : =($F30 * (2 / (9 + 1))) + (O29 * (1 - (2 / (9 + 1))))

그리고 밑으로 드래그를 합니다.

 

 5) MACD 구하기.
    " MACD = 12일 EMA - 26일 EMA "

=P30-Q30

 

 볼린저 밴드 (Bollinger Bands)
  • 중심선 (Middle Band)
=AVERAGE(F4:F23)

  F4:F23은 20일간의 종가 데이터입니다.

  • 상한선 (Upper Band)
=AVERAGE(F4:F23) + 2*STDEVP(F4:F23)

여기서도  F4:F23은 20일간의 종가 데이터입니다.

  • 하한선 (Lower Band)
=AVERAGE(F4:F23) - 2*STDEVP(F4:F23)

역시 F4:F23은 20일간의 종가 데이터입니다. 

스토캐스틱 오실레이터 (Stochastic Oscillator)

  • %K 라인 = [(현재종가 - N일중 최저가) / (N일중 최고가 - N일중 최저가)] X 100
=IF(COUNT(F4:F17) < 14, NA(), (F17 - MIN(E4:E17)) / (MAX(D4:D17) - MIN(E4:E17)) * 100)

이 수식은 다음을 의미합니다:

   1) F17 : 현재 종가
   2) MIN( E4:E17 ): 최근 14일간의 최저가
   3) MAX( D4:D17 ): 최근 14일간의 최고가

W17 셀을 선택하고 아래로 드래그하여 이 수식을 아래 행으로 복사합니다.

 

  • %D 라인 = 지난 3일간의 %K 평균
=AVERAGE(W17:W19)

W열은 %K 값을 저장하는 열입니다. W17:19는 최근 3일간의 %K 값을 의미합니다.

X열에 %K값을 구하고 드래그하여 이 수식을 아래 행으로 복사합니다.


지금까지 가장 많이 사용하는 기술 지표에 대하여 구글스프레드 시트에서 구하는 수식을 알려드렸습니다.

본인이 자주 사용하는 수식을 이렇게 구글스프레드시트에 반영하여,
'어떤 지표'를 사용하고 그 '지표에 적합한 상수'가 무엇인지 백테스팅을 통해 결과를 구하며 지속적으로 최적화시키는 것이 중요합니다. 

그럼, 다음시간에는 본격적으로 이러한 수식을 구현하여 매매전략을 실행할 때 적합한 평가지표와 이 지표를 구하는 방법에 대해서 설명드리도록 하겠습니다.

 

반응형