AI로 주식 자동매매 시스템을 만들어보고 있습니다. - 실시간 삽질하며 느낀 점.
조회 1,524 · 공감 1 · 댓글 2
반 년 정도 전에 시작한건데, 아직도 하는 중인데... 하면서 느낀점과 삽질한 점 등등을 한 번 써보고자 합니다.
1. 시작 - 그까이꺼 그냥 AI한테 '해줘엉~' 하면 되는거 아냐?
처음엔 그냥 데이터 수집하고, LLM으로 분석해서 매수/매도 판단하게 하면 되는건가 싶었는데, 움직임이 뭔가 엉망입니다.
찬찬히 뜯어보니 매번 출력을 조금씩 다르게 하고 있습니다.
조건을 정해줬는데도 엉뚱한 판단 하는 삽질도 물론 있고, 같은 데이터를 가지고 다른 결론을 내기도 하고...
당연히 환각도 존재하고...
일단 고민을 해봅니다.
모든 계층을 세분화해서 나눈다. 그리고 각 계층은 서로 간섭하지 않으며, 모든 파이프라인의 데이터 형식을 맞추면 되겠다.
그리고 AI는 어디까지나 '보조적'으로 격하시킵니다.
대부분은 파이썬으로 돌리고(데이터 수집이나 주문 집행, 안전장치 등등) LLM은 감정 분석이나 기술적 지표 분석, 그리고 위험 평가 등등으로...
일단 모든 역할을 분리했고, AI 모델도 많이 나눴습니다(그와중에 몹쓸 젬민아이....)
토큰비 조금 아껴볼까 싶어서 로컬 LLM으로 감정 분석만 간단하게 해본다던지...
2. AI에게 운영 맡겨보기 - 너 하고 싶은대로 다 해봐.
Decision AI 형태로 구성을 해서 전체 파이프라인 데이터 형식 통일하고, AI 모델이 바뀌더라도 일단 돌아는 가도록 구성을 해봤습니다.
최종적으로는 별도의 Decision Engine을 구성해서 종합하고 평가하도록.
멋지게 말을 붙여보자면... Decision Intelligence system이랄까요 -ㅅ-;;
(AI 모델이 Decision Model은 아니지만...)
나름 학습 모델을 따로 두고, 분석 결과나 신호 가중치를 학습합니다. 실제 의사 결정은 별도의 엔진으로 처리하고, 거기서 나온 결과도 여러 검증 단계를 거치고 학습-반영하는 형태지요.
일단 이리 구성하니 펑크나는 곳은 없어 보입니다. 데이터 형식도 매우 잘 지키고...
문제는... '형식'만 지킵니다.
정해진 형식으로 아주 멀쩡하게 잘못된 판단을 내립니다(....)
원래 각 점수를 낸 뒤 강한 시그널이 발생하면 텔레그램으로 알림이 오게 구성했단 말이죠.

(요렇게 메시지가 옵니다.)
근데 며칠동안 텔레그램 메시지가 안오더군요.
트럼프 이자식 땜에 장 망했나..... 살 때가 아닌가... 뭐지...
근데 보니까 거래 이력은 있는거죠. 거래는 했습니다. 근데 메시지가 안왔어요.
그래서 트레이싱을 해본 결과....
AI 이자식이... 메시지를 안보낸다는 판단을 해놨더군요 -_-;;
'이건 안보내도 됨'
아니 이자식이... 그걸 왜 니가 판단하냐고!
물론, 근본적인 문제는 제 설계긴 합니다.
자유도가 굉장히 높았거든요 -_-;;
(거래가 발생했을 때 반드시 전달해야 할 알림도 AI 판단이 가능....)
지금은 크론으로 무조건 시그널 다시 확인해서 메시지를 보내게끔 해놨습니다. 또 그런 판단 하면 안되니 -_-;
3. AI에게 다 맡기면 벌어질 수 있는 일.
한동안 삽질하며 느낀거는
AI가 정해진 데이터 형식을 잘 지키는 것과, 올바른 판단을 한다는건 전혀 다른 문제라는 것입니다.
요즘은 의사결정에 특화된 AI 모델들도 나오고 있는데, 이것도 영... 못미덥습니다.
선택지를 제한하고, 출력 형식을 강제한다고 해서 판단 자체가 올바르게 되는건 아니잖아요.
100번 물어봐서 100번 동일한 답이 나왔다고 그 답이 정답이 되는건 아니니까요.
(환각+틀린 판단이 100번!)
여튼, 만들다가 보니 또 주문에서 걸리더군요.
예를 들어 AI가 특정 종목을 매수하겠다고 판단했다고 가정해봅시다.
그렇다고 바로 주문을 넣으면 곤란하겠죠.
네... 이자식이 마진 거래를 했습니다 -_-
앞뒤 안가리고 '엇. 아까 계산한 가격이네. 응? 이만큼 살 수 있다고?(잔고 안봄) 담아버리겠다으~' 해버린겁니다.
플젝 룰에 마진 금지 항목이....
그래서 바로 프롬프트 직접 날려서 '아니 마진 어쩔거야. 바로 다 취소해' - '이미 다 체결됐음' - '야이!' - '팔까요?'
...
그래서 팔라고 하고 프롬프트로 한 마디를 던졌더니 '그래도 이익났습니다' 라고.... 한 마디를 안 지더군요.
그래서 또 생각해보니, 주문은 그냥 코드로 제약걸어서 막으면 되겠더군요.
그러다 보니...
이제 또 트레이싱 기능을 열심히 만들고 있습니다.
AI가 내린 판단도 중요하지만, 왜 그런 판단을 내렸는지를 모든 단계에서 다 추적 가능하게.
어떤 데이터를 참고했고, 각 모델에서 어떤 분석 결과가 나왔고, 그 결과들이 어떻게 종합됐으며, 어떻게 검증을 통과했는지.
그리고 그걸로 주문까지 다 됐다면 그 과정까지 추적 가능하도록 구성하고 있습니다.
물론... AI가 왜 그런 판단을 내렸는지는 완벽하게 알 수 있는건 아니지만, 어떤 흐름으로 처리됐는지는 알 수 있게 말이죠.
허나, 최종 결정은 역시 사람이 한 번은 봐줘야 할 것 같은지라...
주문 내기 전 최종으로 메시지 한 번은 더 보냅니다. (기본 값은 허용. 답장 안하면 주문, veto 내면 거부)
중요한 것은 AI에게 모든걸 맡기고 사람이 가끔 확인하는게 아니라, 사람이 미리 정한 범위 안에서만 AI가 움직일 수 있도록 만드는 것이라고 생각합니다.
제가 마지막에 거부할 수 있다는 것도 중요하지만, 제가 거부하지 않더라도 시스템이 위험한 주문을 차단할 수 있어야 합니다.
결국...
제가 만드는건 특정 AI 모델 하나에 의존하는 자동매매 프로그램이라기보다, 여러 모델과 분석 결과를 종합해 의사결정을 수행하고, 그 결정을 검증하고, 실행하고, 평가하는 하나의 시스템에 가깝습니다.
모델은 얼마든지 교체할 수 있습니다.
실제로 여러 종류의 모델을 사용하고 있고, 역할에 따라 적합한 모델도 다르니까요.
이런 시스템을 만들다 보니 AI에 대해서는 확실히 한계를 긋는게 좋을 것 같다는 생각이 듭니다.
AI를 의사결정 보조 도구로 활용하는 것에는 상당히 긍정적입니다.
사람이 검토해야 할 선택지를 줄여주고,
각 선택지를 추천한 근거와 장단점을 정리해주고,
놓치기 쉬운 부분을 찾아주는 것만으로도 엄청난 도움이 되니까요.
다만 최종적인 판단과 책임까지 AI에 넘기는건 다른 이야기라고 생각합니다.
특히 전문적인 판단이 필요한 영역이라면 더더욱 그렇습니다.
AI가 내놓은 선택지가 적절한지, 그 근거는 사실인지, 애초에 검토해야 할 다른 선택지가 없는지...
그걸 판단하는게 전문가의 역할 아닌가 싶습니다.
물론 충분히 검증된 반복적인 판단은 자동화할 수 있겠죠.
제 시스템도 결국 그런 자동화를 목표로 하고 있으니까요.
하지만 어디까지 자동화할 것인지,
어떤 판단을 AI에 맡기고 어떤 판단은 사람이 해야 하는지,
문제가 발생하면 어떻게 대응할 것인지는 사람이 결정해야 한다고 생각합니다.
그런 의미에서 AI가 전문가의 판단을 완전히 대신할 수는 없다고 봅니다.
여튼...
그렇게 하나씩 만들다 보니 이게 주식 자동매매 시스템을 만드는건지,
AI가 사고 치는걸 막는 시스템을 만드는건지 모르겠습니다 -ㅅ-;;;
심지어 이렇게 복잡하게 만든다고 돈을 잘 버는 것도 아닙니다.
매매 전략 자체가 엉망이면 아무리 시스템을 잘 만들어도 결국 손실을 볼테니까요.
4. 결론은...
돈 좀 벌어보고 싶습니다.
댓글 2
그래서 학습을 넣었습니다.
그 당시 상황에 샀다면? 사지 않았다면?
시그널 자체는 맞았는지, 틀렸다면 왜 틀렸는지
대략 근데 반 년치는 학습을 해야 해서...
(과거 데이터로는 승률이 높긴 하지만, 이것도 또 과적합되고 뭐하고 하면 망이라....)
물론... 저 학습이 얼마나 잘 돌아갈지는 모르겠습니다.
그래도 현재 스코어 2등입니다(.... 아무것도 안했다면 1등)