이 게시글에서는 상/하한가 산출 방식을 알아보고 그 과정을 파이썬 코드로 옮겨서 정리해 보도록 하겠습니다.
상/하한가는 기준가에 단순히 1.3 또는 0.7을 곱한 가격과 차이가 있습니다. 보통 29.XX(%) 이런식으로 결정이 되어지는데 이는 호가 가격단위가 있기 때문입니다. KRX 규정집에 따르면 상한가와 하한가는 다음과 같이 계산되어 집니다.
상/하한가 산출방법
* 1차계산 : 기준가격에 가격제한폭(현재는 0.3)을 곱합니다.
* 2차계산 : 기준가격의 호가가격단위에 해당하는 가격 미만을 절사합니다.
* 3차계산 : 기준가격에 2차계산에 의한 수치를 가감하되, 해당가격의 호가가격단위 미만을 절사합니다.
산출예시 : 기준가격이 9,980원인 경우
* 1차계산 : 9,980원 X 0.3 = 2,994원
* 2차계산 : 2,990원 (9,980원의 호가가격단위인 10원미만 절사 : 1차절사)
* 3차계산
9,980원 + 2,990원 = 12,970원
호가가격단위 적용 : 12,970원의 호가가격단위인 50원미만 절사(2차절사)
∴ 상한가 = 12,970 → 12,950원 (호가 단위 50)
9,980원 - 2,990원 = 6,990원
∴ 하한가 = 6,990 그대로 (만원 이하이기 때문에 호가 단위가 10원임 → 2차 절사가 일어나지 않음)
이러한 계산 과정을 파이썬 코드를 통해 함수화 해보도록 하겠습니다. 먼저 가격제한폭은 현재 코스피/코스닥 모두 30%(=0.3) 이지만 과거에는 다른 값을 가졌습니다. 기준이 되는 날짜와 시장 구분(코스피 또는 코스닥)에 따라 다음과 같이 함수화 할 수 있습니다.
그 다음은 호가 가격단위를 계산해 주는 함수를 만들어 줍니다. 호가 가격단위는 기준가격과 시장 구분에 따라 다음과 같이 함수화 할 수 있습니다.
위의 함수들을 활용하여 상한가와 하한가를 반환해주는 함수를 만들어 보면 다음과 같습니다.
예시의 데이터로 확인을 해보도록 하겠습니다.
실행 결과는 다음과 같습니다.
상한가 : 12950
하한가 : 6990
날짜를 바꿔서(가격제한폭이 30%가 되기 이전) 실행하여 보도록 하겠습니다.
실행 결과는 다음과 같습니다.
상한가 : 11450
하한가 : 8480
다음과 같이 기준가에 대한 데이터를 pandas.Series 형태로 가지고 있다면 이에 대한 상/하한가는 다음 코드로 쉽게 계산 할 수 있습니다.
Series 형태로 가지고 있는 기준가 데이터, datetime 형식의 인덱스를 가지고 있습니다.
실행 결과는 다음과 같습니다. 상/하한가가 일자별로 튜플(tuple) 형태로 들어가 있음을 확인 할 수 있습니다.
이번 글에서는 상/하한가의 산출방식과 그 과정을 파이썬 코드로 구현하는 방법에 대해 알아보았습니다. 앞으로 이 상/하한가 계산 방식을 과거 데이터에 적용하여 종목의 분포나 상/하한가 종목의 통계적 특성 등을 알아보려 합니다.
질문이나 더 궁금한 점은 댓글로 올려주시면 저에게도 큰 도움이 될 것 같습니다! 다음 포스팅도 기대해주시길 바랍니다.
더 유익한 정보를 얻고 싶으시다면 페이스북 알파스퀘어 페이지를 방문해주세요!
차세대 주식투자 플랫폼, 알파스퀘어에서 스마트한 주식투자를 경험해보세요!