본문 바로가기
인공지능

챗봇 기반 투자 자문 시스템- LLM + Chat UI + API 연결

by aiproductmanager 2025. 6. 7.
728x90
반응형
 
 

**📌 "챗봇 기반 투자 자문 시스템"**은 최근 급부상한 LLM(Large Language Model)을 활용하여 사용자에게 실시간 금융 조언을 제공하는 시스템입니다.

이 시스템은 단순히 정보를 조회하는 수준을 넘어, 개인 맞춤형 포트폴리오 추천, 리스크 진단, 실시간 시황 분석까지 수행할 수 있습니다.


🧠 구성 요소 설명

구성요소 설명
✅ LLM (GPT-4 등) 투자 설명 생성, 종목 진단, 리밸런싱 해설 등 자연어 기반 응답 생성
✅ Chat UI Streamlit, React, Botpress 등을 활용한 대화형 웹 인터페이스
✅ API 연결 yfinance, Alpha Vantage, News API, SEC API, FRED, OpenAI API 등
✅ 사용자 프롬프트 엔진 "리스크 중심으로 3개 종목을 추천해줘", "내 자산구성을 점검해줘" 같은 자연어 요청 처리
✅ 대시보드 통합 사용자 프로파일에 맞는 투자리포트, 성과 추적, 시나리오 분석까지 시각화 가능
 

💬 사용 시나리오 예시

1. 개인 포트폴리오 점검

"내 자산 중 주식 60%, 채권 30%, 금 10%인데 괜찮을까?"

→ GPT-4가 사용자의 자산 구조를 읽고, 최신 시장 상황/리스크를 반영해 재조정 조언 제공.


2. 특정 종목 분석 요청

"삼성전자에 투자할 만한 이유를 알려줘. 리스크도 설명해줘."

→ GPT가 재무 데이터, 뉴스 요약, 업황 분석을 통해 종합적인 투자 판단 자료 제공.


3. 실시간 매크로 뉴스 알림

"미국 CPI 발표에 따른 시장 반응 요약해줘"

→ News API + LLM 조합으로 경제 이벤트 요약 및 해석 제공.


🔗 주요 API 구성도 예시

[사용자 Chat UI]
     ↓
[LLM 처리 모듈] ←→ [재무 데이터 API (yfinance)]
                ←→ [뉴스 분석 API (NewsAPI, SEC, FRED)]
                ←→ [GPT 설명 모듈]
                ←→ [포트폴리오 백테스트 모듈]

📦 실제 구현 예시 기술 스택

기능 기술 / 도구
Chat UI Streamlit Chat, Botpress, Gradio
LLM 응답 처리 OpenAI GPT-4, Claude, Mistral
데이터 API Alpha Vantage, yfinance, FRED
백테스트/시각화 backtrader, matplotlib, plotly
DB 저장 SQLite / PostgreSQL
보안 인증 JWT 인증, Streamlit 세션관리 등
 

✅ 기대 효과

  • 📊 초보자도 GPT 챗봇을 통해 투자 리스크와 기회를 직관적으로 이해
  • 🧠 전문가 수준의 실시간 종목 분석 및 포트폴리오 진단
  • ⏱ 투자자의 시간과 분석 비용 절약
  • 📈 실시간 정보 + 개인화 전략 제안

================

================

import streamlit as st
import openai
import yfinance as yf
import datetime

# 🔐 API 키 입력
openai.api_key = st.secrets["OPENAI_API_KEY"]

# 🔷 Streamlit 앱 제목
st.set_page_config(page_title="AI 투자 자문 챗봇", layout="wide")
st.title("🤖 AI 투자 자문 챗봇")

# 🔍 사용자 입력 받기
user_input = st.chat_input("💬 투자 관련 질문을 입력하세요...")

# 📊 주가 가져오기 함수
def get_stock_summary(ticker):
    try:
        stock = yf.Ticker(ticker)
        hist = stock.history(period="1y")
        current = stock.info['currentPrice']
        pe_ratio = stock.info.get('trailingPE', 'N/A')
        name = stock.info.get('shortName', ticker)
        return f"{name} 현재가: ${current}, PER: {pe_ratio}, 1년 수익률: {round((hist['Close'][-1]/hist['Close'][0]-1)*100, 2)}%"
    except:
        return f"{ticker}에 대한 요약 정보를 가져올 수 없습니다."

# 🤖 GPT 투자 설명 생성
def generate_advice(query):
    messages = [
        {"role": "system", "content": "당신은 친절한 금융 투자 자문가입니다."},
        {"role": "user", "content": query}
    ]
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=messages
    )
    return response.choices[0].message['content']

# 🧠 질문 처리
if user_input:
    with st.spinner("AI 분석 중..."):
        st.chat_message("user").write(user_input)

        # 종목 코드 자동 추출 (예: 삼성전자 → 005930.KS)
        if "삼성전자" in user_input:
            summary = get_stock_summary("005930.KS")
            st.info(f"📈 {summary}")

        gpt_response = generate_advice(user_input)
        st.chat_message("assistant").write(gpt_response)

# 🧾 샘플 질문 안내
with st.expander("💡 샘플 질문 보기"):
    st.markdown("""
    - 삼성전자에 투자해도 될까요?
    - 오늘 미국 증시 어떤 이슈 있었나요?
    - ETF 중 배당률이 높은 걸 추천해주세요
    - AI 관련 종목 중 성장 가능성이 높은 종목은?
    - 내 자산배분(주식 70, 채권 30) 어떤가요?
    """)

 

Streamlit 기반 실전형 AI 투자 자문 챗봇 시스템 코드가 완성되었습니다. 이 시스템은 다음 기능을 포함합니다:

  • 💬 사용자 질문 입력 + LLM 기반 응답
  • 📈 yFinance API로 종목 실시간 요약 제공
  • 🧠 GPT-4를 활용한 맞춤형 투자 조언 생성
  • 🔐 API 키 비밀 관리 (.streamlit/secrets.toml 사용)

👉 실행 전 .streamlit/secrets.toml 파일에 다음처럼 OpenAI 키를 설정해주세요:

toml
복사편집
OPENAI_API_KEY = "sk-..."

추가로 원하시면 다음 기능도 연동해 드릴 수 있습니다:

  • 포트폴리오 점검 기능
  • ETF 추천 시스템
  • 시황 뉴스 연동 등

=======================

import streamlit as st
import openai
import yfinance as yf
import datetime
import requests

# 🔐 API 키 입력
openai.api_key = st.secrets["OPENAI_API_KEY"]
news_api_key = st.secrets["NEWS_API_KEY"]

# 🔷 Streamlit 앱 제목
st.set_page_config(page_title="AI 투자 자문 챗봇", layout="wide")
st.title("🤖 AI 투자 자문 챗봇")

# 🔍 사용자 입력 받기
user_input = st.chat_input("💬 투자 관련 질문을 입력하세요...")

# 📊 주가 가져오기 함수
def get_stock_summary(ticker):
    try:
        stock = yf.Ticker(ticker)
        hist = stock.history(period="1y")
        current = stock.info['currentPrice']
        pe_ratio = stock.info.get('trailingPE', 'N/A')
        name = stock.info.get('shortName', ticker)
        return f"{name} 현재가: ${current}, PER: {pe_ratio}, 1년 수익률: {round((hist['Close'][-1]/hist['Close'][0]-1)*100, 2)}%"
    except:
        return f"{ticker}에 대한 요약 정보를 가져올 수 없습니다."

# 🧠 GPT 투자 설명 생성
def generate_advice(query):
    messages = [
        {"role": "system", "content": "당신은 친절한 금융 투자 자문가입니다."},
        {"role": "user", "content": query}
    ]
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=messages
    )
    return response.choices[0].message['content']

# 📰 시황 뉴스 요약 함수 (NewsAPI)
def get_market_news():
    url = f"https://newsapi.org/v2/top-headlines?category=business&language=ko&apiKey={news_api_key}"
    r = requests.get(url).json()
    articles = r.get("articles", [])
    return [f"[{a['title']}]({a['url']})" for a in articles[:5]]

# 📊 ETF 추천 함수
def recommend_etfs():
    return [
        ("VTI", "미국 전체 시장 ETF"),
        ("VOO", "S&P 500 추종 ETF"),
        ("QQQ", "나스닥 100 ETF"),
        ("ARKK", "혁신 기술 ETF"),
        ("SCHD", "고배당 ETF")
    ]

# 📋 포트폴리오 점검 함수
portfolio = st.sidebar.text_area("📂 내 포트폴리오 (예: AAPL 50%, TLT 30%, GLD 20%)")
if portfolio:
    with st.sidebar:
        if st.button("🔍 포트폴리오 점검"):
            gpt_portfolio_check = generate_advice(f"내 포트폴리오는 다음과 같습니다: {portfolio}. 리스크와 보완점을 조언해줘.")
            st.success(gpt_portfolio_check)

# 🧠 질문 처리
if user_input:
    with st.spinner("AI 분석 중..."):
        st.chat_message("user").write(user_input)

        # 종목 코드 자동 추출 (예: 삼성전자 → 005930.KS)
        if "삼성전자" in user_input:
            summary = get_stock_summary("005930.KS")
            st.info(f"📈 {summary}")

        if "ETF" in user_input:
            etfs = recommend_etfs()
            for code, desc in etfs:
                st.write(f"✅ **{code}**: {desc}")

        if "뉴스" in user_input or "시황" in user_input:
            st.subheader("📰 최신 경제 뉴스")
            for news in get_market_news():
                st.markdown(f"- {news}")

        gpt_response = generate_advice(user_input)
        st.chat_message("assistant").write(gpt_response)

# 🧾 샘플 질문 안내
with st.expander("💡 샘플 질문 보기"):
    st.markdown("""
    - 삼성전자에 투자해도 될까요?
    - 오늘 미국 증시 어떤 이슈 있었나요?
    - ETF 중 배당률이 높은 걸 추천해주세요
    - AI 관련 종목 중 성장 가능성이 높은 종목은?
    - 내 자산배분(주식 70, 채권 30) 어떤가요?
    """)

 

Streamlit 기반 AI 투자 자문 챗봇에 다음 기능이 통합되었습니다:

  1. 포트폴리오 점검: 사이드바에 포트폴리오 입력 후 GPT가 리스크 및 조언 제공
  2. 📈 ETF 추천 시스템: VTI, QQQ, ARKK 등 주요 ETF 자동 추천
  3. 📰 시황 뉴스 연동: NewsAPI를 통해 최신 경제 뉴스 요약 제공

🔐 .streamlit/secrets.toml에 다음도 추가해주세요:

 
NEWS_API_KEY = "your_newsapi_key"
 
순위 AI 투자 방안 이름 활용 기술 상세 바로가기
1 AI 퀀트 포트폴리오 최적화 Markowitz, RL, MPT, AI 최적화 바로가기
2 감정 분석 기반 뉴스 트레이딩 NLP, BERT, LLM 바로가기
3 AI ETF 자동 리밸런싱 AutoML, Alpha Vantage API 바로가기
4 머신러닝 기반 주가 예측 XGBoost, LightGBM 바로가기
5 딥러닝 LSTM 시계열 예측 TensorFlow, PyTorch LSTM 바로가기
6 강화학습 기반 자동 매매 OpenAI Gym, PPO, DQN 바로가기
7 AI 기반 가치주 선별 (Value Factor) AI 팩터스코어링, 계량모델 바로가기
8 GPT 기반 재무제표 요약 투자 GPT-4, LangChain, OCR 바로가기
9 AI 리스크 해지 전략 (VIX, 금리, 환율) AI 헷지백테스트, 시나리오 모델 바로가기
10 SVM 기반 종목 필터링 SVM + 재무데이터 바로가기
11 AI IPO 스코어링 모델 AI 점수화 + IPO 성과예측 바로가기
12 챗봇 기반 투자 자문 시스템 LLM + Chat UI + API 연결 바로가기
13 XGBoost 기반 이벤트 드리븐 트레이딩 XGBoost + 뉴스 이벤트 바로가기
14 AutoML 기반 알고리즘 전략 탐색 TPOT, H2O.ai, FeatureTools 바로가기
15 AI 기반 ESG 점수 분석 투자 AI ESG 분석 + ETF 필터링 바로가기
16 옵션 가격 예측 딥러닝 모델 DNN, OptionNet, VolNet 바로가기
17 고빈도 트레이딩용 AI 패턴 인식 CNN, 딥러닝 패턴 분석 바로가기
18 AI 기반 섹터 로테이션 모델 순환분류 + 군집분석 바로가기
19 LLM 기반 글로벌 투자 리서치 요약 GPT + PDF 요약 + 질의응답 바로가기
20 AI + Satellite Data 기반 농산물 투자 AI + 위성데이터 + 시계열학습 바로가기
 

이 글이 도움이 되었다면,아래 링크를 통해서 후원해주세요.( 커피나 차 한잔 이나 맥주나 와인한잔 )

 

728x90
반응형

 

이 글이 도움이 되셨다면
🔔 구독❤️ 좋아요 꾸우욱 눌러 주세요!🙏

그리고 💖커피 ☕, 💚차 🍵, 💛맥주 🍺, ❤️와인 🍷 중 마음에 드시는 한 잔으로 💰 후원해 주시면 큰 힘이 됩니다.

👇 지금 바로 아래 🔘버튼을 꾸욱 눌러 📣 응원해 주세요! 👇