본문 바로가기

IT와 과학/주식자동매매기술

[제8편] AI 자동매매 실전 Day 2 — 유령 종목, 거짓 경보, 그리고 교훈

728x90
반응형

실제로 구현해서 작동시키고 있는 아제(aj)시스템의 오늘 하루 일과를 시스템적 관점으로 한번 정리해보았습니다.

AI 자동매매 실전 Day 2 — 유령 종목, 거짓 경보, 그리고 교훈

 

 

부제: AI가 완벽하지 않다는 걸 증명한 하루. 하지만 그게 오히려 시스템을 더 강하게 만든다.

 

안녕하세요! AI 자동매매 시스템을 구축하며 매일매일 시장과 사투를 벌이고 있는 아재입니다.

실전 투입 2일 차인 2026년 2월 12일. 어제의 설렘은 온데간데없고, 오늘은 아침부터 시스템이 예상치 못한 '버그 콤보'를 날리며 저를 당황하게 했습니다. 알고리즘은 차트 속에서 보물을 찾아냈다고 외쳤지만, 정작 시장에는 물건이 없는 황당한 상황부터, 멀쩡한 계좌를 보고 "파산 직전"이라며 비명을 지르는 리스크 매니저까지.

그야말로 'AI의 수난시대'였던 오늘 하루를 가감 없이 공유합니다.


1. 사건 1: AI가 고른 유령 종목 — "호가창에 아무도 없는데요?"

오전 10시, 제가 야심 차게 개발한 종목 발굴 엔진인 'AJ엔진'이 요란하게 알람을 울렸습니다. 기술적 분석 점수가 무려 80점이 넘는 'A급' 종목 두 개를 찾아냈다는 소식이었죠.

  • 케이바이오(038530): AJ점수 88점
  • 플루토스(019570): AJ점수 85점

시스템은 즉시 3단계 분할 매수 전략에 따라 시장가와 지정가를 섞어 수백 주씩 주문을 넣었습니다. 코드상으로는 완벽한 진입이었습니다. 그런데... 이상했습니다. 주문은 접수됐는데 체결이 단 한 주도 되지 않는 겁니다.

허겁지겁 호가창을 열어보니 실소가 터졌습니다. 매도 잔량 0, 매수 잔량 0. 거래량이 완전히 메말라 유동성이 '제로'인 종목들이었습니다. AJ엔진이 기술적 지표만 보고 달려들었지만, 정작 살 수 있는 물량이 없는 '유령 종목'이었던 거죠.

더 황당한 건 시스템 로그였습니다. [매수 성공 2/2건]. 실제로는 한 주도 못 샀으면서, 주문 접수 성공을 매수 성공으로 착각하고 기록하고 있었습니다.

교훈: 기술적 점수가 아무리 높아도 거래량이 없으면 '그림의 떡'이다. 유동성 필터는 선택이 아닌 필수!


2. 사건 2: 리스크 매니저의 거짓 경보 — "나 지금 떨고 있니?"

오후 2시, 업무를 보던 중 텔레그램으로 날카로운 알림이 날아왔습니다.
"🚫 매매 중지! 일일 손실 -7.17% 발생. 리스크 관리 모드 작동!"

심장이 덜컥 내려앉았습니다. 7% 손실이라니? 급하게 계좌를 확인했더니, 웬걸? 계좌는 오히려 +0.11% 수익으로 아주 평온했습니다. 원인을 파악해 보니 키움증권 API의 '총평가손익' 필드가 문제였습니다.

  • 문제: API가 주는 값은 '당일 손익'이 아니라 '계좌 개설 이래 누적 손익'이었습니다.
  • 실수: 시스템은 이 누적값(-7.17%)을 오늘 하루 동안 발생한 손실로 오해하고 강제로 셧다운을 걸어버린 겁니다.

수정은 간단했습니다. 아침 장 시작 시점의 손익을 기준점으로 저장하고, 현재 값과의 차이만 계산하도록 코드를 고쳤습니다. 하지만 이미 포트폴리오 모니터 프로세스가 옛날 코드로 돌면서 5분마다 잘못된 값을 덮어쓰고 있더군요. 결국 모든 프로세스를 강제 종료하고 나서야 소동은 끝이 났습니다.

교훈: 금융 데이터의 필드 명칭에 속지 마라. 반드시 기준점을 잡고 '변화량'을 계산해야 한다.


3. 사건 3: 수익률 +29%, 하지만 팔 수 없는 비극 — "T+2의 벽"

오늘의 가장 아픈 손가락은 '유투바이오(221800)'였습니다. 어제 매수한 이 종목이 무려 +29.6%라는 경이로운 수익률을 기록하며 날아올랐거든요.

익절 로직이 신나게 작동했습니다. 수익률 3%, 5%, 10%를 돌파할 때마다 "익절 매도 주문!"을 외쳤죠. 하지만 돌아오는 대답은 차가웠습니다.
"에러: 매도가능수량이 부족합니다. (0주 매도가능)"

이유는 허무했습니다. 국내 주식 시장의 T+2 결제 시스템 때문이었죠. 어제 매수한 주식은 이틀 뒤에나 완전히 내 것이 되어 팔 수 있는데, 시스템은 그걸 모르고 오늘 당장 팔라고 소리를 지른 겁니다. 결국 수십 건의 에러 로그만 남긴 채, 눈앞의 수익을 확정 짓지 못하고 장이 마감되었습니다.

교훈: AI에게도 '인내'가 필요하다. 매수 날짜를 기록하고 결제일 이후에 매도하도록 로직을 정교화해야 한다.


📉 장 마감 결산 (2026-02-12)

오늘의 성적표는 겉보기에 처참해 보이지만, 속을 들여다보면 희망적입니다.

  • 일일 실질 손익: +7,330원 (+0.11%)
  • 주요 보유 포지션:
  • 유투바이오: 11주 (+29.64%) — 우리 집 에이스, 내일은 꼭 팔자!
  • HD현대일렉트릭: 1주 (-0.13%) — 든든한 대형주.
  • 한온시스템: 113주 (-0.34%) — 보합세 유지.

💡 오늘의 교훈 3줄 요약

  1. 유동성 체크: 거래량 없는 종목은 AI가 고른 최고의 덫이다.
  2. 데이터 검증: API가 주는 숫자를 100% 믿지 말고 로직으로 검증하자.
  3. 결제 주기 반영: 한국 시장에서 매매하려면 T+2 시스템을 코드에 녹여내야 한다.

마치며 — "시스템은 실패를 먹고 자란다"

오늘 여러 번의 시스템 오류를 겪으며 느꼈습니다. AI 자동매매는 단순히 코드를 짜는 게 아니라, 시장의 수많은 예외 상황을 하나씩 '정복'해 나가는 과정이라는 것을요.

오늘 발견한 문제들은 이미 3가지 개선 사항(리스크 매니저 기준점 도입, 거래 카운트 자동 복구, 장중 리포트 상세화)으로 즉시 업데이트를 마쳤습니다. 내일은 드디어 유투바이오의 결제일입니다. 과연 AI가 첫 익절의 기쁨을 맛볼 수 있을까요?

내일 더 강해진 시스템으로 다시 찾아뵙겠습니다!

728x90
반응형