본문 바로가기
Python

[Python] finterstellar를 사용하여 Stochastic으로 주식 매매 시그널 만들기

by llHoYall 2021. 12. 14.

2021.12.09 - [Python] - [Python] finterstellar를 사용하여 RSI로 주식 매매 시그널 만들기

먼저 finterstellar가 처음이라면 이전 글을 보고 와주세요.

Stochastic

Stochastic은 최근 N일간 주가 범위 중 현재 주가가 얼마나 높이 있는지를 나타내는 지표입니다.

트레이딩에 이용하기 쉽도록 이 값들로 이동평균값을 구합니다. 이것을 Slow K라고 합니다.

Slow K를 이용하여 다시 이동평균값을 구하여 Slow D를 만듭니다.

기본 적으로 14일 간의 주가를 사용하여 stochastic을 구하며, 각각의 이동평균값을 구하기 위한 기간은 3을 사용합니다.

 

평균회귀 전략으로 사용할 경우, 보통 Slow K 20보다 낮을 때 매수를 하여 80보다 높을 때 매도를 하게됩니다.

모멘텀 전략으로 사용할 경우, Slow KSlow D의 차이를 계산하여 양수면 매수, 음수면 매도하는 방식으로 투자를 합니다.

백테스팅

finterstellarstochastic 지표도 함수로 제공을 합니다.

stochastic(데이터, 종목 코드, stochastic 기간, slow K 기간, slowD 기간)

stochastic을 계산할 때는 종가 뿐만이 아니라 최고가와 최저가도 필요하기 때문에, 데이터를 얻는 함수도 바뀌어야 합니다.

get_ohlc(종목코드, 시작일, 종료일)

이제 지금까지 했던 대로 코드로 살펴 보겠습니다.

요번엔 넷플릭스로 진행해봤습니다. 조금 재미도 봤지만 무리해서 추매하다 결국 물려버린... ㅠ

df = fs.get_ohlc('NFLX', start_date='2021-01-01', end_date='2021-11-30')
fs.stochastic(df, symbol, n=14, m=3, t=3)
fs.draw_chart(df, left=symbol, right='slow_k')

 

다음은 매매 시그널을 만들어볼 차례입니다.

먼저, 평균회귀 전략을 사용해 보겠습니다.

fs.indicator_to_signal(df, factor='slow_k', buy=20, sell=80)
fs.position(df)
fs.evaluate(df, cost=.0025)
fs.draw_trade_results(df)

배운대로 Slow K를 사용하여 20보다 낮아질 때 매수를 하고, 80보다 높아질 때 매도를 했습니다.

꽤 괜찮아 보이네요. ^^

다음으로 모멘텀 전략을 써봐야겠죠?

df['indicator'] = df['slow_k'] - df['slow_d']
fs.indicator_to_signal(df, factor='indicator', buy=0, sell=0)
fs.position(df)
fs.evaluate(df, cost=.0025)
fs.draw_trade_results(df)

역시 배운대로 Slow K와 Slow D의 차를 이용하여 새로운 지표를 만들어 이를 매매에 활용하도록 하였습니다.

올해의 넷플릭스 주가에는 평균회귀 전략이 더 잘 맞았네요.

모멘텀의 경우 매매 회수도 잦아서 수수료도 엄청 나갔을 것 같아요. ㅎㅎㅎ

투자 성과분석

평균회귀 전략 모멘텀 전략

평균회귀 전략의 경우 나쁘진 않지만 그냥 들고만 있었던 것만 못한 성과를 보이고, 모멘텀 전략의 경우 처참합니다.

맺음말

Stochastic 전략의 경우도 평균회귀 전략과 모멘텀 전략 모두에 사용 가능하지만, 위의 예에서 본 것과 마찬가지로 가치투자를 한 것만 못한 결과를 보이기도 합니다.

따라서, 실제 매매를 할 때는 여러 지표를 합성하여 자신만의 매매 방법을 만들어보시길 바랍니다.

댓글