나는 누구인가
보전(설비 정비) 조직에서 25년을 일했고, 지금은 용접기 담당자다. 코딩은 업무의 일부가 아니었지만, RStudio로 데이터를 다루는 게 주특기가 됐다. 어느 시점부터 "이 도구로 내 개인 투자 판단도 데이터 기반으로 해볼 수 있지 않을까"라는 생각이 들었다.
주식 투자 경험이 아주 많은 것도 아니고, 화려한 금융공학 배경이 있는 것도 아니다. 그냥 데이터를 다룰 줄 아는 사람이 "국내 주식 중에서 살 만한 종목을 어떻게 데이터로 골라낼 수 있을까"라는 질문에서 시작한 프로젝트다.
목표를 처음부터 명확히 했다
시작할 때 세운 원칙은 세 가지였다.
AUC 0.7이라는 숫자에 억지로 맞추지 않는다. 모델이 실제로 예측력이 있는지 확인하는 게 목적이지, 특정 숫자를 만드는 게 목적이 아니다.
단일 train/test 분할을 믿지 않는다. 여러 연도에 걸친 walk-forward(확장윈도우) 검증으로 우연한 결과와 진짜 신호를 구분한다.
모델은 매매 신호가 아니라 보조 스코어다. 예측 확률 자체를 매수 버튼으로 쓰지 않고, 실제 돈이 오가는 매매 규칙(손절, 현금 관리, 종목 수 제한 등)과 분리해서 설계한다.
이 세 가지 원칙이 이후 한 달간의 모든 결정에 계속 등장한다. 특히 세 번째 원칙 때문에, 이 시리즈는 "AI가 주식을 맞췄다"는 이야기가 아니라 "약한 신호를 어떤 운영 규칙으로 감싸야 실제로 쓸모 있어지는가"에 관한 이야기가 됐다.
전체 여정 지도
이 시리즈는 실제 개발 순서를 그대로 따라간다.
데이터 인프라 (2편): DB에 가격·공시·뉴스·수급 데이터를 쌓는 과정에서 발견한 버그들. 화려한 부분은 아니지만 가장 먼저, 가장 오래 걸린 작업이다.
모델링 (3~6편): randomForest를 선택한 이유, walk-forward 검증 설계, 그리고 시도했다가 실패한 개선안들.
포트폴리오 운영 규칙 (7~9편): 모델의 약한 신호를 실제 매매 규칙으로 감싸는 과정. 버려진 아이디어가 채택된 아이디어보다 훨씬 많다.
자동매매 (10~11편): 키움증권 API 연동, 그리고 실전 배포 전에 발견한 위험한 버그들.
부수적 실험과 교훈 (12편): 채택되지 않았지만 방법론적으로 남길 가치가 있는 실험들, 그리고 전체 과정에서 얻은 일반화 가능한 교훈.
미리 말해둘 것
이 시스템은 이 글을 쓰는 시점(2026년 9월 27일)까지 실제 주문을 단 한 건도 낸 적이 없다. 자동매매 코드는 완성 단계지만 execution.enabled=false 상태로 잠겨 있고, 활성화하려면 사람이 직접 서명해야 하는 8개의 안전장치 중 아직 2개가 남아 있다. 그리고 나는 이걸 "아직 못 끝냈다"가 아니라 "제대로 하고 있다"는 증거로 본다. 그 이유는 이 시리즈를 끝까지 읽으면 이해가 될 것이다.
다음 편에서는 이 모든 것의 출발점, 데이터 인프라 구축 이야기부터 시작한다.
(다음 편: 데이터 인프라 구축 — 모델보다 데이터가 먼저다)
댓글 없음:
댓글 쓰기