그냥 관으로 보내려다가 오픈크로 써보고 싶어서 다시한번 꺼냈읍니다....
DAY 2. AI 자동 코인 트레이딩, 신호 기반 매매에서 판단형 시스템으로 바꾸기

지난번에는 기본적인 자동 코인 트레이딩 구조를 만드는 데 집중했다.
OHLCV 데이터를 가져오고, 여러 기술적 지표를 기반으로 피처를 만들고, 이를 바탕으로 모델이 매수/매도 신호를 내도록 연결해봤다.
하지만 직접 여러 번 돌려보면서, 단순히 신호를 잘 맞추는 것과 실제로 운용 가능한 트레이딩 시스템을 만드는 것은 다르다는 걸 체감하게 됐다.
이번 DAY 2에서는 그 차이를 줄이기 위해 구조를 꽤 많이 손봤다.
특히 기존 adaptive percentile 방식에서 벗어나 LightGBM 중심의 분류 모델로 다시 정리했고, 여기에 LLM과 뉴스 데이터를 붙여 “왜 지금 이 결정을 하는지”까지 설명 가능한 시스템으로 바꾸는 작업을 진행했다.
추가로 OpenClaw를 붙여 자동 실행과 운영 편의성도 함께 챙기기 시작했다.
1. Adaptive Percentile 방식은 일단 접고, LightGBM 중심으로 다시 정리
초기에는 예측 확률을 바로 쓰기보다, 시장 상황에 따라 bull/bear regime을 나누고 각 구간에서 percentile 기준으로 진입/청산 임계값을 잡는 adaptive percentile 방식을 사용했었다.
아이디어 자체는 나쁘지 않았다. 시장 상황에 따라 유연하게 기준을 바꾸면 더 현실적인 신호를 만들 수 있을 거라고 생각했기 때문이다.
하지만 실제 결과를 보면 생각보다 단순하지 않았다.
validation과 test 구간의 accuracy, F1, ROC AUC는 아주 나쁘지는 않았지만, 정작 백테스트 수익률과 샤프 비율은 계속 좋지 않았다.
특히 거래 수가 많아지고, 전략이 자주 포지션을 바꾸면서 수수료와 턴오버가 성과를 계속 갉아먹는 문제가 반복됐다.
그래서 이번에는 이 adaptive percentile 구조를 잠시 접고, 일단 LightGBM이 보다 직접적으로 방향성을 분류하는 쪽으로 다시 정리했다.
물론 단순히 “LightGBM이 맞추면 바로 매매”하는 구조로 끝낸 것은 아니다.
오히려 이번 작업에서는 LightGBM을 더 명확한 신호 생성기로 두고, 그 위에 추가 판단 레이어를 얹는 방향으로 바꿨다.
즉, 이번에 LightGBM을 다시 사용한 이유는 모델을 더 단순화하려는 목적이 아니라,
“시장 데이터에서 유의미한 확률 기반 신호를 뽑아내는 역할”을 다시 분명하게 만들기 위해서였다.
2. LLM을 붙여서 단순 신호가 아니라 ‘판단’이 되도록 만들기
기존 구조의 가장 큰 한계는 결과가 너무 기계적이라는 점이었다.
예를 들어 모델이 LONG, SHORT, HOLD 중 하나를 내놓기는 하지만, 왜 그런 결정을 했는지 사람이 이해하기 어려웠다.
특히 실제 운영을 생각하면, “지금 왜 진입하는지”, “왜 보유만 하는지”, “왜 숏 신호를 무시했는지”를 설명할 수 있어야 했다.
그래서 이번에는 LLM을 붙였다.
다만 여기서 중요한 건, LLM을 가격 예측기로 쓰지 않았다는 점이다.
LLM이 직접 시세를 예측하게 하는 대신, LightGBM이 만든 확률값과 시장 요약, 포트폴리오 상태를 보고 그것을 해석하는 역할을 맡겼다.
즉, 구조를 단순히 말하면 이렇다.
- LightGBM이 시장 데이터를 바탕으로 상승/하락 가능성을 계산한다.
- 시장 요약 정보와 포지션 상태를 함께 정리한다.
- LLM이 이 정보를 받아 최종적으로 어떤 행동이 적절한지 해석한다.
이렇게 하면서 단순한 “신호 생성기”에서 조금 더 “판단형 에이전트”에 가까운 구조가 만들어졌다.
특히 HOLD가 나왔을 때도 이유를 로그에 남기도록 하면서,
이제는 결과만 보는 게 아니라 그 결과가 나온 배경을 함께 볼 수 있게 됐다.
3. 뉴스 정보를 넣어서 시장 외부 맥락도 함께 보도록 확장
시장 데이터만 가지고 판단하는 데에는 한계가 있다.
가격과 거래량은 결국 결과이고, 뉴스나 매크로 이벤트는 그 결과를 만드는 원인일 때가 많다.
그래서 이번 작업에서는 뉴스 정보를 별도의 외부 컨텍스트 레이어로 붙였다.
아직 완전히 정교한 뉴스 분석 시스템은 아니지만,
최소한 뉴스 헤드라인, 감성(sentiment), 이벤트 성격, 위험 메모 같은 정보를 CSV 형태로 관리하고,
이 데이터를 LLM 판단에 함께 넣을 수 있도록 구조를 만들었다.
예를 들어 단순히 차트상으로는 괜찮아 보여도,
매크로 뉴스가 리스크 오프 분위기를 강하게 만들고 있다면 진입을 더 조심스럽게 볼 수 있다.
반대로 기술적 신호는 애매하지만 시장 분위기가 강하게 우호적이라면 HOLD보다는 BUY 쪽 해석이 더 설득력 있을 수도 있다.
결국 이번에 뉴스 정보를 넣은 이유는 정확도를 높이겠다는 단순한 목적보다,
시장을 바라보는 입력 자체를 조금 더 현실적으로 만들기 위해서였다.
“가격 데이터만 보는 모델”에서 “시장 맥락까지 함께 보는 판단 시스템”으로 조금 더 다가간 셈이다.
4. OpenClaw를 붙여서 운영 채널과 자동화를 연결

이번에 느낀 또 하나의 문제는, 모델이나 전략 자체보다 운영이 더 번거롭다는 점이었다.
스크립트를 수동으로 실행하고, 로그를 보고, 결과를 확인하고, 다시 상태를 체크하는 과정이 반복되다 보니
결국 시스템이 돌아가더라도 사람이 계속 붙어 있어야 했다.
그래서 OpenClaw를 붙였다.
Discord 채널과 연결해서, 내가 원하는 채널 안에서 실행 결과를 보고받고,
필요한 자동화 작업을 운영 채널 기준으로 관리할 수 있도록 바꾸기 시작했다.
이 과정에서 단순 실행 결과뿐 아니라 다음과 같은 정보도 함께 정리되도록 만들었다.
- 현재 실행 성공 여부
- 최신 자산 가치와 손익 상태
- 현재 포지션 보유 여부
- 마지막 판단 결과와 그 이유
- 뉴스 및 모델 확률 기반 판단 근거
즉, 이번에 OpenClaw를 도입한 목적은 새로운 전략을 만든다기보다,
이미 만든 전략을 “운영 가능한 형태”로 바꾸는 데 있었다.
자동매매 시스템은 모델 성능만 중요한 게 아니라,
그 시스템이 실제로 어떻게 실행되고 있고 지금 무슨 상태인지 사람이 빠르게 파악할 수 있어야 하기 때문이다.
마무리
이번 DAY 2에서 가장 크게 달라진 점은,
트레이딩 시스템을 단순 예측 모델에서 하나의 판단 프로세스로 바꾸기 시작했다는 점이다.
adaptive percentile 방식은 일단 뒤로 미루고, LightGBM 기반 신호 생성 구조를 다시 정리했다.
그 위에 LLM을 붙여 이유를 설명할 수 있게 만들었고,
뉴스 데이터를 넣어 시장 외부 맥락도 함께 보게 했다.
그리고 OpenClaw를 붙이면서 실제 운영 채널 안에서 이 시스템을 다루는 방향까지 연결했다.
아직 완성된 구조는 아니다.
앞으로는 뉴스 품질 개선, 리포트 고도화, LLM 판단의 안정화, 진입 빈도 조절 같은 부분을 더 다듬어야 한다.
그래도 최소한 이번 작업을 통해,
“모델이 맞추는 시스템”에서 “판단하고 운영할 수 있는 시스템”으로 한 단계 나아간 건 확실한 것 같다.
OpenClaw 다루는건 좀 재밌긴 했는데 투자 성능은 아직 좋지 못하다...
'프로젝트' 카테고리의 다른 글
| AI Trading Bot 개발기 — Day 5 (0) | 2026.04.01 |
|---|---|
| AI Trading Bot 개발기 — Day 4 (2) | 2026.03.24 |
| AI Trading Bot 개발기 — Day 3 (0) | 2026.03.19 |
| AI Trading Bot 개발기 — Day 1 (0) | 2026.03.10 |