
주식 투자 도우미를 만들었는데, AI 자기개선 실험이 되었다
StockPulse v1 회고 — 예측하는 AI에서, 스스로 고치는 AI로
StockPulse를 처음 만들 때는 거창한 AI 실험을 하려던 것이 아니었다.
주식 투자를 하다 보면 매일 비슷한 정보를 반복해서 확인하게 된다. 시장이 강한지 약한지, 관심 종목이 갑자기 움직이지는 않았는지, 뉴스 분위기는 어떤지, 기술적 지표는 어디쯤 와 있는지 살펴본다.
그렇다면 필요한 데이터를 자동으로 모으고, 매일 아침 하나의 리포트로 만들어주면 어떨까?
그 생각에서 StockPulse가 시작됐다.
처음 StockPulse는 실험이라기보다 개인용 투자 보조 시스템의 PoC에 가까웠다.
머신러닝으로 시장과 종목의 움직임을 분석하고 예측하고, LLM은 수집된 시장 데이터와 뉴스, 여러 지표를 읽어 판단을 내리도록 했다. 여기에 정해진 시간마다 정보를 보내주는 Telegram 봇도 붙였다.
목표는 단순했다.
매일 시장을 확인하는 데 드는 시간과 노력을 조금이라도 줄여보자.
매일 아침 시장을 대신 읽어주는 시스템
StockPulse에는 몇 가지 기능을 넣었다.
아침에는 시장 상황과 관심 종목을 정리한 브리핑을 만들었다.
장중에는 지정한 종목에서 급등이나 급락이 발생하면 Telegram으로 알림을 보냈다.
뉴스를 수집해 감성 분석을 하고, 시장의 위험 선호를 한눈에 보기 위한 자체적인 시장 심리 지표도 계산했다.
예를 들어 2026년 8월 27일에는 이런 형태의 브리핑이 생성됐다.
📊 시장 심리 + 수급 (2026-08-27)
🟡 공포/탐욕 지수: 57/100 (중립)
💡 관망 또는 선별 매수
KOSPI 6,808.21 (+0.97%)
KOSDAQ 826.87 (이격도 3.28%)
모멘텀 [███████░░░] 74
변동성 [███░░░░░░░] 30
투자심리 [███████░░░] 70
이격도 [████████░░] 80
거래량 [██░░░░░░░░] 29
고저비율 [█████░░░░░] 50
그 아래에는 관심 종목별 분석과 수급 정보가 이어졌다.
하나씩 떼어놓고 보면 특별히 새로운 기술은 아니다.
기술적 지표도 이미 있고, 뉴스 감성 분석도 흔하다. 머신러닝을 이용한 주가 예측 역시 오래된 주제다.
StockPulse에서 해보고 싶었던 것은 각각의 기능을 새롭게 발명하는 것보다 이 모든 것을 하루의 흐름 안에서 하나의 자동화된 시스템으로 연결하는 것이었다.
데이터를 모으고,
ML이 계산하고,
LLM이 판단하고,
사람이 읽을 수 있는 리포트로 만들고,
필요한 정보는 Telegram으로 알려준다.
시스템 자체는 꽤 그럴듯하게 돌아갔다.
그리고 한동안 실제로 사용했다.
문제는 그다음이었다.
그런데 실제 투자에는 별로 도움이 되지 않았다
처음에는 꽤 재미있었다.
아침마다 자동으로 리포트가 오고, 관심 종목에 움직임이 생기면 Telegram에서 알려준다.
내가 만든 시스템이 실제 시장 데이터를 받아 매일 판단하고 있다는 것 자체도 재미있었다.
하지만 StockPulse를 개발 결과물이 아니라 실제 투자 보조 도구로 사용하려고 하자 가장 중요한 문제가 드러났다.
예측 정확도가 너무 낮았다.
리포트가 그럴듯한 것과 실제 투자에 유용한 것은 전혀 다른 문제였다.
LLM은 시장 상황을 꽤 자연스럽게 설명했다. 상승할 이유도 설명했고, 하락할 이유도 설명했다. 여러 지표와 뉴스를 연결해서 읽는 능력도 나쁘지 않았다.
ML 역시 데이터를 기반으로 방향을 계산했다.
하지만 결국 중요한 질문은 하나였다.
그래서 실제 시장을 얼마나 잘 맞혔는가?
여기에 답하기 위해 아침의 예측과 실제 결과를 비교해 기록하기 시작했다.
v1 종료 시점에 남아 있는 평가 데이터 기준으로, LLM morning 예측은 평가가 끝난 26건 가운데 10건이 성공으로 판정됐고, ML은 24건 가운데 6건이었다.
각각 약 38.46%와 25.00%다.
다만 이 숫자는 투자 수익률도 아니고, 일반화된 주가 예측 성능을 의미하는 것도 아니다. StockPulse v1에서 사용한 자체적인 예측·평가 규칙에 따라 계산된 결과다.
표본도 충분히 길지 않았고, 중간에 평가 방식과 개선 규칙도 달라졌다.
그래도 한 가지는 분명했다.
당시의 StockPulse를 실제 투자 판단에 신뢰할 수준은 아니었다.
세부 실험 과정과 일별 결과는 StockPulse AI 자기개선 실험에 별도로 남겨두었다.
그리고 이 결과 때문에 프로젝트의 질문 자체가 바뀌었다.
그러면 AI에게 자기 실패를 보여주면 어떨까?
원래 StockPulse의 질문은 이것이었다.
AI와 머신러닝을 이용하면 개인 투자에 도움이 되는 시스템을 만들 수 있을까?
하지만 시스템을 실제로 사용하고 예측 결과를 확인하면서 질문이 달라졌다.
AI에게 자신의 예측과 실제 결과를 계속 보여주면, 스스로 예측 방법을 개선할 수 있을까?
머신러닝 모델이 계속 틀린다면 데이터나 학습 방법을 다시 조정할 수 있다.
LLM이 잘못 판단했다면 어떤 판단 때문에 틀렸는지 분석하게 하고, 다음에는 같은 실수를 반복하지 않도록 판단 규칙을 바꾸게 할 수도 있다.
그렇다면 사람이 매번 결과를 보고 직접 튜닝하지 않아도 되지 않을까?
AI가 시장 데이터를 보고,
예측하고,
실제 결과를 확인하고,
자신이 왜 틀렸는지 분석하고,
다음 예측 방법을 스스로 수정하게 만드는 것이다.
이때부터 StockPulse는 개인용 투자 도우미에서 AI 자기개선 실험으로 성격이 바뀌었다.
예측하고, 틀리고, 반성하고, 다시 바꾼다
StockPulse의 자기개선 구조는 비교적 단순했다.
아침에는 ML과 LLM이 시장을 예측한다.
결과가 나온 뒤에는 실제 시장과 예측을 비교한다.
예측이 빗나갔다면 LLM에게 실패 원인을 분석하게 한다.
어떤 데이터를 지나치게 중요하게 봤는지, 어떤 신호를 놓쳤는지, 판단 과정에서 어떤 문제가 있었는지를 다시 살펴본다.
그리고 그 결과를 바탕으로 LLM의 판단 규칙을 수정하고, ML 쪽에도 파라미터나 피처 변경안을 전달할 수 있는 구조를 만들었다.
즉,
예측 → 평가 → 실패 분석 → 수정 → 다시 예측
이라는 피드백 루프였다.
처음에는 꽤 기대했다.
LLM이 잘하는 일 중 하나가 이미 벌어진 결과를 보고 문제점을 설명하는 것이기 때문이다.
예측이 틀린 이유를 분석하게 하면 상당히 그럴듯한 답이 나온다.
최근 가격 모멘텀을 지나치게 반영했다거나,
시장의 위험 선호 변화를 충분히 고려하지 않았다거나,
단기 급락 뒤 기술적 반등 가능성을 낮게 평가했다는 식이다.
그 분석을 읽고 있으면 정말 다음에는 더 잘할 것 같은 느낌이 든다.
그런데 실제 시장은 그렇게 간단하지 않았다.

AI는 자신의 실패를 꽤 잘 설명했다
StockPulse를 운영하면서 가장 흥미로웠던 부분 중 하나였다.
LLM은 자신이 틀린 이유를 꽤 설득력 있게 설명했다.
놓친 신호를 찾고, 다음에는 무엇을 더 중요하게 봐야 할지 제안하고, 판단 규칙을 수정했다.
그런데 다음 날에는 전혀 다른 시장이 나타났다.
전날의 하락을 보고 하락 가능성을 높였는데 갑자기 강한 반등이 나오기도 했다.
반대로 반등 가능성을 높게 평가했는데 시장이 다시 무너지기도 했다.
어제의 실패에서 배워 추가한 규칙이 오늘은 새로운 편향이 될 수도 있었다.
시장에서는 비슷해 보이는 상황도 같은 문제라고 할 수 없었다.
그리고 v1을 종료하면서 전체 시스템을 다시 감사해보니 더 근본적인 문제도 발견했다.
“개선안을 만들었다”와 “실제로 개선됐다”는 전혀 다른 일이었다
당시에는 실패 분석 결과를 다음 시스템에 전달할 수 있는 구조를 만들었기 때문에 이를 자기개선 루프라고 생각했다.
그런데 v1을 정리하면서 실제 코드와 실행 기록을 다시 확인하자 재미있는 사실이 하나 드러났다.
ML 개선 과정에서는 학습 파라미터를 바꾸기 위한 override가 기록되고 있었다.
하지만 일부 파라미터 이름이 실제 학습 코드에서 받아들이는 이름과 맞지 않았다.
결과적으로 시스템에는 “이렇게 변경하겠다”는 개선 기록이 남아 있었지만 실제 학습 과정에서는 그 변경이 무시되고 있었다.
시스템이 개선안을 제안했다는 것과,
그 개선안이 실제 적용됐다는 것,
그리고 적용 후 성능이 좋아졌다는 것은 모두 다른 일이었다.
당연한 이야기처럼 들린다.
하지만 자동화된 시스템 안에서는 이 세 가지가 생각보다 쉽게 하나로 뭉개졌다.
StockPulse v1에서 가장 크게 얻은 교훈 중 하나였다.
Proposal ≠ Applied ≠ Improved.
제안했다는 기록만으로 자기개선이 일어났다고 말할 수 없었다.
자동화가 많이 돌아간다고 좋은 실험이 되는 것도 아니었다
v1을 다시 감사하면서 운영 성공과 실험 성공도 구분해야 한다는 것을 확인했다.
어떤 날에는 일부 수급 데이터가 들어오지 않았고, LSTM은 필요한 시퀀스가 부족해 학습에서 제외되기도 했다. 그런데 다른 단계가 계속 실행되면 전체 pipeline 자체는 완료될 수 있었다.
즉,
“오늘 자동화가 정상 종료됐다”
와
“오늘의 예측이 정상적인 데이터와 동일한 모델 조건에서 만들어졌다”
는 같은 말이 아니었다.
또 개별 종목 단위의 예측은 1,000개 row까지 쌓였지만, 이 경로의 후속 평가 루프는 완성되지 않았다.
숫자만 보면 많은 실험을 한 것처럼 보이지만, 실제 결과와 비교하지 않았다면 예측 기록일 뿐 검증된 실험 데이터는 아니다.
여기에서도 같은 결론이 남았다.
생성했다 ≠ 측정했다.
그리고
측정했다 ≠ 검증했다.
자동화가 많은 결과물을 만들어내는 것과 좋은 실험을 하는 것은 전혀 다른 문제였다.
자기수정과 자기개선은 같은 것이 아니었다
처음 자기개선 기능을 생각했을 때는 비교적 단순하게 생각했다.
틀린 결과가 있으면 AI에게 알려준다.
AI가 실패 원인을 분석한다.
다음에는 같은 실수를 피하도록 규칙을 바꾼다.
이 과정을 계속 반복하면 점점 좋아질 것이다.
얼핏 사람이 공부하고 경험을 쌓는 과정과도 비슷해 보인다.
하지만 실제로 돌려보니 그 사이에는 꽤 큰 간격이 있었다.
우선 실패의 원인을 정확히 아는 것부터 어렵다.
주가가 예상과 반대로 움직였다고 해서 어떤 하나의 판단이 잘못됐다고 말하기 어렵다.
뉴스 때문일 수도 있고,
수급 때문일 수도 있고,
거시경제 변수 때문일 수도 있다.
분석 시점에는 존재하지 않았던 새로운 사건이 발생했을 수도 있다.
무엇보다 결과를 이미 알고 난 뒤에는 그럴듯한 이유를 만드는 것이 훨씬 쉽다.
LLM이 만들어낸 훌륭한 실패 분석이 정말 원인을 찾아낸 것인지, 아니면 결과에 맞춰 만든 그럴듯한 사후 설명인지 구분하기 어렵다.
또 하나는 어제의 교훈이 그대로 내일의 규칙이 되지 않는다는 것이었다.
어떤 날에는 모멘텀을 강하게 반영하는 것이 맞을 수 있다.
하지만 다른 날에는 과도한 모멘텀 추종 때문에 반등을 놓칠 수 있다.
변동성이 높은 시장과 안정적인 시장에서 같은 판단 규칙을 적용하기도 어렵다.
실패할 때마다 새로운 규칙을 추가하면 시스템이 똑똑해지는 것이 아니라 그저 복잡해질 가능성도 있다.
그리고 가장 어려운 문제는 따로 있었다.
정말 개선되고 있는지를 누가 판단할 것인가?
몇 번 연속으로 예측에 성공했다고 시스템이 개선됐다고 말할 수 있을까?
시장 환경이 우연히 모델에 잘 맞았을 수도 있다.
반대로 몇 번 실패했다고 직전에 적용한 개선이 잘못됐다고 단정하기도 어렵다.
결국 AI에게 자기개선을 시키려면 그보다 한 단계 위에서 이런 질문에 답할 방법이 필요했다.
이 변화가 정말 개선인가?
단기 데모가 아니라 실제 기록이 쌓였다
StockPulse를 며칠 돌려보고 결론을 낸 것은 아니다.
v1을 운영하는 동안 Daily Report 68개가 만들어졌다.
예측과 평가를 위한 raw 기록도 쌓였고, 자기개선 과정을 기록한 Daily Lab Note 26개와 Weekly Lab Note 1개가 남았다.
현재 이 기록은 StockPulse v1의 historical asset으로 보존하고 있다.
매일 생성된 시장 리포트는 별도의 StockPulse archive에 남기고,
DevSnack의 StockPulse는 그 기록으로 연결되는 gateway 역할을 한다.
자기개선 과정과 주요 실험 결과는 StockPulse AI 자기개선 실험에 남겼다.
처음에는 매일 읽는 리포트가 가장 중요한 결과물이라고 생각했다.
하지만 실험이 진행될수록 더 흥미로운 것은 그 뒤에 쌓이는 기록이었다.
AI가 무엇을 예측했고,
왜 틀렸다고 판단했고,
자신을 어떻게 바꾸려고 했고,
그 변화가 실제 시스템에 적용됐는지,
그리고 적용됐다면 실제 성능은 어떻게 변했는가.
StockPulse에서 가치가 있는 것은 어느 날의 주가 전망 하나가 아니라, AI가 자신의 실패를 어떻게 다루는지를 관찰할 수 있는 연속된 기록이었을지도 모른다.
실패한 프로젝트였을까?
투자 도구라는 기준만 놓고 보면 만족스러운 결과는 아니었다.
실제 투자 판단을 맡길 만큼 높은 정확도를 얻지 못했고, 자동으로 생성되는 분석 역시 그것만 보고 매매 결정을 할 수준은 아니었다.
하지만 그렇다고 StockPulse가 의미 없는 프로젝트였다고 생각하지는 않는다.
오히려 투자 도구로 만들 때보다 실험으로 방향을 바꾼 뒤 훨씬 재미있는 질문을 발견했다.
처음에는 주가를 더 잘 맞히는 것이 문제라고 생각했다.
실제로 시스템을 돌려보니 더 큰 문제가 보였다.
AI가 자신의 결과를 보고 스스로 좋아지게 만들려면 무엇이 필요한가?
StockPulse v1에서 얻은 답은 적어도 하나 있다.
피드백 루프가 존재한다고 해서 성능 향상이 보장되지는 않는다.
AI가 자신의 실패를 읽을 수 있고,
실패 이유를 설명할 수 있고,
자신의 판단 규칙을 수정할 수 있고,
머신러닝의 파라미터와 피처 변경까지 제안할 수 있다고 해도,
그것만으로 다음 판단이 더 정확해지는 것은 아니었다.
StockPulse는 스스로 고치려고 시도하는 시스템까지는 만들었다.
하지만 스스로 더 똑똑해지는 시스템까지 갔다고 말하기는 어려웠다.
그 차이가 생각보다 컸다.
StockPulse v1은 여기서 끝낸다
StockPulse v1의 기존 자동 운영 파이프라인은 종료했다.
그동안 만들어진 코드와 리포트, 예측 기록, Lab Note, 개선 기록은 삭제하지 않고 historical archive로 보존한다.
매일 생성된 리포트는 당시 시스템이 무엇을 판단했는지를 보여주는 기록으로,
prediction과 evaluation raw는 실험 데이터로,
Daily·Weekly Lab Note는 AI가 자신을 어떻게 수정하려고 했는지를 보여주는 기록으로 남긴다.
그리고 DevSnack에는 그 과정에서 확인한 핵심 Finding과 이 회고를 남긴다.
기존 StockPulse AI 자기개선 실험은 v1으로 완료 처리했다.
다음 실험은 이 시스템을 그대로 이어서 고치는 방식으로만 진행하지 않을 예정이다.
v1의 코드는 v1 그대로 보존한다.
그리고 v1에서 의도했던 자기개선 구조를 제대로 동작하도록 수정한 버전과, v1에서 얻은 교훈을 바탕으로 자기개선 방식 자체를 다시 설계한 v2를 병행해 비교하려고 한다.
다음에는 “고쳤다”가 아니라 “좋아졌다”를 확인해보려고 한다
StockPulse의 다음 실험에서는 두 경로를 함께 돌려볼 예정이다.

하나는 v1 Fix다.
v1에서 의도했던 자기개선 구조는 유지하되, 감사 과정에서 확인된 실제 적용 누락과 평가 경계, 데이터 품질 기록 문제를 바로잡는다.
다른 하나는 새로운 v2 구조다.
개선안을 바로 기존 시스템에 덮어쓰는 대신 baseline과 candidate를 나누고, 같은 조건에서 일정 기간 비교한 뒤 실제 개선 여부를 판단하는 방식이다.
가능한 한 같은 데이터와 같은 평가 조건을 사용하고, 같은 AI가 두 시스템을 관리하게 한다.
한쪽에서는 “v1의 아이디어를 제대로 구현했다면 어땠을까?”를 확인하고,
다른 한쪽에서는 “자기개선 구조 자체를 다시 설계하면 더 나아질까?”를 확인한다.
이번에는 변경할 때마다 바로 “개선됐다”고 선언하지 않을 생각이다.
무엇을 바꾸겠다고 제안했는지,
그 변경이 실제로 적용됐는지,
같은 조건에서 기존 방식보다 더 나은 결과를 냈는지,
충분한 결과가 쌓인 뒤에도 그 차이가 유지되는지를 따로 기록한다.
어쩌면 v1의 아이디어가 틀린 것이 아니었을 수도 있다.
구현과 검증이 충분하지 않았던 것이 더 큰 문제였을 수도 있다.
반대로 v1 Fix를 제대로 돌려도 결과가 달라지지 않는다면, 자기개선 방식 자체의 한계를 더 분명하게 볼 수 있을 것이다.
이번에는 그 둘을 구분해보고 싶다.
StockPulse의 다음 질문은 그래서 조금 달라졌다.
AI가 자신을 수정했다는 것과 실제로 개선됐다는 것을 어떻게 구분할 수 있을까?
결국 StockPulse에서 재미있었던 것은 예측보다 그 이후였다
처음에는 내가 매일 사용할 투자 도우미를 만들려고 했다.
그 시스템은 실제로 만들어졌다.
아침마다 리포트를 만들었고,
종목을 감시했고,
시장 심리를 계산했고,
ML과 LLM은 각자의 방법으로 시장을 예측했다.
하지만 직접 사용해보니 생각만큼 도움이 되지 않았다.
그래서 실패한 예측을 AI에게 다시 돌려줬다.
그리고 AI에게 스스로 고쳐보라고 했다.
그 과정에서 StockPulse는 주식 예측 프로젝트에서 AI 자기개선 프로젝트로 바뀌었다.
아직 AI가 스스로 더 똑똑해졌다고 말할 수는 없다.
대신 한 가지는 꽤 확실하게 알게 됐다.
AI에게 결과를 보여주고 반성하게 만드는 것은 쉽다.
그 반성이 실제 능력 향상으로 이어지게 만드는 것은 훨씬 어렵다.
어쩌면 StockPulse에서 가장 흥미로운 데이터는 내일 주가가 오를지 내릴지를 예측한 숫자가 아니었는지도 모른다.
AI가 자신의 실패를 어떻게 이해하고,
그 결과로 자신을 어떻게 바꾸려고 하고,
그 변화가 실제 시스템에 적용되는지,
그리고 그것이 정말 성능 향상으로 이어지는지.
그 과정을 계속 기록할 수 있게 된 것.
그게 StockPulse v1에서 얻은 가장 큰 결과였다.
StockPulse v1은 여기까지다.
다음에는 스스로 고치는 AI가 정말 스스로 좋아질 수 있는지를 조금 더 제대로 실험해보려고 한다.