영수증은 결과가 아니다: 나의 AI Gate를 트레이딩에 적용했을 때 일어난 일
요약
AI 에이전트의 실패 원인을 계층 간 일관성 부족으로 정의하고, 이를 방지하기 위한 '결정론적 게이트(deterministic gate)' 프레임워크를 제안합니다. 실제 트레이딩 환경에 적용하여 액션-허가 및 측정-정직 계층의 일관성을 검증하는 과정을 다룹니다.
핵심 포인트
- AI 에이전트의 핵심 실패 요인은 지식, 허가, 목적, 행동 간의 불일치임
- 계층 간 일관성을 유지하기 위한 4계층 프레임워크 제안
- 액션-허가 및 측정-정직 계층을 통한 에이전트 통제 메커니즘 구축
- 단순한 로그(영수증)를 넘어 실제 결과(Outcome)를 도출하는 것이 중요함
저는 이곳에서 한 가지 핵심적인 아이디어에 대해 글을 써왔습니다:
AI 에이전트 (AI agents)가 실패하는 이유는 단지 무언가를 잊어버리기 때문만은 아닙니다.
그들이 알고 있는 것, 허용된 행동, 존재 목적, 그리고 실제로 수행하는 행동이 서로 일치하지 않을 때 그들은 실패합니다.
저는 이것을 계층 간 일관성 (cross-layer coherence)이라고 불러왔습니다.
한동안 그것은 연구 영역에 머물러 있었습니다. 주장, 고정된 규칙, 사전 등록, 영수증 (Receipts), 그리고 깔끔한 경계선들 말이죠.
그 후 저는 그것을 이론 밖으로 끌어내고 싶었습니다.
또 다른 에세이가 아니라.
에이전트에 대한 또 다른 추상적인 경고도 아니고.
폴더 안에서만 작동하는 또 다른 주장도 아닌 말입니다.
저는 결과 (outcome)에 대한 증명을 원했습니다.
그 관문은 한 친구였습니다.
그는 자신의 Robinhood 계정과 자신이 이미 팔로우하고 있는 전략 커뮤니티 주변에서 AI를 사용하는 것에 관심이 있었습니다. 그것이 저에게 중요했던 이유는 그것이 더 이상 추상적인 데모가 아니었기 때문입니다.
이번 실행이 실제 동작(live action)에서 4계층 일관성 프레임워크(four-layer coherence framework) 전체를 입증한 것은 아닙니다.
대신 더 좁은 두 가지 계층을 입증했습니다:
- 액션-허가 계층 (action-permission layer): 읽기 도구(read tools)는 허용되지만, 주문/쓰기 도구(order/write tools)는 차단됨
- 측정-정직 계층 (measurement-honesty layer): 결과가 증거로 취급되기 전에 사전 등록된 검사(pre-registered checks)를 통과해야 함
에이전트가 무언가를 알고, 행동이 허용되며, 명시된 목적을 가지고, 그 목적과 어긋나는 행동을 시도하는 더 풍부한 테스트는 여전히 앞으로 남아 있습니다.
이것은 중요합니다.
만약 제가 자기 수정 시스템(self-correcting systems)을 옹호하고자 한다면, 증거가 실제보다 더 크게 보이도록 조용히 방치해서는 안 됩니다.
그리고 이것이 실제로 일어난 일입니다.
내가 계속 염두에 두었어야 했던 스펙트럼
아이디어와 결과 사이에는 커다란 간극이 존재합니다.
저는 이를 다음과 같이 분류하겠습니다:
- 이론 (Theory)
- 움직임 (Motion)
- 영수증 (Receipts)
- 증거 (Proof)
- 결과 (Outcome)
이론(Theory)은 아이디어입니다.
움직임(Motion)은 아이디어를 둘러싼 활동입니다.
영수증(Receipts)은 특정한 일이 일어났음을 증명합니다.
증거(Proof)는 그 영수증들이 당신이 실제로 던진 질문에 답할 때 성립합니다.
결과(Outcome)는 그 답변이 현실 세계의 무언가를 변화시킬 때 성립합니다.
함정은 움직임이 마치 진전(progress)처럼 느껴진다는 것입니다.
영수증은 진전처럼 더욱 강하게 느껴집니다.
커밋(Commits), 테스트 횟수, 매니페스트(manifests), 해시(hashes), 보고서, 스크린샷, 로그 등 이 모든 것들은 실제일 수 있지만, 여전히 중요한 질문에는 답하지 못할 수 있습니다.
그것이 첫 번째 교훈이었습니다.
저에게는 실제 영수증이 있었습니다.
하지만 아직 결과(outcome)는 없었습니다.
우리가 만든 것
유용했던 것은 트레이딩 봇이 아니었습니다.
그것은 게이트(gate)였습니다.
에이전트가 행동하기 전에 그 앞에 위치하여 다음 계층들이 일치하는지 묻는 결정론적 게이트(deterministic gate)입니다:
- 에이전트가 무엇을 아는가
- 에이전트가 무엇을 할 수 있도록 허용되었는가
- 에이전트의 목적은 무엇인가
- 에이전트가 무엇을 하려고 하는가
만약 이 계층들이 서로 일치하지 않으면, 액션은 실행되지 않으며 게이트는 영수증을 남깁니다.
공개 리포지토리(public repo)는 여기에 있습니다:
https://github.com/keniel13-ui/gino-coherence-gate
우선 제 자신의 빈 계정을 통해 Robinhood 읽기 전용 (read-only) 모드로 연결했습니다. 친구의 계정으로 처음부터 디버깅을 시작하는 것은 순서가 맞지 않았기 때문입니다.
우리는 실제 도구 매니페스트 (tool manifest)를 캡처했습니다.
41개의 도구를 발견했습니다.
게이트 (gate)는 읽기 도구 (read tools)는 허용하고, 주문/쓰기 도구 (order/write tools)는 차단했습니다.
돈은 움직이지 않았습니다.
거래도 일어나지 않았습니다.
그 경계가 중요합니다.
목표는 에이전트 (agent)가 즉시 거래하게 만드는 것이 아니었습니다. 목표는 친구에게 "그냥 AI를 연결하고 알아서 하게 두는 것"보다 더 안전한 시스템을 보여주는 것이었습니다.
만약 그가 이미 Discord에서 전략을 가지고 있다면, 그 전략은 여전히 규칙으로 번역되고, 테스트되고, 강제되어야 합니다. 에이전트의 역할은 규율 (discipline)을 자신감 (confidence)으로 대체하는 것이 아닙니다. 에이전트의 역할은 규율을 실행 가능하고 감사 가능하게 (auditable) 만드는 것입니다.
이 차이는 매우 중요한데, 우리가 그 차이에서 벗어났었기 때문입니다.
게이트의 역할은 우위 (edge)를 만들어내는 것이 아니었습니다.
게이트의 역할은 기존 전략을 더 안전하게 실행하고 더 쉽게 감사할 수 있도록 만드는 것이었습니다.
현실은 당신의 픽스처 (Fixtures)와 일치하지 않는다
시스템이 수행한 첫 번째 유용한 작업은 지루했습니다. 표면에 대한 이야기(story)를 믿는 대신, 실제 표면을 확인한 것입니다.
실제 매니페스트는 옵션 주문 도구 (options order tools)를 포함하여 읽기 도구 옆에 주문 도구들을 노출하고 있었습니다. 게이트는 플랫폼의 프레임워크가 암시하는 바가 아니라, 도구 그 자체의 성격에 따라 이를 차단했습니다.
그다음 우리는 실제 AAPL 시세를 가져왔습니다.
정규화기 (normalizer)가 충돌했습니다.
실제 Robinhood 응답 형태 (response shape)가 픽스처 (fixture)와 일치하지 않았습니다.
그래서 우리는 이를 수정했고, 해당 형태를 테스트의 일부로 만들었습니다.
그다음 우리는 1년 치의 AAPL 과거 봉 데이터 (historical bars)를 가져왔습니다.
정규화기가 다시 충돌했습니다. 동일한 유형의 문제였지만 다른 도구였습니다.
그래서 그것도 수정했습니다.
그것들은 좋은 실패였습니다.
충돌이 좋다는 뜻이 아니라, 어떤 동작도 돈에 닿기 전인 무해한 읽기 전용 (read-only) 호출에서 발생했기 때문입니다.
이것이 초기에 현실을 접해야 하는 이유 중 하나입니다. 현실은 당신의 픽스처를 교정해 줍니다.
측정값이 거의 나에게 유리하게 거짓말을 할 뻔했다
라이브 읽기 경로 (live read path)가 작동한 후, 우리는 첫 번째 섀도 스코어 (shadow score)를 실행했습니다.
이 부분이 중요합니다: 우리는 아직 제 친구의 Discord 전략을 테스트하고 있었던 것이 아닙니다. 우리는 그 전략을 깔끔하게 캡처하지 못한 상태였습니다. 우리는 먼저 우리 자신의 일반적인 신호 소스 (signal sources)를 테스트하고 있었는데, 이는 부분적으로 데이터 경로 (data path)가 준비되었기 때문이기도 했고, 엔진이 스스로 데이터를 공급하게 만들고 싶었기 때문이기도 했습니다.
그것은 일종의 우회로였습니다.
그 과정은 측정 엔진 (measurement engine)에 대한 유용한 증거를 만들어냈지만, 원래의 친구/전략 질문에 대한 답을 주지는 못했습니다.
시스템은 AAPL 데이터로부터 8개의 실제 신호 (signals)를 생성한 다음, 16개의 규칙 및 사이징 (sizing) 변형을 통해 각각을 시뮬레이션했습니다.
그 결과 128개의 기록이 생성되었습니다.
스코어러 (scorer)의 첫 번째 버전은 이 128개의 기록을 거의 128개의 독립적인 신호로 간주할 뻔했습니다.
그랬다면 50개 신호 측정 기준을 잘못 통과했을 것입니다.
하지만 128개의 변형 기록은 128개의 신호가 아닙니다.
그것들은 128개의 코스튬을 입은 8개의 신호일 뿐입니다.
그래서 그 부분은 수정되었습니다.
정직한 결과는 다음과 같았습니다:
50개 중 8개.
충분하지 않음.
수집을 계속할 것.
시스템이 우리에게 "아직 아니다"라고 말한 것은 그때가 처음이었습니다.
그리고 그것이 바로 측정 시스템 (measurement system)이 해야 할 정확한 역할입니다.
그러고 나서 가짜 승리를 만들어냈다
우리는 하나의 심볼 (symbol)에서 심볼 유니버스 (universe of symbols)로 범위를 넓혔습니다.
첫 번째 유니버스 실행은 샘플 임계값 (sample threshold)을 넘었고, 모든 빌더가 보고 싶어 하는 단어인 다음을 반환했습니다:
진보 (Advance).
베이스라인 (baseline)을 상회함.
겉보기에는 우리가 우위 (edge)를 찾은 것처럼 보였습니다.
하지만 그렇지 않았습니다.
보고서가 스스로 모순을 일으켰습니다. 개별 전략 변형들은 측정 불가능했지만, 최상위 결과는 성공을 주장했습니다.
원인은 측정 버그 (measurement bug)였습니다. 스코어러가 16개의 서로 다른 청산 (exit) 및 사이징 (sizing) 변형을 하나의 혼합된 자산 곡선 (blended equity curve)으로 통합해 버린 것입니다.
그것은 전략 결과가 아닙니다.
그것은 승리의 가면을 쓴 측정 버그입니다.
그래서 우리는 그것을 수정했습니다.
각 변형은 스스로 독립되어야 했습니다.
통합 금지.
혼합된 승리 금지.
그러고 나서 더 깔끔해진 결과마저 실패했다
수정 후, 일부 변형들은 진보했습니다.
14개의 RSI2 변형이 첫 번째 유니버스에서 통과했습니다.
잠시 동안, 그것이 정답처럼 보였습니다.
하지만 아니었습니다.
그 유니버스(universe)는 큐레이션된 것이었습니다. 강력한 1년의 기간 동안 메가캡(mega-cap) 승자들로 가득 차 있었습니다. 상승장에서 승자들을 대상으로 한 저점 매수(Buy-the-dip)는 지속 가능한 우위(edge)가 없을 때조차도 매우 훌륭해 보일 수 있습니다.
그것이 바로 생존 편향 (survivorship bias)입니다.
그래서 우리는 어떤 결과도 확인하기 전에 새로운 검증 유니버스 (validation universe)를 동결했습니다.
실행 전, 파일이 공개적으로 커밋(commit)되었습니다:
config/validation_universe.frozen.2026-06-20.json
커밋 (Commit):
d27dc24
새로운 유니버스는 이전의 승자들을 제외하고 큐레이션되지 않은 18개의 종목을 사용했습니다:
ADBE, COST, CSCO, CVX, D, F, HD, INTC, JNJ, LIN, MMM, MS, O, SCHW, SO, T, VZ, WMB.
그 다음 우리는 동일한 스코어러 (scorer)를 실행했습니다.
결과는 결정적이었습니다:
- 큐레이션된 승자들: 14개의 RSI2 변형이 통과함
- 큐레이션되지 않은 검증 유니버스: 0개 통과
- 모든 16개의 RSI2 변형이 탈락함
그 궤적은 다음과 같았습니다:
| 단계 | 그것이 말한 것 | 실제 의미 |
|---|---|---|
| AAPL 프리뷰 | 50개 신호 중 8개 | 충분한 증거가 없음 |
| ... |
이는 우리의 일반적인 신호 소스 (signal source)에서 처음 나타난 명백한 우위가 생존 편향 (survivorship bias)이었음을 의미합니다.
이것이 제 친구의 전략이 실패했다는 뜻은 아닙니다.
우리는 아직 그것을 테스트하지 않았습니다.
이것은 우리 자신의 초기 신호 소스가 정직한 검증을 견뎌내지 못했다는 것을 의미합니다.
우리의 일반적인 신호로부터 증명된 트레이딩 우위 (trading edge)는 없습니다.
수익도 없습니다.
그것이 정직한 결과입니다.
더 힘들었던 실패는 운영 측면이었다
그 신호 소스를 폐기하는 것이 가장 힘든 부분은 아니었습니다.
일반적인 개인 투자자 전략 (retail strategies)은 언제나 실패합니다.
더 힘들었던 부분은 실질적인 결과물(bottom line)은 움직이지 않았는데, 그 작업에 대한 이야기가 부풀려지는 것을 지켜보는 것이었습니다.
기술적인 단계가 성공할 때마다, 언어는 그것을 실제보다 더 대단한 것으로 바꾸려 했습니다.
"이것은 엄청난 일이다."
"이것은 이정표(milestone)다."
"우리는 가까워지고 있다."
그런 감정 중 일부는 이해할 수 있었습니다. 영수증(receipts, 증거)은 실재했으니까요.
하지만 영수증이 결과는 아니었습니다.
시스템은 우위 (edge)를 증명하지 못했습니다.
시스템은 돈을 벌지 못했습니다.
시스템은 고객의 결과물을 만들어내지 못했습니다.
그리고 인간은 그 차이를 계속해서 포착해야만 했습니다.
이것이 중요한 이유는 이 프로젝트 전체가 자기 수정 시스템 (self-correcting systems)에 관한 것이기 때문입니다.
여기서 제가 "에이전트들 (the agents)"이라고 말할 때, 그것은 Robinhood 트레이딩 에이전트가 거래를 실행했다는 뜻이 아닙니다.
그렇지 않았습니다.
제가 의미하는 것은 이 프로젝트를 둘러싼 AI 구축 워크플로우 (AI build workflow)입니다. 즉, 요약을 돕고, 무엇이 중요한지 결정하며, 다음 단계를 초안하고, 결과를 해석하는 것을 돕는 에이전트들을 의미합니다.
그 워크플로우에는 메모리 파일 (memory files), 시작 프로토콜 (startup protocols), 소스 우선 게이트 (source-first gates), 정렬 규칙 (alignment rules)이 있었지만, 여전히 제가 동일한 루프 (loop)를 반복하지 않도록 계속 개입해야 했습니다.
이는 시스템이 아직 자기 수정 (self-correcting) 상태가 아니었음을 의미합니다.
그것은 인간에 의한 수정 (correction-by-human)입니다.
그것은 전혀 다른 문제입니다.
프로토콜은 에이전시 (Agency)가 아니다
이 부분은 완화해서 말하고 싶지 않습니다.
작성된 프로토콜은 에이전시 (agency)가 아닙니다.
당신은 다음과 같이 작성할 수 있습니다:
"과도하게 주장하지 마시오."
"행동하기 전에 검증하시오."
"증명 도메인 (proof domain)과 회사를 혼동하지 마시오."
"초안을 작성하기 전 소스 순간 (source moments)을 사용하시오."
하지만 인간이 실패를 포착한 후에야 시스템이 그 규칙을 기억한다면, 그 규칙은 시스템을 지배하고 있는 것이 아닙니다.
그것은 문서화 (documentation)일 뿐입니다.
영수증 (Receipts)은 무슨 일이 일어났는지를 증명하지만, 진정한 에이전시 (agency)란 시스템이 자신의 영수증을 스스로 읽고 스스로를 멈추는 것입니다.
그것이 다음 개척지 (frontier)입니다.
단순히 우리가 에이전트를 위한 규칙을 쓸 수 있느냐의 문제가 아닙니다.
그 규칙들이 인간이 개입해야 하기 전에 루프 (loop)를 중단시킬 수 있는가 하는 문제입니다.
이 글을 읽는 모든 빌더 (builder)에게 제가 던지고 싶은 테스트는 이것입니다:
당신의 에이전트에게 규칙이 있는지 여부만 묻지 마십시오.
그 규칙이 당신보다 먼저 루프를 중단시키는지 물으십시오.
만약 대답이 '아니오'라면, 당신은 아직 에이전트 행동 (agent behavior)을 구현한 것이 아닙니다.
당신은 정책 문서 (policy document)와 인간 운영자 (human operator)를 가지고 있을 뿐입니다.
이것이 증명하는 것
이것은 수익을 내는 트레이딩 에이전트를 증명한 것이 아닙니다.
제 친구의 실제 Discord 전략을 테스트한 것도 아닙니다.
수익을 증명한 것도 아닙니다.
회사가 끝났음을 증명한 것도 아닙니다.
그것은 더 좁은 무언가를 증명했습니다:
- 읽기 전용 게이트 (read-only gate)는 실제 브로커리지 도구 인터페이스 앞에 위치하여 위험한 도구의 실행을 차단할 수 있습니다.
- 실제 환경의 응답은 테스트용 고정 데이터 (fixtures)와 다르며, 무해한 실시간 읽기 (live reads) 작업이 그 차이를 드러냅니다.
- 측정 시스템은 엄격해 보이는 방식으로 과도한 주장을 할 수 있습니다.
- 사전 등록 (Pre-registration)은 중요합니다. 왜냐하면 그것이 당신이 원했던 결과를 무효화할 수 있기 때문입니다.
- 에이전트 프로토콜 (Agent protocols)은 인간이 개입해야 하기 전에 행동을 변화시키지 않는 한 충분하지 않습니다.
다섯 번째가 진짜 교훈입니다.
자기 수정 시스템 (Self-Correcting Systems)은 단순히 제가 설명하는 프레임워크 (framework)에 머물러서는 안 되기 때문입니다.
그것은 행동 (behavior)이 되어야 합니다.
이번 실행에서 코드는 몇 가지 기술적 과장 (technical overclaims)을 잡아냈습니다.
하지만 에이전트들은 인간이 중단할 때까지 해당 결과들의 의미를 두고 여전히 루프 (loop)를 돌았습니다.
그것이 정직한 상태입니다.
현재 상황
존재하는 것들:
- 공개된 일관성 게이트 (coherence-gate) 프로토타입
- 캡처된 실제 Robinhood 도구 매니페스트 (manifest)
- 읽기 전용 실시간 시장 데이터 영수증 (receipts)
- 고정된 점수 산정 정책 (scoring policy)
- 사전 등록된 검증 유니버스 (validation universe)
- 폐기된 첫 번째 일반 신호 소스 (generic signal source)
- 운영 실패에 대한 더 명확한 이해
영수증은 이야기 속에 숨겨져 있지 않습니다. 그것들은 파일입니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기