인공지능/랭체인

시스템 트레이딩 시 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의 한계인

  • 최신 정보 부족
  • 긴 문서 처리 한계
  • 사실 오류 생성
    을 보완하며, 시스템 트레이딩과 같은 정밀한 업무에 현실적인 적용 가능성을 높여줍니다.