키움 자동매매+백테스트

키움 자동매매 3년 기록을 책으로 만듭니다 — 목차 전체와 샘플 2개 장을 먼저 공개합니다 (사전등록)

oneai 2026. 8. 2. 23:01

3년 넘게 실계좌로 굴려온 키움 OpenAPI 자동매매의 기록을 전자책으로 정리하고 있습니다. 완성하기 전에 목차 전체와 샘플 2개 장을 먼저 공개하고, "완성되면 알려달라"는 분들의 사전등록을 받습니다. 등록해 주신 분이 충분하면 완성하고, 아니면 완성하지 않습니다 — 그게 이 글의 목적입니다.

이 책이 필요 없는 분

먼저 이 책이 필요 없는 분부터 말씀드립니다.

  • 수익 나는 전략, 종목 추천, 매매 신호를 찾는 분 — 이 책에는 없습니다. 전략 파라미터 값은 단 하나도 실려 있지 않습니다.
  • "자동매매 = 쉬운 돈"을 기대하는 분 — 이 책의 결론은 반대입니다. 만들기가 쉬워졌을 뿐, 버는 것은 쉬워지지 않았습니다.

여기까지 읽고 뒤로 가기를 누르셨다면, 그게 맞습니다.

이런 분의 이야기입니다

  • "자동매매, 나도 해보고 싶은데 코딩을 몰라서…"라고 생각해 본 적이 있다면 —
  • 혹은 이미 만들어봤는데, 백테스트와 실계좌가 다르게 움직여서 어디부터 믿어야 할지 모르겠다면 —

이 책은 그 두 사람을 위해 쓰고 있습니다. 3년 전의 저는 앞사람이었고, 지금의 저는 뒷사람의 문제를 파고 있습니다.

2023년 1월, 저는 자동매매 프로그램 한 줄을 짜는 데도 며칠이 걸렸습니다. 지금은 AI에게 시키면 반나절이면 돌아가는 시스템이 나옵니다. 만들기는 정말 쉬워졌습니다 — 그런데 만들어본 사람은 더 어려운 문제를 만납니다. 백테스트에서 잘 되던 전략이 실계좌에서 다르게 움직입니다. 이 책은 그 두 가지를 다룹니다. AI에게 시켜서 만드는 법, 그리고 만든 것을 믿을 수 있게 만드는 법.

목차 전체 공개

목차를 숨기지 않습니다. 목차만 읽어도 "내 이야기다" 싶은 분이 이 책의 독자입니다.

들어가며

  • 만들기는 쉬워졌다, 믿기는 어려워졌다 — 이 책의 두 가지 약속
  • 범인은 전략 파라미터가 아니었다 — 다섯 가지 구조적 차이 미리보기

1부 — 만들기는 쉬워졌다: AI에게 시켜서 자동매매 만들기

  • 2023년의 나와 지금의 나 — 같은 사람이 두 번 만든 자동매매 (↓ 아래 전문 공개)
  • 코딩을 몰라도 된다는 말의 진짜 뜻 — 대신, 질문하는 법을 알아야 한다
  • 안전장치부터 단다 — 첫 실행 전에 반드시 할 세 가지
  • 반나절 만에 돌아가는 첫 버전 — 그리고 그게 전부가 아닌 이유

2부 — 실매매 코드를 고치면 왜 백테스트도 고쳐야 하는가

  • 하나를 고쳤는데 세 군데가 깨졌다 — 시스템이 서로 묶여 있는 진짜 이유
  • 약속 ①: 매매 판단 규칙 — 언제 사고, 얼마나 사고, 어디까지 사는가
  • 약속 ②: 기록 — 디버깅용 로그와 영상용 로그를 한 파일에 섞으면 생기는 일
  • 약속 ③: 상태 파일 — 어제의 매매를 오늘로 넘기는 state.json은 누가 쓰고 누가 읽는가

3부 — 백테스트와 실계좌가 달라지는 다섯 가지 이유 (핵심부)

  • 이유 1 · 종목이 다르다 — 같은 종목을 같은 시각에 만나지 않는다
  • 이유 2 · 상태가 다르다 — 매수 신호가 사라진 날, 그리고 고치고 나서야 보인 더 깊은 문제 (↓ 아래 전문 공개)
  • 이유 3 · 체결이 다르다 — 백테스트는 주문하면 항상 체결된다고 믿는다
  • 이유 4 · 한도가 다르다 — 약세장이라 한도를 줄였는데, 백테스트는 몰랐다
  • 이유 5 · 계산이 다르다 — 같은 매매인데 손익 숫자가 왜 다른가

4부 — 백테스트에는 없는 일들: 실계좌 운영 사고 기록

  • 현재가가 -100%가 된 날 — 잘못된 가격에 손절이 나갈 뻔했다
  • 프로그램이 소리 없이 죽는다 — 에러 메시지 한 줄 없이 꺼지는 이유
  • 정상 종료했는데 "치명 오류" 알림이 왔다 — 이미 꺼진 프로그램을 부르는 예약 타이머
  • 오늘 손으로 몇 주 샀다 — 수동 매매가 자동 기록을 오염시키지 않게 하는 법
  • 장중에 설정을 바꾸고 싶다 — 재시작 없이 규칙 바꾸기, 그리고 그 함정
  • 같은 경고가 180번 왔다 — 로그는 전부 남기고 알림만 조용하게

5부 — 믿을 수 있는 시스템을 만드는 습관

  • 틀린 값을 보여줄 바엔 아무것도 보여주지 마라
  • "왜 주문이 안 나갔는가"가 로그에 보여야 한다
  • 데이터 수집이 막혔다 — 조회 제한(-209)을 만든 건 속도가 아니라 중복이었다
  • 혼자서 시스템 다섯 개를 굴리는 법 — AI와 일할 때 규칙을 문서로 만드는 이유

부록 — 콘텐츠 자동화 삽질 모음

  • 유튜브 자동 업로드 403의 정체 / 배치파일 한글 깨짐 / TTS "오패삼" 문제

샘플 ① 전문 — 1-1. 2023년의 나와 지금의 나

책의 첫 장을 그대로 싣습니다.


저는 매수 버튼 앞에서 매번 다른 사람이 됐습니다.

같은 차트, 같은 패턴을 보고도 어떤 날은 사고, 어떤 날은 그냥 지나쳤습니다. 원칙은 분명히 있었는데, 버튼을 누르는 순간마다 흔들렸습니다. 손절은 항상 늦었습니다. 시장이 문제가 아니라 제가 문제였습니다.

그래서 2023년 1월, 한 가지 결론을 내렸습니다.

"내가 판단하지 말고, 프로그램이 판단하게 만들자."

거창한 AI를 만들겠다는 생각은 아니었습니다. 그저 제가 지킬 수 없는 원칙을 컴퓨터가 대신 지켜주면 어떨까 — 그 정도의 생각이었습니다. 그날 키움 OpenAPI를 설치했고, Python을 배우기 시작했습니다. 이 프로젝트가 3년 넘게 이어질 줄은, 그때는 전혀 몰랐습니다.

코딩을 시작하기도 전에 며칠이 갔다

2023년의 첫 번째 벽은 코드가 아니었습니다. 환경이었습니다.

키움 OpenAPI는 32bit 환경에서만 동작합니다. 64bit Python에서는 OCX라는 부품이 아예 돌지 않습니다. 그래서 Python 버전을 바꾸면 이번엔 다른 오류가 났습니다. PyQt5의 QAxWidget이라는 것이 왜 필요한지도 모른 채 설치했습니다. 겨우 로그인 이벤트가 잡히니 이번엔 TR — 데이터 요청 — 이 안 들어왔습니다. 이벤트는 오는데 데이터는 비어 있었습니다.

며칠 동안 같은 오류 화면만 반복해서 봤습니다. 코드를 짜는 시간이 아니라, 코드를 짤 수 있는 상태를 만드는 데만 하루가 통째로 사라지는 날이 많았습니다.

배울 곳이 없었던 건 아닙니다. 위키독스, 티스토리 블로그, 네이버 카페, 유튜브, GitHub 예제 — 자료는 많았습니다. 문제는 정보가 전부 조각나 있다는 것이었습니다. 어떤 블로그는 로그인까지만 설명하고, 다른 블로그는 TR만 설명하고, 또 다른 글은 오래돼서 지금 버전에서는 동작하지 않았습니다. 결국 여러 자료를 이어 붙여가며 전체 구조를 스스로 조립해야 했습니다.

당시 초기 ChatGPT도 써봤습니다. 하지만 코드가 자주 틀렸고, 키움 OpenAPI처럼 특수한 분야는 제대로 답하지 못했습니다. AI가 준 코드를 고치는 시간이, 직접 짜는 시간보다 길었습니다.

그렇게 32bit 환경 구축, OpenAPI 등록, ActiveX 연결, 로그인 이벤트, TR 요청 구조를 하나씩 뚫고 나서야 — 비로소 이런 느낌이 들었습니다.

"이제, 코딩을 시작할 수 있겠다."

시작할 수 있겠다는 느낌이 들 때까지, 그만큼이 걸렸습니다.

2026년, 같은 사람의 하루

3년이 지난 지금, 저는 여전히 같은 시스템을 키우고 있습니다. 그런데 일하는 방식은 완전히 다른 사람이 됐습니다.

요즘 새 기능 하나를 추가하는 과정은 거의 일정한 패턴입니다.

먼저 필요한 것을 한 문장으로 정리합니다 — 예를 들어 "시장 국면에 따라 전략을 자동으로 변경하고 싶다." 그다음 AI에게 현재 코드 구조와 함께 설명합니다. AI가 수정안을 제안하면, 실제 코드에 적용하고, 백테스트를 수십 번 돌려 결과를 비교합니다. 문제가 있으면 다시 AI와 수정합니다.

예전에는 이 과정이 하루 이상 걸렸습니다. 검색하고, 공식 문서를 읽고, 예제를 찾고, 고치고. 지금은 초안까지 1020분, 기능 완성까지 보통 12시간입니다.

백테스트 구조 변경, 시장 국면 분류, 리포트 자동 생성, 유튜브 콘텐츠 자동화, 코드 리팩터링 — 전부 같은 방식으로 진행합니다. 2023년의 저였다면 각각 몇 주짜리 프로젝트였을 일들입니다.

여기서 오해하면 안 되는 것이 하나 있습니다. AI가 준 초안을 그대로 쓰는 일은 없습니다. 항상 검증하고, 항상 수정합니다. 바뀐 것은 결과물이 아니라 시간의 배분입니다.

예전에는 시간의 대부분을 '구현'에 썼습니다.
지금은 시간의 대부분을 '검증'에 씁니다.

이 한 줄이, 사실 이 책 전체의 요약입니다. 만드는 일이 쉬워질수록, 만든 것을 믿을 수 있는지 확인하는 일이 본업이 됩니다. 뒤에서 다룰 모든 이야기 — 백테스트와 실계좌가 왜 다른지, 실계좌에서 무슨 사고가 나는지 — 는 전부 '검증'의 이야기입니다.

그런데 주변엔 아무도 없다

회사에서 AI를 적극적으로 활용한다고 이야기하면, 가장 많이 듣는 말이 이것입니다.

"그게 정말 그렇게까지 되나요?"

실제로 자동화 결과물을 보여주면 대부분 놀랍니다. 하지만 막상 직접 써보는 사람은 많지 않습니다. 반복 업무를 AI로 줄일 수 있다고 하면 "좋네" 정도의 반응은 나오지만, 실제로 자기 업무 방식을 바꾸는 경우는 드뭅니다.

저는 반대로 갔습니다. 자동매매, 백테스트, 유튜브 콘텐츠 제작, 썸네일, 업무 보고서, 데이터 분석, 워크플로 자동화까지 — 거의 모든 작업에서 AI를 먼저 쓰는 것이 습관이 됐습니다. 지난 몇 달 동안 자동매매 시스템 고도화, 시장 국면 기반 전략, 수백 번의 백테스트, 리포트 자동 생성, 유튜브 자동화, 회사 업무 자동화를 동시에 진행했습니다. 예전 같으면 여러 사람이 나눠 했을 프로젝트들입니다.

그래서 저는 이 변화를 이렇게 정리합니다.

AI가 사람을 대체한 것이 아니라, AI를 활용하는 사람이 압도적으로 빨라진 것입니다.

그리고 고민의 종류가 바뀌었습니다. 예전의 가장 큰 고민은 "시간이 부족하다"였습니다. 지금의 고민은 이것입니다 — "어떤 일을 AI에게 맡기고, 어떤 일은 내가 직접 판단해야 하는가."

이 장을 읽고 있는 당신에게

혹시 "자동매매, 나도 해보고 싶은데 코딩을 몰라서"라고 몇 년째 생각만 하고 있다면 — 2023년의 저와 지금의 저, 둘 중 어느 쪽 세상에서 시작하게 될지 생각해 보십시오. 며칠 동안 오류 화면만 보던 세상은 끝났습니다. 조각난 블로그를 이어 붙이던 세상도 끝났습니다.

만들기는, 정말로 쉬워졌습니다.

다만 이 책은 여기서 멈추지 않습니다. 쉽게 만들 수 있다는 말과 쉽게 돈을 벌 수 있다는 말은 전혀 다른 말이기 때문입니다. 다음 장에서는 "코딩을 몰라도 된다"는 말의 진짜 뜻 — AI에게 제대로 시키는 법부터 시작하겠습니다.


샘플 ② — 3-2. 매수 신호가 사라진 날 (별도 글)

책의 핵심부(3부)에서 한 장을 더 공개합니다. 실계좌에서 매수 신호가 소리 없이 사라졌던 사건 — 그리고 그걸 고친 방식이 백테스트와의 더 깊은 어긋남을 만들어낸 이야기입니다. 분량이 길어 별도 글로 실었습니다.

👉 3-2 전문 읽기: 이유 2 · 상태가 다르다

사전등록

이 책이 필요하다고 느끼셨다면, 아래 폼에 이메일을 남겨주세요.

👉 출간 사전등록 폼 (1분, 5문항)

  • 이메일은 출간 알림 1회 외에는 사용하지 않습니다. 광고·뉴스레터 없습니다.
  • 등록해 주신 분이 충분하면 완성해서 알려드리고, 부족하면 완성하지 않습니다. 등록이 곧 투표입니다.
  • 폼의 나머지 4문항(현재 단계, 기대하는 부, 가격대, 제목 선호)은 책을 독자에게 맞추는 데 씁니다.

읽어주셔서 감사합니다. 질문은 댓글로 남겨주시면 답하겠습니다.