본문 바로가기
파이썬 주식 자동매매 봇 만들기 프로젝트

[파이썬 주식 자동매매 봇 만들기 #1] 프롤로그: 일과 시간엔 폰을 못 보니까, 코드가 돈을 벌게 하자 (feat. KIS API)

by triz-hong 2026. 5. 28.

[파이썬 주식 자동매매 봇 만들기 #1] 프롤로그: 일과 시간엔 폰을 못 보니까, 코드가 돈을 벌게 하자 (feat. KIS API)

주식을 시작한 지 얼마 되지 않았을 무렵, 가장 큰 스트레스는 '타이밍'이었습니다. 현재 군 복무를 하고 있다 보니, 주식 시장이 가장 활발하게 움직이는 오전 9시부터 오후 3시 30분까지의 일과 시간에는 스마트폰을 마음대로 꺼내서 호가창을 들여다볼 수가 없었죠.

화장실에 잠깐 숨어서 MTS(모바일 트레이딩 시스템)를 켰을 때는 이미 사려고 했던 종목이 저 멀리 날아가 버렸거나, 팔아야 할 타이밍을 놓쳐 파란불이 켜진 계좌를 보며 씁쓸함을 삼켜야 했습니다. '내가 폰을 못 보는 동안, 누군가 혹은 무언가가 내가 정해둔 규칙대로 대신 매매해 줄 수는 없을까?'라는 생각은 아주 자연스럽게 파이썬(Python)을 이용한 주식 자동매매 봇 개발로 이어졌습니다.

1. 수많은 증권사 중 왜 하필 한국투자증권(KIS) API인가?

자동매매를 결심하고 가장 먼저 한 일은 증권사 API를 고르는 것이었습니다. 보통 주식 자동매매라고 하면 '키움증권 OpenAPI'를 가장 먼저 떠올립니다. 레퍼런스도 압도적으로 많죠. 하지만 며칠 동안 구글링을 하며 치명적인 단점들을 발견했습니다.

  • 윈도우(Windows) 운영체제 강제: 키움 API는 OCX(ActiveX의 일종) 방식을 사용하기 때문에 오직 32비트 윈도우 환경에서만 돌아갑니다.
  • 확장성의 한계: 훗날 이 봇을 고도화해서 Docker 컨테이너에 올리거나, FastAPI를 붙여 웹 대시보드를 띄우고, 리눅스(Linux) 서버에서 24시간 무인으로 굴리려는 제 원대한(?) 계획에는 전혀 맞지 않았습니다.

그래서 선택한 것이 바로 한국투자증권(KIS) Open API입니다. KIS API는 최신 트렌드에 맞게 REST API 방식을 지원합니다. 즉, 윈도우든 맥(Mac)이든 리눅스든 상관없이 웹 요청(HTTP Request)만 보낼 수 있으면 어디서든 매매를 할 수 있다는 뜻입니다. 저처럼 백엔드 개발과 인프라(Docker 등)에 관심이 많은 사람에게는 키움증권보다 한국투자증권이 훨씬 매력적인 선택지였습니다.

2. 가시밭길의 시작: 개발자 센터와 모의투자 신청

포부는 컸으나, 첫 단계부터 순탄치 않았습니다. API를 사용하려면 한국투자증권 KIS Developers(개발자 센터)에 가입하고 권한을 얻어야 합니다. 내 피 같은 진짜 돈을 태우기 전에 완벽하게 로직을 검증해야 하니 모의투자 계좌 개설은 필수였습니다.

"아니, 모의투자 신청 버튼이 대체 어디 있는 거야?"

개발자 센터 공식 문서는 생각보다 방대하고 복잡했습니다. HTS를 설치하고, 모의투자를 신청하고, 다시 개발자 센터로 돌아와서 API 서비스 신청을 하는 일련의 과정 UI/UX가 직관적이지 않아서 한참을 헤맸습니다. 팁을 드리자면, 반드시 본인 명의의 휴대폰 인증이 가능한 상태에서 여유를 가지고 세팅하시길 바랍니다. 어찌저찌 한국투자증권 홈페이지에서 모의투자 계좌를 개설한 후, 다시 KIS Developers 포털로 돌아와 'App Key' 발급 신청을 완료했습니다.

3. App Key와 App Secret, 그리고 환경변수(.env) 세팅

API 신청을 완료하면 App KeyApp Secret이라는 두 가지 긴 문자열을 발급해 줍니다. 이 두 개는 제 계좌에 접근하고 주식을 사고팔 수 있는 '마스터키'와 같습니다. 절대 깃허브(GitHub)나 공개된 블로그에 하드코딩해서 올리면 안 됩니다. (실제로 실수로 깃허브에 키를 올렸다가 누군가 악용해서 깡통 계좌가 되었다는 괴담을 개발자 커뮤니티에서 본 적이 있습니다.)

안전한 코딩을 위해 본격적인 API 연동에 앞서 파이썬 가상환경(venv)을 세팅하고 환경변수 관리를 위한 라이브러리를 설치했습니다. 터미널을 열고 아래와 같이 고군분투의 첫 삽을 떴습니다.


# 가상환경 생성 및 활성화 (Mac/Linux 기준)
python3 -m venv venv
source venv/bin/activate

# 필수 라이브러리 설치
# requests: API 서버와 통신하기 위함
# python-dotenv: API Key를 안전하게 환경변수로 관리하기 위함
pip install requests python-dotenv

그리고 프로젝트 최상단 디렉토리에 .env 파일을 만들고, 방금 발급받은 피 같은(?) 키 값들을 고이 모셔두었습니다.


# .env 파일 내부 (실제 키 값은 노출 금지!)
KIS_APP_KEY="여기에_발급받은_App_Key_입력"
KIS_APP_SECRET="여기에_발급받은_App_Secret_입력"
KIS_MOCK_ACCOUNT="본인의_모의투자_계좌번호"

여기까지 오는데만 꼬박 반나절이 걸렸습니다. 개발 환경 세팅이 전체 프로젝트의 절반이라는 말이 새삼 와닿는 순간이었습니다.

4. 다음 편 예고: 400 Bad Request와의 혈투

기본 세팅을 마쳤으니, 이제 파이썬 파일(앞으로 kis_client.py라고 부를 예정입니다)을 만들어서 한국투자증권 서버에 '접근 토큰(Access Token)'을 요청해야 합니다. App Key가 신분증이라면, Access Token은 매번 출입할 때마다 발급받아야 하는 임시 출입증 같은 개념입니다.

"공식 문서에 적힌 대로 HTTP POST 요청만 보내면 토큰이 짠 하고 나오겠지?"라고 안일하게 생각했던 저는, 다음 날 터미널 창을 가득 채운 '400 Bad Request' 에러의 늪에 빠지게 됩니다.

과연 저는 무사히 토큰을 발급받고 삼성전자 주식의 현재가를 파이썬 콘솔 창에 띄울 수 있을까요? 본격적인 코드 작성과 끝없는 트러블슈팅이 난무하는 2편에서 삽질 기록을 이어가겠습니다.