밤새 켜진 모니터 앞 자동매매 시스템 개발 환경

솔직히 말하면, 처음엔 그냥 귀찮아서 시작했다.

매일 아침 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를 만들면서 가장 공들인 부분이 세 가지다. 이전 버전들이 실패한 이유가 정확히 이 세 가지를 무시했기 때문이다.

  1. 레짐 자동전환 (REGIME)
    시장이 강세인지 약세인지를 실시간으로 판단해서 매매 전략을 자동으로 바꾸는 기능이다. 처음 켜진 순간 로그를 보면 이런 줄이 나온다.
    NEUTRAL → BEAR | breadth=0.0% (동시강세 종목=0/106)
    106개 종목 중 강세인 종목이 0개. 시스템이 켜지자마자 "오늘 장 안 좋다"고 판단하고 BEAR 모드로 전환한 것이다.
  2. 군집필터 (CLUSTER)
    혼자 올라가는 종목은 믿지 않는다. 여러 종목이 동시에 강세를 보일 때만 신호를 허용하는 필터다. 240초 윈도우 안에서 일정 수준 이상의 열기(heat)가 모여야 매수 신호가 통과된다.
  3. 시장 필터 (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 원칙에 대해 다룰 예정이다. 신호를 잡는 것과 실제로 사는 것을 분리한 이유, 그리고 그게 왜 중요한지.

※ 본 글은 자동매매 시스템 개발 과정을 기록한 정보 제공 목적의 개발 일지입니다. 투자 권유나 수익 보장이 아니며, 모든 투자 판단과 책임은 본인에게 있습니다.