인공지능/랭체인
시스템 트레이딩 시 ChatGPT의 한계와 LangChain 개선
제이브레인
2025. 6. 22. 16:20
🧱 ChatGPT의 한계점 3가지
📚 정보 접근 제한 (학습 데이터 범위 제한)
- ChatGPT는 고정된 시점까지 수집된 데이터로만 학습되었기 때문에,
최신 사건, 뉴스, 기술 변화 등에 대해 정보를 알지 못합니다. - 예: “2025년 6월에 출시된 아이폰 모델 알려줘” → 알 수 없음 (최신 데이터 없음)
🧠 환각 현상 (Hallucination)
- 모델이 실제로 존재하지 않는 정보나 틀린 내용을
그럴듯하게 생성하는 현상입니다. - 예: “피카소의 ‘달빛의 연인’은 어떤 의미인가요?” → 실제로 없는 그림을 만들어내 설명할 수 있음.
🧾 토큰 제한 (Token Limit)
- 대화에 사용할 수 있는 입력 + 출력 텍스트의 총 길이가 제한되어 있음.
(예: GPT-3.5는 약 4,096 토큰, GPT-4-turbo는 최대 128,000 토큰까지 가능) - 긴 문서를 넣거나 복잡한 대화를 이어가다 보면 이전 내용이 잘리거나 요약됨.
🛠 ChatGPT 개량 방식 3가지
1. 🛠 Fine-tuning (파인튜닝)
- 모델 자체를 재학습시켜 특정 목적이나 문체, 업무에 맞춤화.
- 대량의 도메인 특화 데이터를 넣어 모델의 가중치를 직접 수정.
- 예: “보험 상담 전용 챗봇”을 만들기 위해 고객 상담 기록 수만 건을 학습시킴.
2. ✍️ N-shot Learning
- 입력 프롬프트에 **N개의 예시(example)**를 포함시켜 모델이 패턴을 따라 하도록 유도.
- 별도 학습 없이 예시만으로 유연하게 문제 해결 가능.
- 예시 수에 따라 Zero-shot, One-shot, Few-shot 등으로 분류.
- 예:
예시: Q: 파리는 어떤 나라의 수도인가요? A: 프랑스
실제 질문: Q: 베를린은 어떤 나라의 수도인가요? → A: 독일
3. 🧩 In-context Learning (문맥 기반 학습)
- 지금 대화 내에서 제공된 문맥을 바탕으로 적절한 행동을 유도.
- 실제로 모델이 배우는 건 아니지만, 프롬프트 안에서 학습한 것처럼 반응.
- 예
시스템 지시: “당신은 친절한 고객센터 직원입니다.”
사용자 질문: “배송이 언제 오나요?”
→ 모델 답변: “고객님, 배송은 내일 도착 예정입니다!”
📌 시나리오
사용자는 ChatGPT 기반의 주식 자동매매 어드바이저를 만들고자 합니다.
주요 기능은 다음과 같습니다:
- 조건부 매매 로직 생성 (예: 피라미딩 매수 전략)
- 최신 기업 실적/공시 기반 판단
- 과거 데이터 분석
- 사용자 전략 문서에 기반한 판단
❌ 정보 접근 제한 (학습 데이터 범위)
📉 문제
- ChatGPT는 실시간 증시 데이터, 최근 기업 실적 발표, 공시 문서 등을 모르거나 틀릴 수 있음.
- 예시:
- “삼성전자의 2025년 1분기 실적에 따라 매수할까요?”
→ ChatGPT: “죄송합니다. 해당 정보는 알 수 없습니다.”
✅ LangChain 개선 방법: Vectorstore + Retriever
💡 해결 방법
- LangChain을 사용해 공시, 뉴스, 리서치 리포트 등을 벡터로 저장하고 유사도 기반 검색
- 사용자가 문서를 업로드하거나, API로 수집한 후 연결
🔧 적용 예시
docs = load_documents("삼성전자_2025_Q1_실적.pdf")
split_docs = text_splitter.split_documents(docs)
db = FAISS.from_documents(split_docs, embedding)
retriever = db.as_retriever()
# 사용자 질문
query = "삼성전자 2025년 1분기 영업이익이 줄었나요?"
relevant_docs = retriever.get_relevant_documents(query)
❌ 토큰 제한 (Context 길이 제한)
📉 문제
- 100페이지짜리 리서치 보고서, 전략 설명서 등은 ChatGPT에 한 번에 넣을 수 없음.
- 특히, "이 전략 문서의 내용을 기반으로 조건부 매수 로직을 작성해줘"라는 요청에 실패 가능.
✅ LangChain 개선 방법: TextSplitter + Map-Reduce Chain
💡 해결 방법
- 전략 문서를 챕터별/항목별 분할한 후 요약/정리.
- 중요한 부분만 선택하여 LLM에 전달.
🔧 적용 예시
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = text_splitter.split_documents(docs)
# 각 chunk에 요약 실행
chain = load_summarize_chain(llm, chain_type="map_reduce")
summary = chain.run(chunks)
❌ 환각 현상 (Hallucination)
📉 문제
- “이 전략은 RSI가 50 이하일 때만 진입한다고 되어 있어요.”
→ ChatGPT가 없는 내용을 지어내거나, 잘못된 기술 지표 조건을 생성할 수 있음.
✅ LangChain 개선 방법: PromptTemplate로 문서 기반으로만 답변 제한
💡 해결 방법
- LangChain의 프롬프트 템플릿에 명확한 제약 조건 포함:
- “다음 문서 내용을 기반으로만 매매 로직을 생성하세요. 문서에 없는 조건은 사용하지 마세요.”
🔧 적용 예시
prompt = PromptTemplate(
input_variables=["context", "question"],
template="""
아래 문서를 기반으로 질문에 답변하세요.
문서에 없는 정보는 추측하지 말고 "정보 없음"이라고 말하세요.
문서 내용:
{context}
질문:
{question}
"""
)
🧾 요약표
한계점 | 스템 트레이딩 예시 | LangChain 도구 | 개선 방식 |
정보 제한 | “삼성전자 2025년 실적 기반 판단” | Vectorstore, Retriever | 공시/리포트 문서 유사도 검색 |
토큰 제한 | “100페이지 전략 문서를 분석해줘” | TextSplitter, MapReduceChain | 문서 분할 및 요약 처리 |
환각 현상 | “없는 전략 조건을 만들어냄” | PromptTemplate | 문서 기반 응답으로 제한 |
✅ 결론
LangChain은 ChatGPT의 한계인
- 최신 정보 부족
- 긴 문서 처리 한계
- 사실 오류 생성
을 보완하며, 시스템 트레이딩과 같은 정밀한 업무에 현실적인 적용 가능성을 높여줍니다.