[code] Python으로 급등주,세력주 찾아내기
오늘은 급등주, 세력주를 찾아내는 방법을 Python을 통해서 알아보겠습니다.
글에 앞서, 세력주에 대한 정의 및 판단 근거는 와조스키님의 ‘나는 오르는 주식만 산다’ 책을 참고하여 정의하였습니다.
1. 주당 2만원 미만, 시가총액은 2천억원 이하.
2. 일봉 기준 거래량이 500%이상 급증.
3. 장기간의 매집기간을 가짐. (박스권 횡보)
우선 1번의 기준을 만족 시키기 위해서 상장 기업 중에 주 당 2만원 미만인 주식들만 가져올 필요가 있습니다. pandas의 read_html 함수를 이용해서 손쉽게 정보를 가져올 수 있습니다.
그 다음 2번 기준으로 일봉 기준으로 거래량이 500%이상 급증한 종목인 경우를 찾는 코드를 작성해보겠습니다.
사실 거래량 조건을 만족시키는 경우가 많기 때문에 여기서 해당일이 양봉으로 마무리되는 조건과 tradingview에서 주로 쓰이는 supertrend가 상승으로 판단하는 조건을 추가하였습니다.
위의 알고리즘에서 실제로 수익을 볼 수 있는지 테스트하기 위해서 profit을 계산하는 함수는 위와 같습니다. target_profit 이상으로 수익을 보았을때만 매도하고 반대로 target_profit 만큼 손실을 보았을때는 손절하는 식으로 간단하게 구성하였습니다.
위 그래프는 DSR (15566)의 2016–03–31 ~ 2017–03–09까지 그래프입니다. 3월 31일 거래량이 5배이상이며 장대 양봉을 그리면서 supertrend도 상승 트렌드였습니다. 물론 이때 매수를 했으면 거의 1년간 이득을 못봤겠지만 매수 타이밍을 잘 잡았을 경우엔 3개월에 200% 이상의 수익을 볼 수 있습니다.
위 그래프는 동부제철(016380) 의 2019–05–08 ~ 2021–03–22 그래프입니다. 위 그래프도 5월8일 기준 거래량 5배, 양봉을 그리면서 supertrend도 상승 드렌드 였지만 그 뒤로 큰 하락을 그리고 있습니다.
네이버에서 크롤링 되는 종목들 중에 주당 2만원 미만인 주식들을 모두 테스트해봣을때 결과는 다음과 같습니다.
total_profit, best_profit, worst_profit, win_ratio_per_stock, win_ratio 10450.65855 1986.534061218789 -16.481474453496816 0.27256637168141595 0.10362618497709862
전체 수익률은 약 10000배 수익, 종목별 최대 수익률은 1986배 수익, 최저 수익률은 -16배 수익, 종목 중에서 27프로의 종목들만 해당 알고리즘이 세력주를 맞추었고 전체적으로는 10프로의 차트만 세력주를 맞추었습니다 (최소 2배 이상의 수익)
전체적으로 테스트해 본 결과 현재 조건식으로는 약 10% 확률로만 세력주를 판단할수 있었습니다. 정확도를 올리기 위해서는 장기적인 트랜드, 이평선, 그리고 뉴스 정보까지 포함되어야 세력주를 제대로 파악할 수 있을 것 같습니다.
또한 세력주를 판단하는것을 시작으로 매수 타이밍, 매도 타이밍을 계산하는 내용을 이어서 작성하도록 하겠습니다.