EthiBot/개발일지

EthiBot v4 - 실패에서 다시 시작한 AI 자동매매 봇 개발기

EthiStudio 2026. 3. 31. 17:50
EthiBot 개발일지

EthiBot v4
실패에서 다시 시작한
AI 자동매매 봇 개발기

PPO를 버리고, Rust를 택하고, 다시 시작하기까지

📅 2026년 3월 ⏱ 읽기 약 12분 ✍ EthiBot
#자동매매 #Rust #Tauri #LLM #KIS API #개발일지 #강화학습

🚀 여기까지 오기까지 - v1부터 v3

EthiBot을 처음 만들기 시작했을 때는 정말 단순했습니다. v1은 Python 콘솔 스크립트 하나로 모의 투자만 돌려보던 시절이었고, v2에서 KIS(한국투자증권) API를 연동해 실전 투자를 시작했습니다. v3에서는 GUI가 추가되면서 제대로 된 데스크톱 앱의 형태를 갖추게 됐죠.

v3까지 완성한 뒤, 수익 로직을 한 단계 끌어올리기 위해 PPO 강화학습을 연구하기 시작했습니다. 딥러닝 모델이 시장을 직접 학습해서 매매 판단을 내린다 - 들으면 멋있죠. 실제로 150개 정밀 테스트 시나리오를 설계하며 꽤 진지하게 밀어붙였습니다.

그리고 솔직히 말씀드리겠습니다. 결과는 기대에 한참 못 미쳤습니다.

💔 솔직한 실패 고백 - PPO의 한계

강화학습은 이론적으로 아름답습니다. 환경에서 행동하고, 보상을 받고, 점점 더 좋은 정책을 학습하는 구조. 하지만 3분봉 데이트레이딩이라는 실전 환경은 이론과 너무 달랐습니다.

부딪힌 문제들

노이즈가 너무 많습니다. 3분봉은 의미 있는 신호보다 무작위 노이즈가 압도적으로 많습니다. 모델은 이 노이즈 패턴을 "학습"해버렸고, 실전에서는 거의 무작위에 가까운 판단을 내렸습니다.

보상 설계가 지옥입니다. "언제 사고 언제 팔면 수익이다"를 수식으로 정의하는 일 자체가 주식 시장의 복잡성을 단순화하는 과정이고, 그 단순화가 모델을 망가뜨렸습니다.

재현성이 없습니다. 같은 데이터로 훈련해도 매번 다른 모델이 나왔고, 어떤 모델이 "좋은" 모델인지 판단하는 것 자체가 불가능에 가까웠습니다.

PPO가 나쁜 알고리즘이라는 게 아닙니다. 단지 제가 풀고자 하는 문제 - 실시간 단기 매매 판단 - 에는 적합한 도구가 아니었습니다. 2개월을 투자했지만, 인정할 건 인정해야 했습니다.

💡 새로운 출발 - v4를 다시 설계하다

실패에서 가장 크게 배운 것은 "복잡한 게 항상 좋은 건 아니다"는 단순한 진리였습니다. PPO를 버리기로 결정하면서, v4의 방향성을 처음부터 다시 잡았습니다.

핵심 방향 전환 3가지

🧠
LLM
PPO 제거
LLM 기반 판단으로
🦀
Rust
Python 단독에서
네이티브 앱으로
📦
단일 EXE
무거운 Python 패키지에서
경량 네이티브 앱으로

왜 LLM인가? GPT-4o, Claude, Gemini 같은 대형 언어 모델은 이미 방대한 금융 지식을 내재하고 있습니다. 기술적 지표 값들을 맥락과 함께 주면, 수익/손실 상황을 이해하고 매매 판단을 내릴 수 있습니다. 강화학습처럼 따로 훈련할 필요가 없고, 판단 근거를 자연어로 설명해주는 부수 효과도 있었습니다.

왜 Rust + Tauri인가? Python GUI의 한계 - 느린 실행, 복잡한 의존성 관리, 불안정한 배포 - 에서 벗어나고 싶었습니다. Rust는 C++ 수준의 성능에 메모리 안전성을 제공하고, Tauri는 웹 기술로 네이티브 앱을 만들 수 있게 해줍니다. 둘을 합치면 가볍고 안정적인 데스크톱 앱이 됩니다.

🔄 4번의 시행착오 - 아키텍처 변천사

"좋은 기술을 택했다"고 해서 처음부터 잘 되는 건 아닙니다. v4 아키텍처를 확정하기까지 4번의 시도가 있었습니다.

1차 시도 - 실패
Python + PyQt5
가장 익숙한 조합으로 시작했습니다. 화면은 만들 수 있었지만, PyQt5의 UI 한계와 디자인 제약이 금방 드러났습니다. 원하는 수준의 모던 UI를 만들 수 없었습니다.
2차 시도 - 실패
pywebview + Svelte
웹 기술(Svelte)로 UI를 만들고 pywebview로 감싸는 방식. UI 품질은 좋았지만 Python 의존성 때문에 배포 패키지가 비대해졌고, 실행 환경 관리도 번거로웠습니다.
3차 시도 - 실패
Tauri + Svelte + Python IPC
Tauri(Rust)가 UI를 담당하고, 기존 Python 로직을 IPC(프로세스 간 통신)로 연결하는 방식. 두 세계를 이어붙이는 IPC 레이어가 너무 복잡했고, 안정성 문제가 계속 발생했습니다. Python과 Rust를 동시에 관리하는 부담도 컸습니다.
4차 시도 - 성공 ✓
Tauri + Svelte + Rust 단일 EXE
Python을 완전히 제거하고 모든 비즈니스 로직을 Rust로 재작성했습니다. IPC 없이 Rust 하나에서 전부 처리하니 구조가 단순해졌고, 가벼운 단일 포터블 EXE가 만들어졌습니다. 이게 v4의 최종 형태입니다.

돌이켜보면 3차 시도의 실패가 가장 아팠습니다. "거의 다 됐다"고 생각했던 시점에서 근본적인 설계 문제를 발견했으니까요. 하지만 그 실패 덕분에 "Python을 완전히 버리자"는 결단을 내릴 수 있었습니다.

✨ 현재 EthiBot v4의 모습

4번의 시도 끝에 완성된 v4는 이런 모습입니다.

기술 스택

Rust Tauri v2 Svelte 5 Tailwind CSS 4 KIS API LLM (GPT / Claude / Gemini)

주요 기능

KIS API 연동 - 실시간 시세, 주문, 잔고 조회를 Rust에서 직접 처리합니다. Paper 매매(가상 매매)와 실전 매매를 분리해 안전하게 전략을 검증할 수 있습니다.

LLM 매매 판단 - RSI, MACD, 볼린저 밴드 등 15개 기술적 지표를 계산한 뒤, LLM에게 현재 시장 상황을 설명하고 매수/매도/홀딩 판단을 요청합니다. GPT-4o, Claude, Gemini 중 선택해서 사용할 수 있습니다.

백테스트 엔진 - 과거 데이터로 전략을 검증하는 자체 백테스트 엔진을 내장했습니다. 자동 리포트 생성까지 한 번에 처리됩니다.

텔레그램 봇 - 매매 체결, 수익/손실, 시스템 경고를 실시간으로 텔레그램 메시지로 받습니다.

🤝 AI와 함께 개발한다는 것

v4 개발에서 가장 달라진 점은 AI와 함께 개발했다는 것입니다. 단순히 "AI에게 코드를 물어보는" 수준이 아니라, 하네스 엔지니어링(Harness Engineering)을 적용해 체계적으로 협업했습니다.

하네스 엔지니어링이란, AI 에이전트가 일관된 규칙과 워크플로우 안에서 동작하도록 규칙 파일, 메모리 시스템, 세션 관리, 코드 리뷰 기준 등을 미리 설계해두는 접근법입니다. 이렇게 하면 AI가 매번 다른 답을 내놓는 대신, 프로젝트의 컨벤션과 맥락을 유지하면서 일관된 품질로 코드를 작성할 수 있게 됩니다.

💡 핵심은 "규칙을 만드는 것" - AI에게 좋은 프롬프트를 던지는 것보다, 프로젝트 전체에 적용되는 규칙 체계를 설계하는 게 훨씬 효과적이었습니다. 워크플로우, 커밋 규칙, 코딩 컨벤션, 테스트 기준까지 문서화해두니 AI가 사람처럼 프로젝트에 적응하는 느낌이었습니다.

물론 AI가 모든 걸 해결해주지는 않습니다. 방향을 잡는 것, 실패를 인정하는 것, 기술 선택의 최종 결정은 여전히 사람의 몫입니다. AI는 그 결정을 더 빠르게 실행하고, 더 많은 경우의 수를 검토하도록 도와주는 도구입니다.

🗺 앞으로의 계획

v4의 기반은 완성됐습니다. 이제는 이 위에서 진짜 성과를 만들어야 할 차례입니다.

단기 - 백테스트 기반 전략 최적화

현재 Grid/Random 탐색으로 전략 파라미터를 찾고 있는데, Walk-Forward 검증으로 과적합을 방지하고, 멀티종목 백테스트로 적용 범위를 넓힐 계획입니다. "백테스트에서 잘 되던 게 실전에서 망한다"는 함정을 피하는 게 핵심입니다.

중기 - 실전 매매 안정화

Paper 매매에서 충분히 검증된 전략을 실전에 적용합니다. 소액으로 시작해서 데이터를 쌓고, 결과를 솔직하게 블로그에 기록할 예정입니다. 수익이 나든 손실이 나든, 숨기지 않고 공유하겠습니다.

장기 - 데이터가 말하게 하기

"이 봇이 실제로 돈을 버는가?" - 이 질문에 답할 수 있는 충분한 데이터를 모으는 것이 목표입니다. 6개월, 1년 단위의 결과가 나와야 비로소 평가할 수 있다고 생각합니다.


실패를 공개하는 게 쉽지는 않았습니다.

PPO 강화학습을 포기하고 처음부터 다시 짠다는 결정은 솔직히 힘들었습니다. 하지만 그 실패가 없었다면 v4도 없었을 것입니다.

앞으로도 이 블로그에는 성공만이 아닌, 실패와 시행착오도 함께 기록하겠습니다. 혼자 자동매매 봇을 만들고 계신 분들께 이 기록이 작은 참고라도 됐으면 합니다.

'EthiBot > 개발일지' 카테고리의 다른 글

EthiBot v3.0 준비중..  (0) 2025.12.30
실전 매매 테스트 첫 날 중간 상황.  (0) 2025.12.01
마지막 모니터링 테스트. (2025.11.28)  (0) 2025.12.01