본문 바로가기

퀀트(Quant)투자

파이썬 주식 자동매매 코드 2026 완성본

 

직장에 출근하는 동안 파이썬 코드가 알아서 주식을 사고파는 시스템, 상상만 해도 매력적이지 않으신가요? 실제로 2026년 현재 국내 개인 투자자들의 증권사 Open API 신청 건수가 전년 대비 30% 이상 급증하면서, '코딩하는 투자자'는 더 이상 소수의 이야기가 아닙니다. 특히 한국투자증권 KIS Developers API가 ChatGPT·Claude 같은 AI와의 연동 샘플 코드를 공식 GitHub에 공개하면서 진입 장벽이 크게 낮아졌습니다.

 

하지만 막상 파이썬 자동매매를 시작하려 하면 어디서부터 손을 대야 할지 막막하신 분들이 많습니다. 이 글에서는 파이썬 3.8 이상 설치부터 증권사 API 연동, 매매 전략 코드 구현, 백테스트까지 2026년 현재 실제로 작동하는 완성본 흐름을 단계별로 공개합니다. 끝까지 읽으시면 오늘 당장 첫 번째 자동매매 코드를 돌려볼 수 있습니다.

 

📝 이 글에서 다룰 내용

  1. 파이썬 자동매매 환경 구축 — 설치부터 API 신청까지
  2. 한국투자증권 KIS API 연동 핵심 코드 완성본
  3. 증권사 API별 비교 — 키움 vs 한국투자증권 vs LS증권
  4. 파이썬 자동매매 실전 주의사항 5가지 & 추천 학습 로드맵

 

파이썬 자동매매 환경 구축 — 설치부터 API 신청까지

파이썬 프로그래밍 주식 트레이딩 관련 이미지

📊 파이썬 자동매매를 시작하기 위한 기본 환경은 생각보다 간단합니다. 준비물은 단 세 가지, 파이썬(Python 3.8 이상), 증권사 Open API 계정, 그리고 코드 에디터(VS Code 권장)입니다. 가장 먼저 python.org에서 최신 버전을 설치하고, pip install requests pandas pytz 명령어로 핵심 라이브러리 세 개를 설치하면 기본 준비는 끝납니다.

 

다음으로 증권사 API를 신청해야 합니다. 2026년 기준 개인 투자자에게 가장 인기 있는 선택지는 한국투자증권 KIS Developers API입니다. 한국투자증권 홈페이지 상단 메뉴 [트레이딩] → [Open API] → [KIS Developers]에서 신청하면 무료로 App Key와 App Secret을 발급받을 수 있습니다. 신청 후 당일 또는 다음 날 바로 사용 가능하며, 모의투자 환경도 별도로 제공되어 실제 돈 없이 코드를 테스트할 수 있다는 점이 가장 큰 장점입니다.

 

💰 환경 구축에서 많은 분들이 실수하는 부분이 있습니다. 바로 가상환경(Virtual Environment) 설정을 빠뜨리는 것입니다. python -m venv auto_trade_env 명령어로 프로젝트 전용 가상환경을 먼저 만들고, 라이브러리를 설치해야 나중에 버전 충돌 문제가 생기지 않습니다. 처음에 이 과정을 건너뛰었다가 몇 달 후 라이브러리 버전 충돌로 코드 전체를 다시 짜게 되는 분들을 많이 봤기 때문에, 처음부터 가상환경 설정을 꼭 하시길 강력히 권장합니다.

 

한국투자증권 KIS API 연동 핵심 코드 완성본

API 프로그래밍 개발 코드 관련 이미지

📝 환경이 준비됐다면 이제 실제 코드를 작성할 차례입니다. 파이썬 자동매매의 핵심 흐름은 크게 3단계입니다. ① 액세스 토큰 발급 → ② 주가 데이터 조회 → ③ 매수·매도 주문 실행. 아래는 한국투자증권 KIS API를 기준으로 한 각 단계별 핵심 코드입니다.

 

Step 1 — 액세스 토큰 발급

import requests, json

APP_KEY    = "your_app_key"
APP_SECRET = "your_app_secret"
BASE_URL   = "https://openapi.koreainvestment.com:9443"  # 실전
# BASE_URL = "https://openapivts.koreainvestment.com:29443"  # 모의투자

def get_access_token():
    url = f"{BASE_URL}/oauth2/tokenP"
    headers = {"content-type": "application/json"}
    body = {
        "grant_type": "client_credentials",
        "appkey": APP_KEY,
        "appsecret": APP_SECRET
    }
    res = requests.post(url, headers=headers, data=json.dumps(body))
    return res.json()["access_token"]

ACCESS_TOKEN = get_access_token()
print("토큰 발급 성공:", ACCESS_TOKEN[:20], "...")

 

Step 2 — 삼성전자 현재가 조회

def get_current_price(stock_code):
    url = f"{BASE_URL}/uapi/domestic-stock/v1/quotations/inquire-price"
    headers = {
        "content-type": "application/json",
        "authorization": f"Bearer {ACCESS_TOKEN}",
        "appkey": APP_KEY,
        "appsecret": APP_SECRET,
        "tr_id": "FHKST01010100"
    }
    params = {"FID_COND_MRKT_DIV_CODE": "J", "FID_INPUT_ISCD": stock_code}
    res = requests.get(url, headers=headers, params=params)
    return int(res.json()["output"]["stck_prpr"])

price = get_current_price("005930")  # 삼성전자
print(f"삼성전자 현재가: {price:,}원")

 

Step 3 — 시장가 매수 주문 (모의투자 기준)

def buy_stock(stock_code, qty):
    url = f"{BASE_URL}/uapi/domestic-stock/v1/trading/order-cash"
    headers = {
        "content-type": "application/json",
        "authorization": f"Bearer {ACCESS_TOKEN}",
        "appkey": APP_KEY,
        "appsecret": APP_SECRET,
        "tr_id": "VTTC0802U",   # 모의투자: VTTC0802U / 실전: TTTC0802U
        "custtype": "P"
    }
    body = {
        "CANO": "your_account_no",      # 계좌번호 앞 8자리
        "ACNT_PRDT_CD": "01",           # 계좌상품코드
        "PDNO": stock_code,
        "ORD_DVSN": "01",               # 01: 시장가
        "ORD_QTY": str(qty),
        "ORD_UNPR": "0"                 # 시장가는 0
    }
    res = requests.post(url, headers=headers, data=json.dumps(body))
    return res.json()

result = buy_stock("005930", 1)
print("주문 결과:", result["msg1"])

 

위 코드는 모의투자 환경(VTTC0802U)을 기준으로 작성됐습니다. 실전 계좌로 전환할 때는 BASE_URL과 tr_id 값만 실전용으로 바꿔주시면 됩니다. 코드 자체는 길지 않지만, App Key·App Secret·계좌번호를 절대 GitHub 같은 공개 저장소에 올리지 말고 반드시 .env 파일 또는 환경변수로 관리하셔야 합니다. 보안 설정을 간과했다가 API 키가 유출되어 의도치 않은 주문이 발생하는 사고는 생각보다 자주 일어납니다.

 

증권사 API별 비교 — 키움 vs 한국투자증권 vs LS증권

알고리즘 트레이딩 백테스트 금융 관련 이미지

파이썬 자동매매를 시작하기 전에, 어떤 증권사 API를 선택할지 결정하는 것이 매우 중요합니다. 국내 3대 개인 투자자 API인 키움 Open API+, 한국투자증권 KIS API, LS증권 EBest API를 핵심 기준으로 비교해 드립니다.

 

구분 키움 Open API+ 한국투자증권 KIS LS증권 EBest
API 방식 COM/OCX (윈도우 전용) REST + WebSocket REST + WebSocket
OS 지원 Windows만 가능 Windows·Mac·Linux Windows·Mac·Linux
모의투자 제공 제공 ✅ 제공
해외주식 미지원 미국·일본·중국 지원 ✅ 미국 지원
GitHub 샘플 pykiwoom 라이브러리 공식 GitHub 적극 관리 ✅ 공식 문서 제공
난이도 중급 (PyQt5 필요) 입문~중급 ✅ 중급
비용 무료 무료 무료

표를 보면 2026년 현재 파이썬 자동매매 입문자에게 한국투자증권 KIS API가 가장 추천할 만합니다. REST 방식이어서 Mac·Linux에서도 동작하고, 공식 GitHub에서 LLM(AI) 연동 샘플까지 제공하고 있어 AI 기반 전략 개발로 확장하기도 쉽습니다. 반면 키움 Open API는 커뮤니티가 방대하고 국내 주식 데이터 품질이 뛰어난 장점이 있지만, Windows 전용이라는 한계가 있습니다. 저는 입문자라면 KIS API로 시작해서 이후 필요에 따라 키움으로 확장하는 것을 권장합니다.

 

파이썬 자동매매 실전 주의사항 5가지 & 추천 학습 로드맵

코딩 투자 자동화 컴퓨터 관련 이미지

코드가 완성됐다고 해서 곧바로 실전 투자에 뛰어드는 것은 매우 위험합니다. 📝 파이썬 자동매매를 실전에 적용하기 전 반드시 확인해야 할 5가지 주의사항을 정리합니다.

 

① 반드시 모의투자 먼저 — 최소 1개월 이상
아무리 잘 짜인 코드도 실전에서 예상치 못한 오류가 발생합니다. 모의투자 환경에서 최소 1개월 이상 안정적으로 작동하는 것을 확인한 후 실전으로 전환하세요. 단 하루 테스트 후 실전에 투입했다가 무한 매수 루프 버그로 수십만 원을 잃는 사고는 실제로 커뮤니티에서 자주 목격됩니다.

 

② API 키·시크릿 절대 공개 저장소에 업로드 금지
App Key와 App Secret은 계좌와 직결된 인증 정보입니다. GitHub에 이 정보가 포함된 코드를 올리면 크롤러 봇이 수 분 내로 탐지해 악용할 수 있습니다. 반드시 .env 파일에 저장하고 .gitignore에 등록하세요.

 

③ 주문 중복 방지 로직 필수 구현
네트워크 지연이나 API 응답 오류 시 동일 주문이 중복 실행될 수 있습니다. 주문 전 잔고와 미체결 주문을 반드시 확인하는 로직을 코드에 포함하세요. 자동매매의 최대 리스크 중 하나가 바로 이 중복 주문입니다.

 

④ 장 시작·종료 시간 예외 처리
코스피·코스닥 정규 장은 오전 9시~오후 3시 30분입니다. 장 외 시간에 주문을 시도하면 오류가 발생하므로, datetime 모듈로 시간 조건을 반드시 코드에 넣어야 합니다. 특히 서버 재시작 시간이 장 중인지 확인하는 로직도 중요합니다.

 

⑤ 투자 원금의 10~20% 이내로 소액 시작
아무리 백테스트 수익률이 높아도, 처음 실전 자동매매는 전체 투자금의 10~20% 이내 소액으로 시작하세요. 코드 오류, 시장 급변, API 장애 등 예상치 못한 변수가 반드시 발생합니다. 소액으로 충분히 검증한 후 비중을 단계적으로 늘리는 것이 장기 생존의 핵심입니다.

 

📊 마지막으로 파이썬 자동매매 학습 로드맵을 정리합니다. 1단계는 파이썬 기초(변수·함수·클래스·requests 라이브러리)를 익히는 것으로, 유튜브 무료 강좌만으로 2~4주면 충분합니다. 2단계는 모의투자 환경에서 주가 조회·매수·매도 코드를 직접 작성하는 것이고, 3단계는 pandas·matplotlib으로 백테스트를 구현하는 것입니다. 이 3단계를 차근차근 밟으면 3개월 이내에 실전 운용 가능한 자동매매 시스템을 완성하실 수 있습니다. 처음이 가장 어렵게 느껴지지만, 첫 번째 주가 조회 코드가 성공하는 순간의 쾌감은 그 어떤 투자 수익보다 클 것입니다.