#LLM#퀀트트레이딩#백테스트#자동화

FinRL-X: An AI-Native Modular Infrastructure for Quantitative Trading

👁 0 조회
LLM 차트 판독을 실전 신호로 쓰면 안 되는 이유 — 벤치마크와 실전 사이 간극 핵심 개념을 담은 커버 이미지
LLM 차트 판독을 실전 신호로 쓰면 안 되는 이유 — 벤치마크와 실전 사이 간극 핵심 개념을 담은 커버 이미지

이번 달 arXiv에 올라온 논문 하나를 봤어요. GPT-4 Turbo가 캔들스틱 패턴을 인식하고 BUY·SELL 신호를 내는 과제에서 S&P 500 벤치마크를 앞섰다는 결과였죠. 제 생각엔 저 결과를 실전 자동매매 신호로 곧바로 쓰면 무너질 지점이 세 군데 명확하거든요. 벤치마크가 좋다고 해서 실전 신호가 되는 건 아니에요.

논문은 무엇을 보여줬나요?

AI Trading: Evaluating Large Language Models for Technical Market Analysis(arXiv 2607.15414) 논문은 GPT-4 Turbo와 FinGPT 같은 LLM을 네 가지 퀀트 과제로 평가했어요. 캔들스틱 패턴 인식, 매수·매도 방향성 신호 생성, 백테스트 수익률, 재무보고서 해석이요. GPT-4 Turbo 계열이 연간 수익률과 샤프비율에서 가장 높았고, 도메인 특화 FinGPT도 위험조정 성능에서 경쟁력 있었대요. 둘 다 S&P 500 수동 벤치마크를 앞선 거죠.

저는 이 결과를 보고 "LLM이 기술적 분석을 완전히 대체할 수 있겠네"라고 생각하기보다, 논문 말미에 쓴 한계 섹션부터 찾아봤어요. 거기에 쓴 게 세 가지예요 — 수치 환각(존재하지 않는 값을 생성), 컨텍스트 길이 제한, 횡보장(sideways market)에서 판정 불일치. 이 세 가지가 벤치마크 결과를 실전 신호로 옮길 때 왜 문제가 되는지 하나씩 따져보려고 해요.

수치 환각 — 존재하지 않는 값으로 판정이 바뀌면?

LLM은 문맥에서 그럴듯한 값을 만들어내는 데 탁월하지만, 그게 실제 데이터와 일치하는지는 보장 못 해요. 논문에서도 "수치 환각"을 명시했는데, 이건 차트 판독 과제에선 치명적이에요.

GPT-4에게 "종가가 50일 이동평균보다 높나요?"를 물었을 때, LLM이 종가를 122.45, 이평을 120.3으로 읽으면 "높다"는 신호를 내겠죠. 실제 이평이 123.1이었다면 판정이 뒤집혀요. 백테스트 환경에선 정확한 값을 피드백으로 주니까 괜찮았겠지만, 실전에선 LLM이 생성한 값 자체가 신호의 근거가 되거든요. 중간 값이 틀려도 파이프가 돌아가면 "잘 돌아간다"고 착각하기 쉬운데, 수치 환각은 조용히 신호를 오염시켜요.

컨텍스트 한계 — 긴 시계열을 통째로 못 보면 추세 판정이 흔들려요

GPT-4 Turbo의 컨텍스트 윈도우는 12만 8천 토큰이지만, 차트 데이터를 텍스트로 변환하면 금방 채워져요. 한 종목 200일 데이터만 넣어도 수천 토큰이거든요.

논문에서 "컨텍스트 길이 제한"을 한계로 적은 건 이 때문이에요. LLM이 최근 50일만 보고 "상승 추세"라고 판정했는데, 200일 창으로 보면 하락 추세 중 반등일 수도 있어요. 백테스트 과제에선 평가 구간이 고정되어 있으니 큰 문제가 안 됐겠지만, 실전에선 컨텍스트 경계를 어디에 둘지에 따라 신호가 달라져요. 전통적인 기술적 분석 규칙은 "200일 이평 위면 매수 신호"처럼 명시적인데, LLM은 그 규칙을 설명하는 데는 뛰어나지만 정작 200일 데이터를 전부 넣기 어려우면 판정 자체를 못 내리죠.

횡보장 판정 불일치 — 방향성이 없을 때 LLM은 더 혼란스러워요

논문이 명시한 세 번째 한계는 "sideways market에서 판정 불일치"예요. 횡보장은 뚜렷한 상승·하락 없이 박스권에 갇힌 구간이죠. 이때 LLM은 약한 신호를 과대 해석하거나, 반대로 신호가 없다고 판정을 회피하는 경향이 있어요.

기술적 분석 규칙은 횡보장에서 "박스 상단 매도·하단 매수" 같은 명시적 로직을 쓰잖아요. LLM은 차트 이미지나 텍스트 묘사를 보고 "지금 추세가 약하다"는 정성적 판단은 잘 하지만, 그걸 BUY·SELL·HOLD 중 하나로 일관되게 내리진 못해요. 같은 차트를 조금 다른 프롬프트로 물어봤을 때 판정이 뒤집힌다면, 그건 신호 생성기로 쓰기엔 부적합하죠.

그럼 LLM을 어디에 배치해야 하나요?

벤치마크 결과가 나쁜 게 아니에요. 다만 벤치마크는 평가 환경이 통제된 거고, 실전 신호는 매 순간 생성·검증·실행이 돌아가야 하니까 신뢰성 기준이 다르죠. 백테스트 조건(기간·수수료·슬리피지)이 명시된 환경에서 나온 결과를, 수수료 0.1%만 달라져도 누적 수익률이 뒤집힐 수 있는 실전으로 바로 옮기면 무너져요. 제 생각엔 LLM은 신호 판정기가 아니라 보조 역할에 두는 게 맞아요.

첫째, 가설 생성이요. "최근 패턴이 헤드앤숄더랑 비슷한데, 이걸 규칙으로 짜면 어떨까?"를 물어보면 LLM이 후보 조건을 여러 개 제안해줘요. 둘째, 백테스트 코드 작성이요. "200일 이평 크로스 전략을 Python으로 짜줘"를 시키면 거의 바로 쓸 수준으로 나와요. 셋째, 설명이요. "왜 이 구간에서 신호가 안 나왔어?"를 물으면 규칙 조건을 자연어로 풀어줘서 디버깅이 빨라지거든요.

반대로 신호 판정 자체는 결정론적 규칙이 맡아야 해요. "종가 > 200일 이평 AND RSI < 70"처럼 수식으로 박아두면 수치 환각도 없고, 컨텍스트 제한도 없고, 횡보장에서도 조건에 따라 일관되게 판정이 나와요. FinRL-X(arXiv 2603.21330) 같은 모듈식 아키텍처는 이런 접근을 잘 보여줘요. 데이터 처리·전략 구성·백테스트·브로커 실행을 계층으로 나누고, LLM은 그중 전략 구성 보조 모듈로만 쓰는 거죠.

제 주장은 명확해요. LLM은 차트 판독 신호 생성기로 쓰지 말고, 가설 생성·코드 작성·설명 보조로 배치하라는 거예요. 신호 판정은 결정론적 규칙이 맡아야 하고, 백테스트 결과는 조건을 명시해야 재현 가능하죠. 벤치마크가 좋다고 해서 실전 신호로 쓸 수 있는 건 아니에요. 그 간극을 메우는 건 LLM의 보조 역할과 결정론적 판정 계층의 조합이라고 봐요. 여러분은 LLM을 어디에 배치하시겠어요?

자주 묻는 질문

Q. GPT-4가 벤치마크를 앞섰다면 실전에서도 잘 안 될까요? A. 벤치마크는 평가 구간·수수료·슬리피지가 고정된 환경이에요. 실전은 매 순간 수치 환각·컨텍스트 한계·횡보장 불일치가 누적되기 때문에, 벤치마크 성능이 실전 성능을 보장하진 않아요.

Q. LLM으로 가설만 생성하면 사람이 규칙을 일일이 짜야 하나요? A. LLM이 백테스트 코드까지 작성해주니까, 가설→코드→검증 루프가 빨라져요. 사람은 최종 규칙을 승인하고 조건을 조정하는 역할만 하면 되죠.

Q. 백테스트 조건을 명시한다는 게 구체적으로 뭔가요? A. 평가 기간(예: 2020-01-01 ~ 2023-12-31), 거래 수수료(예: 0.1%), 슬리피지(예: 체결가 대비 0.05%), 리밸런싱 빈도(예: 일별) 같은 조건이요. 이 조건 없이 "수익률 30%"라고만 하면 재현도 검증도 불가능해요.

이 글이 도움이 됐다면 공유해 주세요
X 공유

관련 글