주식 자동매매 처음 시작할 때 알아야 할 5가지

🌐 English

"주식 자동매매"를 검색하면 대체로 전략 이야기부터 나옵니다. 그런데 실제로 봇을 돌려보면 전략보다 앞에서 막히는 것들이 있습니다. 계좌를 어디에 트는지, 테스트는 어떻게 하는지, 수수료를 빼면 남는 게 있는지 같은 것들이요.

처음 시작하는 사람이 미리 알았으면 좋았을 다섯 가지를 순서대로 정리했습니다.

1. 증권사 API부터 정한다 — 전략보다 먼저

국내 주식 자동매매의 출발점은 API를 제공하는 증권사에 계좌를 만드는 것입니다. 아무 증권사나 되는 게 아닙니다. 선택 기준은 세 가지면 충분합니다.

  • REST API인가, 설치형인가: REST 방식(HTTP 요청)은 리눅스 서버에서도 돌고, 파이썬·Go 아무 언어나 씁니다. 반면 예전 방식인 OCX/COM 기반은 윈도우에 프로그램을 깔아야 하고 32비트 환경에 묶입니다. 지금 시작한다면 REST 쪽이 낫습니다.
  • 모의투자를 지원하는가: 이게 없으면 첫 테스트를 실제 돈으로 해야 합니다. 반드시 확인하세요.
  • 문서와 예제가 있는가: API 문서가 부실하면 요청 하나 성공시키는 데 며칠이 갑니다.

국내에서는 한국투자증권 OpenAPI가 REST 기반에 모의투자까지 지원해서 개인 개발자가 많이 씁니다. 신청하면 appkeyappsecret을 받고, 이걸로 접속 토큰을 발급받는 구조입니다.

import requests

BASE_URL = "https://openapi.koreainvestment.com:9443"  # 실전

# 모의투자는 별도 도메인을 씁니다 (문서 확인)

def issue_token(app_key, app_secret):

    """접속 토큰 발급 — 보통 하루 단위로 만료된다"""

    res = requests.post(

        f"{BASE_URL}/oauth2/tokenP",

        json={

            "grant_type": "client_credentials",

            "appkey":     app_key,      # 실제 값은 설정 파일/환경변수로

            "appsecret":  app_secret,

        },

        timeout=10,

    )

    res.raise_for_status()

    return "Bearer " + res.json()["access_token"]

토큰은 영구적이지 않습니다. 만료 시각을 저장해 두고 만료 전에 자동으로 재발급하는 코드를 처음부터 넣으세요. 이걸 안 넣으면 봇이 다음 날 아침에 조용히 죽어 있습니다.

2. 모의투자로 최소 2주는 돌린다

모의투자 계좌는 가짜 돈으로 진짜 API를 쓰는 환경입니다. 초보자가 가장 아까워하는 단계인데, 사실 가장 이득이 큰 단계입니다.

이 기간에 확인할 것은 수익률이 아닙니다. 이런 것들입니다.

  • 장 시작 시각에 봇이 제대로 깨어나는가 (한국 시장은 09:00~15:30, 동시호가 시간대 별도)
  • 휴장일에 엉뚱한 동작을 하지 않는가
  • 토큰 만료 시각에 자동 갱신이 되는가
  • 주문이 거부됐을 때 재시도하다가 중복 주문을 내지 않는가
  • 네트워크가 끊겼다 붙었을 때 포지션 상태를 잃지 않는가

실전에서 돈을 잃는 사고는 전략이 틀려서보다 이런 운영 버그 때문인 경우가 훨씬 많습니다. 특히 중복 주문은 한 번 터지면 손실이 큽니다. 주문마다 고유 키를 두고 이미 낸 주문인지 확인하는 습관을 들이세요.

class OrderGuard:

    """같은 종목에 중복 주문이 나가는 걸 막는 최소 장치"""

    def __init__(self):

        self.pending = {}          # symbol -> 주문시각

    def can_order(self, symbol, cooldown=60):

        last = self.pending.get(symbol)

        if last and (time.time() - last) < cooldown:

            return False           # 쿨다운 안이면 무시

        self.pending[symbol] = time.time()

        return True

3. 수수료와 세금을 먼저 계산한다

자동매매는 거래 횟수가 많습니다. 그래서 수수료가 전략 성패를 가릅니다. 국내 주식은 대략 이렇습니다.

  • 위탁수수료: 증권사마다 다르지만 온라인 기준 매매대금의 0.01% 안팎. 매수·매도 양쪽에 붙습니다.
  • 증권거래세: 매도할 때 부과됩니다. 세율은 시장(코스피/코스닥)과 연도에 따라 달라지므로 반드시 현재 기준을 확인하세요.
  • 양도소득세: 국내 상장주식은 대주주 요건에 해당하지 않으면 일반적으로 과세 대상이 아니지만, 해외 주식은 다릅니다. 세법은 자주 바뀌므로 국세청 기준을 확인하는 게 안전합니다.

중요한 건 백테스트에 이 비용을 반드시 반영하는 것입니다. 수수료를 빼면 수익이 사라지는 전략이 정말 많습니다.

FEE_RATE = 0.00015     # 위탁수수료 (증권사 실제 요율로 교체)

TAX_RATE = 0.0018      # 매도 시 거래세 (현재 기준 확인 필요)

def net_profit(buy_price, sell_price, qty):

    buy_cost  = buy_price * qty * (1 + FEE_RATE)

    sell_gain = sell_price * qty * (1 - FEE_RATE - TAX_RATE)

    return sell_gain - buy_cost

# 1% 올랐는데 실제로는?

print(net_profit(10000, 10100, 100))   # 수수료·세금 차감 후 실수령

여기에 슬리피지(주문한 가격과 실제 체결가의 차이)까지 더해야 현실에 가깝습니다. 시장가로 사면 호가창 위쪽 가격에 체결되는 게 정상입니다. 백테스트에서 항상 종가에 체결됐다고 가정하면 결과가 과하게 좋아집니다.

4. 법적으로 넘지 말아야 할 선

개인이 자기 계좌로 자동매매하는 것 자체는 문제가 없습니다. 다만 선이 있습니다.

  • 남의 돈을 굴리면 안 된다: 타인의 자금을 모아 운용하면 자본시장법상 인가가 필요한 영역이 됩니다. "수익 나면 나눠 갖자"도 위험합니다.
  • 시세를 왜곡하는 주문 금지: 체결 의사 없이 호가만 넣었다 빼는 행위, 자기들끼리 사고파는 행위 등은 시세조종으로 판단될 수 있습니다. 자동화되면 횟수가 많아 더 눈에 띕니다.
  • API 이용약관 준수: 증권사마다 초당 호출 제한과 금지 행위가 명시돼 있습니다. 무리하게 호출하면 계정이 제한됩니다.
  • 시세 데이터 재배포 금지: 받은 시세를 외부에 공개 서비스로 뿌리는 건 대개 약관 위반입니다.

애매하면 증권사 약관과 금융감독원 안내를 확인하는 게 맞습니다. 이 부분은 "몰랐다"가 통하지 않습니다.

5. 처음엔 작게, 그리고 로그를 남긴다

실전 전환은 잃어도 생활에 지장이 없는 금액으로 시작합니다. 그리고 봇의 모든 판단을 기록하세요. 왜 샀는지, 그때 가격이 얼마였는지, 주문 응답이 뭐였는지.

import json, logging

def log_decision(symbol, action, price, reason, response=None):

    logging.info(json.dumps({

        "symbol":   symbol,

        "action":   action,        # BUY / SELL / SKIP

        "price":    price,

        "reason":   reason,        # "5일선 돌파" 등

        "response": response,

    }, ensure_ascii=False))

한 달쯤 지나면 이 로그가 가장 값진 자산이 됩니다. 손실이 났을 때 "전략이 틀렸는지, 구현이 틀렸는지" 구분할 수 있는 유일한 근거니까요. 로그 없이 돌린 한 달은 배운 게 없는 한 달입니다.

정리

순서대로 하면 API 되는 증권사 계좌 → 모의투자 2주 → 수수료·세금 반영한 백테스트 → 법적 확인 → 소액 실전 + 로그입니다. 화려하지 않지만, 이 순서를 건너뛴 사람들이 대부분 첫 달에 크게 다칩니다.

자동매매의 진짜 장점은 "돈을 많이 번다"가 아니라 감정 없이 규칙을 지킨다는 데 있습니다. 그 규칙이 검증되지 않았다면, 자동화는 잘못된 판단을 더 빠르게 반복할 뿐입니다.

이 글은 교육·정보 목적이며 투자 권유가 아닙니다. 주식 자동매매에는 원금 손실 위험이 있습니다. 수수료·세율·법규는 시점에 따라 달라지므로 반드시 최신 공식 자료를 확인하시고, 모든 판단과 책임은 본인에게 있습니다.

댓글

이 블로그의 인기 게시물

한국투자증권 KIS API로 실시간 시세 받기 (WebSocket 실전)

파이썬으로 업비트 API 연동하기 — 시세 조회부터 주문까지 기초

Go로 자동매매 신호봇 프레임워크 설계하기