기업 가치 분석/금융데이터 분석과 자동화(파이썬)

[pandas] RSI 기법 부수기 ( with python )

보보트레인 2023. 11. 13. 22:49

사용툴 및 세팅은 이전글 참고

[Pandas] 이동평균선 매매기법 뿌수기(with python) (tistory.com)

1. 코드

def SMA(data,period = 30, column = 'Close') :
    return data[column].rolling(window = period).mean()

def RSI(data, period = 14, column = 'Close') :
    delta = data[column].diff(1)
    delta = delta.dropna()

    up = delta.copy()
    down = delta.copy()
    up[up <0] =0
    down[down>0] = 0
    data['up'] = up
    data['down'] = down

    AVG_Gain = SMA(data, period, column = 'up')
    AVG_Loss = abs(SMA(data,period,column = 'down'))
    RS = AVG_Gain / AVG_Loss

    RSI = 100.0 - (100.0 / (1.0+RS))
    data['RSI'] = RSI

    return data

df = RSI(df, period = 14)

column_list = ['RSI']
df[column_list].plot(figsize = (18,8))
plt.title('RSI',position = (0.5,1.05),fontsize = 23)
plt.xlabel('Date', fontsize = 17)
plt.ylabel('RSI Values (0 - 100)', fontsize = 17)
plt.axhline(30, ls = '--', c='y', alpha = 0.9)
plt.grid(b=True, color='DarkTurquoise', alpha=0.3, linestyle=':', linewidth=2)
plt.legend( loc='upper left', fontsize = 13)
plt.axhline(70, ls = '--', c='y', alpha = 0.9);

 

 RSI = 100.0 - (100.0 / (1.0+RS))
    data['RSI'] = RSI
해당부분이 RSI공식을 도입한 설명부분이다.

RSI공식을 적용하여 3070을 기준으로 체크를 하는 그래프를 만들었다.

( 30 과매도구간 매입 70 과매수구간 매도 )

2. 결과

이전 글에서 구해둔 종가기준 주가추이 그래프를 비교분석하여 다음과 같이

매수/매도 사인을 그래프상으로 출력할 수 있음.

 

대상기업 : HES / MPC / EOG

HES RSI 매수 매도 사인 그래프

<HES>


1차매수 매도 수익률 -14%
2차매수 매도 수익률 -41%
3차매수 매도 수익률 2%

 

MPC RSI 매수 매도 사인 분석 그래프

< MPC >
1차 매수매도 수익률 : -0.83333
2차매수 매도 수익률 : -58%
3차매수 매도 수익률 : 7%

EOG RSI 매수 매도 사인 분석

< EOG >
1차 매수매도 수익률 : -51%
2차매수 매도 수익률 : -2%

반응형