스스로 거짓말을 잡는 투자 분석 에이전트

26년 07월 08일

데이터는 무료로, 추론은 유료로

이날은 투자 분석 에이전트를 만든 날이다.

데이터랑 수학은 무료인 파이썬으로 돌리고 정성적 추론은 유료인 LLM으로 돌렸다.

그리고 결론을 내린 뒤에, 독립 에이전트가 그 결론을 검증하게 만들었다.

검증 에이전트가 분석 에이전트의 내부적 모순을 스스로 잡아냈다.

투자 분석 파이프라인을 설계했다.

핵심 원칙은 “데이터랑 수학은 파이썬으로, 정성적 추론은 LLM으로”다.

파이썬은 재무 지표를 계산하고 기술적 지표를 구하고 뉴스를 크롤링한다.

전부 무료다.

30초면 끝난다.

LLM은 그 데이터를 바탕으로 추론한다.

펀더멘털 분석, 기술적 분석, 뉴스 분석 에이전트가 각자 결론을 낸다.

여기까지는 유료다.

8분 정도 걸린다.

이 분리가 핵심이다.

데이터 처리에 토큰을 쓸 필요가 없다.

파이썬으로 충분하다.

LLM은 오직 “이게 뭘 의미하는가”에만 쓴다.

결론을 검증하는 에이전트

가장 중요한 건 판단 검토 에이전트였다.

분석 에이전트들이 결론을 내리면, 독립 에이전트가 그 결론을 도전한다.

모순, 과신, 무효화 조건, 맹점을 찾는다.

“이 결론이 뭘 놓치고 있나”를 질문하는 거다.

실제로 모순을 잡았다

삼성전자랑 SK하이닉스를 분석했다.

펀더멘털 에이전트가 “PER 7.0배, EPS 성장률 205.9%“라고 결론을 냈다.

검토 에이전트가 이걸 잡았다.

“PER 7.0배랑 EPS 성장률 205.9%는 양립할 수 없다.” EPS가 그렇게 성장하면 PER가 7.0배일 수 없다.

내부적 모순이었다.

이걸 분석 에이전트 스스로는 못 잡았다.

자기가 낸 숫자니까. 근데 검토 에이전트는 다른 관점에서 봤다.

“이 숫자들이 같이 성립하는가”를 질문한 거다.

자기 검증의 한계

자기 검증은 맹점이 있다.

자기가 낸 결론을 의심하기 어렵다.

그래서 독립 에이전트가 필요하다.

다른 컨텍스트에서, 다른 관점으로, 같은 데이터를 다시 본다.

이건 투자 분석뿐 아니라 모든 에이전트 시스템에 해당한다.

결론을 내린 에이전트와 검증하는 에이전트가 분리되어 있어야 한다.

같은 에이전트가 두 역할을 하면 검증이 형식적이다.

깃 세 점과 두 점

배포 과정에서 깃 범위 지정의 함정을 두 번이나 겪었다.

git log A...B는 세 점이다.

대칭 차이다.

양쪽 중 한쪽에만 있는 커밋을 전부 보여준다.

“B가 추가한 것”이 아니라 “A나 B 중 한쪽에만 있는 것”을 보여주는 거다.

git log A..B는 두 점이다.

B에서 A로 도달할 수 없는 커밋을 보여준다.

“B가 추가한 것”을 정확히 보여준다.

PR 범위를 확인할 때는 두 점이 맞다.

세 점을 쓰면 main 쪽 머지 커밋까지 섞여서 범위가 부풀어진다.

더 헷갈리는 건 git diff는 반대라는 거다.

git diff A...B는 머지 베이스에서 B까지다.

비대칭이다.

git log의 세 점이 대칭인 것과 반대다.

같은 기호가 명령어마다 다른 의미를 갖는다.

“세 점은 대칭”이라고 외우면 diff에서 틀린다.

“기호가 같아도 의미가 다를 수 있다”는 걸 항상 염두에 둬야 한다.

위키로 동료 평가 쓰기

틈틈이 옵시디언 위키를 활용해서 동료 평가를 쓰는 파이프라인도 만들었다.

위키에 과거 협업 기록이 있다.

같이 뭘 했는지, 어떤 문제를 풀었는지. 이걸 먼저 조사한다.

“뭐라고 써야 할까”가 아니라 “실제로 같이 뭘 했나”에서 시작하는 거다.

그 다음에 티켓 번호를 일상 언어로 바꾸고 기술 용어를 반성적 산문으로 바꾼다.

마지막으로 humanize-kr로 AI 티를 뺀다.

이 파이프라인의 핵심은 “위키를 먼저 조사한다”는 거다.

“뭐라고 써야 할까”에서 시작하면 공허해진다.

“실제로 같이 뭘 했나”에서 시작하면 구체적이다.

마무리

내가 이날 배운 핵심은 다음과 같다.

이날의 핵심은 “독립 검증”이었다.

투자 분석에서 결론을 내린 에이전트와 검토하는 에이전트가 분리되어 있었다.

검토 에이전트가 분석 에이전트의 내부적 모순을 잡아냈다.

자기 검증으로는 잡을 수 없는 것이었다.

동료 평가에서도 마찬가지다.

“뭐라고 써야 할까”가 아니라 “실제로 같이 뭘 했나”를 위키에서 먼저 찾는다.

기억에 의존하지 않고 기록에 의존한다.

독립 검증은 “결론을 낸 주체와 검증하는 주체가 다르다”는 거다.

같은 주체가 두 역할을 하면 맹점이 생긴다.

다른 주체가 다른 관점에서 검증해야 맹점이 보인다.