PYTHON/AUTO TRADE SYSTEM

[자동 매매 시스템 구축하기] 상하한가 데이터 계산하기 (1) - 계산 방법 이해하기

  • -

키움증권 Open API는 상하한가 데이터를 조회할 수 있는 트랜잭션으로 OPT10001 기능을 제공하고 있긴 하지만, 사실상 실시간 데이터를 수신하는 도중에 별도로 서버와의 통신을 시도해야 한다는 점을 고려하면 이 기능이 그렇게 달갑지 않게 다가올 수도 있다. 그렇다면 우리가 직접 상하한가를 계산하는 기능을 만들어주면 될 일이다.

그렇다면 우리는 상하한가 데이터가 언제 필요할까? 얼핏 생각해보면 굳이 필요할 것 같진 않다. 하지만 키움증권 Open API의 경우 정정 주문을 접수할 때, 시장가 주문과 지정가 주문 간에는 정정 주문이 접수되지 않는다는 점을 고려하면 반드시 필요한 기능이다. 결론부터 얘기하자면 시장가 주문을 접수했는데 체결되지 않고 지정가 주문으로 접수할 일은 없다. 다만 반대의 경우, 즉 지정가 주문을 접수했으나 체결되지 않아 시장가로 주문을 정정해야 하는 일은 얼마든지 발생한다. 가장 대표적인 경우가 매도 예정 가격에 지정가 매도 주문이 접수되어 있었는데, 그 상황에서 손절 가격을 이탈하게 될 경우에는 우리는 시장가로 손절매를 진행하고 싶지만 그건 불가능하다. 시장가 주문과 지정가 주문 간에는 정정 주문이 작동하지 않기 때문이다. 다시 말해, 매도 예정 가격에 지정가 주문이 접수되어 있던 주문 건에 대해 손절매를 진행하기 위해서는 하한가로 지정가 주문을 접수해야 한다는 것이다.  이 때에만 필요할까? 반대로 지정가 매수 주문을 접수해두었으나 해당 가격 부근까지만 하락한 후 정작 체결되지 않고 매수 예정가 대비 몇 % 이상 상승했다면, 그냥 추격 매수를 하고자 할 때에도 상한가 데이터가 필요하다. 왜냐하면 지정가 주문의 정정 주문은 지정가 주문끼리만 가능하기 때문이다.

 

 

상하한가 가격 계산의 로직

상하한가 데이터는 간단해보이지만, 호가가격단위 미만은 절사하는 부분 때문에 다소 복잡하게 느껴진다. 다시 말해, 주식 시장에는 호가가격단위라는 개념이 있고 이 개념은 코스피인가 코스닥인가에 따라 다르다.(ELW 등으로 넘어가면 또 다르다. 여기서는 논외로 하자.) 호가가격단위 개념을 정리해보면 아래와 같이 정리할 수 있다.

호가가격단위란 말 그대로 위의 표에 해당하는 특정 가격 범위에 속하게 되면, 그 오른쪽에 해당하는 단위에 해당하는 금액 미만은 절사를 한다는 것을 의미한다. 말로만 들으면 복잡하니, 예시 몇 개를 들어보도록 하자.

만약 전일 종가(이하 기준 가격)이 11,100원이고 코스닥에 상장되어 있는 경우에는 상하한가 범위를 계산할 때 가격제한폭을 갖게 되는데, 그 가격 제한폭은 기준 가격에 0.3을 곱한 값이다. 따라서 11,100 * 0.3을 하게 되면 3,330원이 나오게 되는데, 3,330원은 1,000원 이상~5,000원 미만의 범위에서 5원의 가격 단위를 갖게 되므로 3,330원은 별도로 절사를 해야 할 필요가 없는 것이다.

하지만 기준 가격이 7,910원인 경우에는 0.3을 곱하면 2,373원이 나오게 되는데, 이런 경우에는 호가가격단위 미만 절사로 인해 가격제한폭은 2,370원이 된다. 또한 기준 가격이 61,400원인 경우에도 0.3을 곱하면 18,420원이지만 호가가격단위 미만 절사를 하게 되면 18,400원이 가격제한폭이 되는 것이다. 마지막으로 기준 가격이 92,900원인 경우에도 0.3을 곱하면 27,870원이지만 호가가격단위 미만 절사를 적용하면 27,800원이 된다. 

그렇다면 이 호가가격단위 미만 절사를 적용하여 얻은 가격제한폭을 이용해서 상하한가 데이터를 얻게 되는데, 그 과정은 다소 단순하다. 첫 번째 예시로 다시 설명해보도록 하자. 기준 가격이 7,910원일 때 가격제한폭은 2,370원이 나왔었는데, 7,910원을 기준으로 2,370원을 더하면 상한가 가격(10,280원)이, 빼면 하한가 가격(5,540원)이 나온다. 다만 여기서 주의해야 하는 점은, 기준 가격에 가격제한폭을 더한 값과 뺀 값을 대상으로 호가가격단위 미만 절사를 또 다시 한 번 적용해야 한다는 것이다. 다시 말해, 더한 값인 상한가 가격(10,280원)의 호가가격단위는 50원이므로 상한가는 10,250원이 되며 뺀 값인 하한가 가격(5,540원)의 호가가격단위는 10원이므로 하한가는 그대로 5,540원이 된다. 아래의 네 가지 예시를 살펴보도록 하자.

 

이제 다음 게시글에서는 이번에 살펴본 상하한가 계산 로직을 기반으로 상하한가를 계산하는 함수를 구현해 볼 예정이다.

 

 


 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.