솔직히 말하면, 처음엔 그냥 귀찮아서 시작했다.
매일 아침 9시에 HTS 앞에 앉아서 호가창 들여다보고, 손가락 위에 올려두고 타이밍 재고, 결국 타이밍 놓치거나 반대로 너무 빨리 누르거나. 그게 반복되면서 든 생각이 하나였다.
"이거 그냥 코드가 하면 안 되나?"
여러분도 비슷한 생각 한 번쯤 해보셨을 것 같다. 자동매매, 알고리즘 트레이딩. 말은 많이 들어봤는데 막상 어디서부터 시작해야 할지 막막한 그 느낌.
이 시리즈는 그 막막함을 안고 시작해서, 실제로 시스템을 만들고 돌리고 고치는 과정을 로그와 함께 기록하는 개발 일지다. 화려한 수익 인증이 아니라, 진짜 만드는 과정이다.
🤖 GENIE V4란 무엇인가
GENIE는 내가 키움증권 OpenAPI를 기반으로 직접 개발한 주식 자동매매 엔진이다. 이름은 그냥 내 마음대로 붙였다. 지니, 요술램프, 내가 원하는 걸 들어주길 바라는 마음으로.
V4는 네 번째 버전이라는 뜻이다. 그 앞에 V1, V2, V3가 있었고, 각각 처참하게 실패하거나 어설프게 작동하다가 폐기됐다. V4는 그 실패들을 다 녹여서 다시 만든 버전이다.
2026년 3월 4일 오후 12시 53분. 처음으로 로그에 이런 줄이 찍혔다.
[2026-03-04 12:53:39] [START] condition=실시간양봉잡기
[2026-03-04 12:54:10] ✅ GENIE V4 가동 완료
(레짐 자동전환 + 군집필터 + 통계)
[2026-03-04 12:54:10] ✅ MAX_POSITIONS=3
[2026-03-04 12:54:10] ✅ REGIME enable=True start=NEUTRAL
[2026-03-04 12:54:10] ✅ CLUSTER enable=True window=240s
짧은 몇 줄이지만, 이 로그가 찍히는 순간이 꽤 감격스러웠다. 몇 주 동안 에러랑 싸우다가 드디어 시스템이 제대로 켜지는 걸 확인한 순간이었으니까.
⚙️ GENIE V4의 세 가지 핵심 구조
V4를 만들면서 가장 공들인 부분이 세 가지다. 이전 버전들이 실패한 이유가 정확히 이 세 가지를 무시했기 때문이다.
-
레짐 자동전환 (REGIME)
시장이 강세인지 약세인지를 실시간으로 판단해서 매매 전략을 자동으로 바꾸는 기능이다. 처음 켜진 순간 로그를 보면 이런 줄이 나온다.
NEUTRAL → BEAR | breadth=0.0% (동시강세 종목=0/106)
106개 종목 중 강세인 종목이 0개. 시스템이 켜지자마자 "오늘 장 안 좋다"고 판단하고 BEAR 모드로 전환한 것이다. -
군집필터 (CLUSTER)
혼자 올라가는 종목은 믿지 않는다. 여러 종목이 동시에 강세를 보일 때만 신호를 허용하는 필터다. 240초 윈도우 안에서 일정 수준 이상의 열기(heat)가 모여야 매수 신호가 통과된다. -
시장 필터 (MARKET_FILTER)
KOSPI ETF(069500)와 KOSDAQ ETF(229200)를 기준으로 전체 시장 방향을 먼저 확인한다. 시장 자체가 무너지고 있을 때는 아무리 좋은 종목 신호가 와도 매수를 차단한다.
📋 첫날 로그가 보여준 것
V4가 처음 켜진 날, 로그에는 매수 체결이 하나도 없었다. 대신 이런 줄이 수백 개 찍혔다.
🧊 [매수차단] 한미반도체 | cluster_block:heat=0 need=3
🧊 [매수차단] LG화학 | cluster_block:heat=0 need=3
🧊 [매수차단] 현대제철 | cluster_block:heat=0 need=3
처음엔 좀 답답했다. 신호는 잡히는데 계속 차단만 하니까. 그런데 생각해보면 이게 맞다. 군집 열기가 0인 상태에서 혼자 올라가는 종목을 잡는 건 그냥 도박이다.
시스템이 "하지 말라"고 하는 걸 지키는 것, 그게 자동매매의 절반이다.
📊 수동매매 vs 자동매매, 뭐가 다른가
| 구분 | 수동매매 | GENIE V4 자동매매 |
|---|---|---|
| 진입 판단 | 사람이 차트 보고 결정 | 레짐+군집+시장필터 통과 시만 |
| 감정 개입 | 공포·탐욕 항상 존재 | 없음 (조건만 판단) |
| 모니터링 | 종일 화면 앞에 있어야 함 | 로그만 확인 |
| 실수 | 손가락 실수, 타이밍 미스 | 코드 버그만 없으면 없음 |
❓ Q&A
Q. 키움 OpenAPI, 코딩 모르면 못 쓰나요?
솔직히 Python 기초는 있어야 한다. 완전 비개발자가 처음부터 만드는 건 쉽지 않다. 다만 이 시리즈에서는 코드보다 개념과 구조 중심으로 설명할 예정이라, 자동매매가 어떻게 작동하는지 이해하는 데는 코딩 지식이 없어도 따라올 수 있다.
✍️ 마무리 — 1편을 마치며
자동매매는 마법이 아니다. 코드가 알아서 돈을 벌어다 주는 기계가 아니라, 내가 정한 규칙을 감정 없이 실행해주는 도구다.
그래서 규칙이 잘못되면 자동으로 잘못된 걸 한다. 빠르고 정확하게. 그게 자동매매의 위험이기도 하다.
2편에서는 GENIE V4가 V4.1로 넘어가면서 생긴 가장 중요한 변화, SCAN≠BUY 원칙에 대해 다룰 예정이다. 신호를 잡는 것과 실제로 사는 것을 분리한 이유, 그리고 그게 왜 중요한지.
※ 본 글은 자동매매 시스템 개발 과정을 기록한 정보 제공 목적의 개발 일지입니다. 투자 권유나 수익 보장이 아니며, 모든 투자 판단과 책임은 본인에게 있습니다.