💬 "삼성전자랑 NAVER를 5회로 나눠서 매수하고 싶은데… 어떤 가격에 얼마씩 살까?"

이걸 누구한테 물어볼까요?

  • 친구? "몰라. 난 코인 함."
  • 애널리스트? "컨퍼런스콜 듣고 연락드릴게요."
  • AI? "5초면 됩니다."

그래서 오늘은 바로 이 질문을 Google Gemini + LangChain을 이용해 AI에게 물어보는 시스템 트레이딩 예제를 소개하려고 해요.

게다가 AI에게 “예전에 이런 요청에는 이렇게 대답했었지~” 라고 **예시(Few-shot Example)**도 보여주고,
비슷한 스타일로 똑같이 답변해달라고 요청하는 방식, 바로 Few-shot Prompting을 사용합니다!


🧠 Few-shot Prompting이 뭐냐고요?

말 그대로 **“몇 개의 예제(Few Shots)”**를 보여주고, AI가 비슷한 스타일로 새로운 요청에 답변하도록 유도하는 방식입니다.

예를 들면 이런 거죠:

Q: 강아지로 삼행시 지어줘
A: 강: 강하게! 아: 아침마다! 지: 지져댄다!

Q: 고양이로 삼행시 지어줘
A: 고: 고운 눈망울~ 양: 양탄자 위에서~ 이: 이불 안 파고든다~

👉 이렇게 예제를 보여주면,
Q: 햄스터로 삼행시 지어줘
➡ AI가 자동으로 센스 있게 이어서 삼행시 지어줍니다!

오늘 우리가 만들 건 이것의 주식 매수 전략 버전입니다.


🎯 목표

고객이 말합니다:
“삼성전자, NAVER를 5회 분할 매수하고 싶어요. 총 1,000만 원이 있습니다.”

👉 그러면 AI가 다음과 같은 전략 테이블을 자동으로 만들어줍니다!

종목명회차매수가(예상)매수금액 (원)
종목명 회차 매수가(예상) 매수금액 (원)
삼성전자 1 75,000원 100,000
... ... ... ...
NAVER 5 206,000원 100,000
 

🛠 Step 1. 필요한 도구를 불러옵니다

import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.prompts import (
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
    ChatPromptTemplate,
)
from langchain.prompts.prompt import PromptTemplate
 
  • os: API 키를 숨기기 위해!
  • langchain_google_genai: Google Gemini와 대화하기 위해!
  • PromptTemplate: AI에게 말 걸기 위한 말풍선 템플릿입니다.

🔐 Step 2. Gemini와 연결하기

os.environ["GOOGLE_API_KEY"] = "YOUR_GOOGLE_API_KEY"
gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0.4)

여기서 temperature는 AI의 창의성 온도입니다.
0.4 정도면 살짝 유연하면서도 안정적인 스타일!


🧾 Step 3. 예시를 준비합니다 (Few-shot 핵심!)

examples = [
  {
    "question": "삼성전자, 카카오를 5회 분할 매수하고 싶어요. 총 투자금은 1000만 원입니다.",
    "answer": """ ... <표 형식> ... """
  }
]

예전에 누가 이런 요청을 했고,
AI는 이렇게 답했다는 샘플 대화를 넣어주는 겁니다.

👉 이게 바로 Few-shot Prompting!


✍️ Step 4. 예시 포맷을 정의합니다

example_prompt = PromptTemplate(
    input_variables=["question", "answer"],
    template="고객 요청: {question}\n응답:\n{answer}"
)

사람이 하는 말 → AI의 대답 형식으로 정리합니다.
여기서 "고객 요청"이라는 말이 들어가면 AI도 뭔가 증권사 느낌으로 응답하게 돼요 😎


🧱 Step 5. 프롬프트 조립하기

formatted_examples = "\n\n".join([example_prompt.format(**ex) for ex in examples])

예제들을 싹 다 문자열로 붙입니다.

new_question = "삼성전자, NAVER를 5회 분할 매수하고 싶어요. 총 투자금은 1000만 원입니다."

이게 오늘 고객이 실제로 묻는 질문!


🧠 Step 6. AI에게 전체 프롬프트를 던집니다

full_prompt = f"""아래는 고객의 주식 분할 매수 요청에 대한 예시입니다:

{formatted_examples}

이제 아래 요청에 따라 각 종목별로 분할 매수 전략을 표로 작성해주세요:

고객 요청: {new_question}
응답:
"""
 

🎩 Step 7. AI 역할 설정

system_message_prompt = SystemMessagePromptTemplate.from_template(
    "너는 투자 전략을 분석해 표로 작성하는 AI 트레이딩 어시스턴트야. 요청에 따라 종목별 분할 매수 전략을 테이블로 제안해줘."
)

👉 "넌 이제부터 말 잘 듣는 증권사 어시스턴트야"
역할을 부여해줘야 AI가 딴소리 안 합니다.


🤖 Step 8. Gemini에게 질문하고, 답변받기

chat_prompt = ChatPromptTemplate.from_messages([
    system_message_prompt,
    HumanMessagePromptTemplate.from_template("{input}")
])

messages = chat_prompt.format_prompt(input=full_prompt).to_messages()
response = gemini(messages)

print(response.content)

 

✅ 전체 코드 (Gemini + LangChain + Few-shot 방식)

 
import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.prompts import (
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
    ChatPromptTemplate,
)
from langchain.prompts.prompt import PromptTemplate

# 1. API 키 설정
os.environ["GOOGLE_API_KEY"] = "YOUR_GOOGLE_API_KEY"  # 실제 키로 교체

# 2. Gemini 모델 로드
gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash", temperature=0.4)

# 3. Few-shot 예시
examples = [
    {
        "question": "삼성전자, 카카오를 5회 분할 매수하고 싶어요. 총 투자금은 1000만 원입니다.",
        "answer": """
| 종목명   | 회차 | 매수가(예상) | 매수금액 (원) |
|----------|------|---------------|----------------|
| 삼성전자 | 1    | 74,500원       | 100,000         |
| 삼성전자 | 2    | 74,000원       | 100,000         |
| 삼성전자 | 3    | 73,500원       | 100,000         |
| 삼성전자 | 4    | 73,000원       | 100,000         |
| 삼성전자 | 5    | 72,500원       | 100,000         |
| 카카오   | 1    | 45,000원       | 100,000         |
| 카카오   | 2    | 44,500원       | 100,000         |
| 카카오   | 3    | 44,000원       | 100,000         |
| 카카오   | 4    | 43,500원       | 100,000         |
| 카카오   | 5    | 43,000원       | 100,000         |

※ 각 종목에 500만 원씩 균등 분배했고, 매수가는 시장 등락을 감안해 회차별로 하향 조정했습니다.
"""
    }
]

# 4. 프롬프트 포맷
example_prompt = PromptTemplate(
    input_variables=["question", "answer"],
    template="고객 요청: {question}\n응답:\n{answer}"
)

# 5. 예제 조합
formatted_examples = "\n\n".join([example_prompt.format(**ex) for ex in examples])

# 6. 새로운 요청
new_question = "삼성전자, NAVER를 5회 분할 매수하고 싶어요. 총 투자금은 1000만 원입니다."

# 7. 최종 프롬프트 조립
full_prompt = f"""아래는 고객의 주식 분할 매수 요청에 대한 예시입니다:

{formatted_examples}

이제 아래 요청에 따라 각 종목별로 분할 매수 전략을 표로 작성해주세요:

고객 요청: {new_question}
응답:
"""

# 8. 시스템 메시지 (역할 부여)
system_message_prompt = SystemMessagePromptTemplate.from_template(
    "너는 투자 전략을 분석해 표로 작성하는 AI 트레이딩 어시스턴트야. 요청에 따라 종목별 분할 매수 전략을 테이블로 제안해줘."
)

# 9. 사용자 메시지 템플릿
human_message_prompt = HumanMessagePromptTemplate.from_template("{input}")

# 10. ChatPromptTemplate 조립
chat_prompt = ChatPromptTemplate.from_messages([
    system_message_prompt,
    human_message_prompt
])

# 11. 메시지 생성 및 Gemini 호출
messages = chat_prompt.format_prompt(input=full_prompt).to_messages()
response = gemini(messages)

# 12. 결과 출력
print(response.content)

✨ 그리고 드디어 나온 결과는?!


🧾 예시 출력 (Gemini의 답변 예)

| 종목명   | 회차 | 매수가(예상) | 매수금액 (원) |
|----------|------|---------------|----------------|
| 삼성전자 | 1    | 75,000원       | 100,000         |
| 삼성전자 | 2    | 74,500원       | 100,000         |
| 삼성전자 | 3    | 74,000원       | 100,000         |
| 삼성전자 | 4    | 73,500원       | 100,000         |
| 삼성전자 | 5    | 73,000원       | 100,000         |
| NAVER    | 1    | 210,000원      | 100,000         |
| NAVER    | 2    | 209,000원      | 100,000         |
| NAVER    | 3    | 208,000원      | 100,000         |
| NAVER    | 4    | 207,000원      | 100,000         |
| NAVER    | 5    | 206,000원      | 100,000         |

※ 각 종목에 500만 원씩 분산 투자했으며, 회차별로 매수가를 낮춰 분할 매수 전략을 구성했습니다.

💡 마무리: 이것만 기억하세요!

기능설명
Few-shot Prompting 예시를 보여주고 비슷한 스타일로 AI가 응답하도록 유도
LangChain + Gemini 고급 AI 대화 설계에 최적
시스템 트레이딩 응용 매수 전략, 분할 타이밍, 금액 계산까지 가능!
Posted by 제이브레인
,

Google Gemini를 활용해서 마치 AI 증권사 직원처럼 행동하도록 만들고,
사용자가 입력한 주식 정보로 매수 전략을 제안받는 시스템 트레이딩 예제를 만들어볼 거예요.

말만 해도 설레죠?


🧾 예제 시나리오

"삼성전자 80%, 카카오 20% 비중으로 매수하고 싶어"
👉 그러면 Gemini가 "좋아요. 삼성전자는 현재 시장 흐름에 비춰볼 때... 카카오는..." 이렇게 전략을 세워주는 겁니다!


✅ Step 1. 필요한 라이브러리 호출

import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.prompts import (
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
    ChatPromptTemplate,
)

이건 마치 AI 증권사 오피스를 차리는 과정입니다.

  • os: API 키 등록용
  • ChatGoogleGenerativeAI: Gemini 모델 불러오기
  • PromptTemplate 시리즈: Gemini에게 업무를 시킬 말풍선들

🔐 Step 2. API 키 등록

os.environ["GOOGLE_API_KEY"] = "YOUR_GOOGLE_API_KEY"

Gemini와 연결할 수 있도록 **열쇠(API 키)**를 등록합니다.
증권사 직원도 보안 카드 찍어야 입장하잖아요? 😉


👨‍💼 Step 3. AI 증권맨 호출

gemini = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0)

드디어 등장한 우리의 AI 트레이더!
temperature=0은 신중하고 일관된 판단을 원할 때 사용합니다.
(우린 아무래도 주식이라... 신중해야죠?)


🎓 Step 4. 역할을 부여합니다 – "너는 증권사 주식 매매 전문가야!"

template = (
    "너는 경험 많은 증권사 직원이야. "
    "사용자가 입력한 종목과 비중을 보고 매수 전략을 제안해줘. "
    "시장 상황도 간단히 고려해서 설명해줘."
)
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
 

Gemini에게 역할을 줘야 혼란스럽지 않아요.
“너는 그냥 챗봇이 아니고, 증권사 직원이야!” 라고 딱 못을 박습니다.


💬 Step 5. 사용자의 매수 의도 입력 템플릿 만들기

human_template = "{매수요청}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

사용자는 다음처럼 말할 수 있어요:

"삼성전자 80%, 카카오 20% 비중으로 1천만 원 매수하고 싶습니다."
"삼성전자 80%, 카카오 20% 비중으로 1천만 원 매수하고 싶습니다."

그걸 그대로 Gemini에게 전달할 템플릿입니다.


🧠 Step 6. 대화 프롬프트 조합하기

chat_prompt = ChatPromptTemplate.from_messages([
    system_message_prompt, human_message_prompt
])

이제 역할 설정사용자 질문을 하나로 묶어줍니다.
AI 트레이더가 고객의 요청을 정확히 이해할 수 있도록요.


🚀 Step 7. 요청 실행 – AI에게 주식 매수 전략 요청!

answer = gemini(chat_prompt.format_prompt(
    매수요청="삼성전자 80%, 카카오 20% 비중으로 1천만 원 매수하고 싶습니다."
).to_messages())

print(answer.content)

Gemini에게 요청을 보내면, 다음처럼 말해줄 수 있어요:

"현재 삼성전자는 반도체 업황 회복 기대감으로 강세를 보이고 있으며, 80% 집중 투자 전략은 유효합니다. 카카오는 기술적 반등 구간이지만 리스크 관리가 필요하므로 20% 비중은 적절합니다..."

와우! AI가 시장까지 고려한 전략을 말해줍니다. 😮


📦 Step 8. 전체 코드 보기

# 1. API KEY 저장을 위한 os 라이브러리 호출
import os

# 2. Google Gemini LLM 로드를 위한 라이브러리 호출
from langchain_google_genai import ChatGoogleGenerativeAI

# 3. 프롬프트 템플릿 관련 라이브러리 호출
from langchain.prompts import (
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
    ChatPromptTemplate,
)

# 4. Google Gemini API 키 환경변수에 저장
os.environ["GOOGLE_API_KEY"] = "YOUR_GOOGLE_API_KEY"  # 실제 API 키로 변경

# 5. Gemini 모델을 로드합니다.
gemini = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0)

# 6. 역할 프롬프트 템플릿 정의
template = (
    "너는 경험 많은 증권사 직원이야. "
    "사용자가 입력한 종목과 비중을 보고 매수 전략을 제안해줘. "
    "시장 상황도 간단히 고려해서 설명해줘."
)
system_message_prompt = SystemMessagePromptTemplate.from_template(template)

# 7. 사용자가 입력할 매개변수 템플릿 선언
human_template = "{매수요청}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

# 8. ChatPromptTemplate에 system + human 메시지를 결합
chat_prompt = ChatPromptTemplate.from_messages([
    system_message_prompt, human_message_prompt
])

# 9. Gemini에게 매수 전략 요청!
answer = gemini(chat_prompt.format_prompt(
    매수요청="삼성전자 80%, 카카오 20% 비중으로 1천만 원 매수하고 싶습니다."
).to_messages())

# 10. 결과 출력
print(answer.content)
 

두구 두구 두둥~~ 결과는 다음과 같습니다.

## 삼성전자 80%, 카카오 20% 매수 전략 (1천만 원)

**현재 시장 상황:**

최근 시장은 금리 인상, 인플레이션 우려, 지정학적 리스크 등 다양한 요인으로 인해 변동성이 큰 상황입니다. 특히, 기술주 중심의 성장주들은 금리 인상에 민감하게 반응하며 조정세를 보이기도 합니다. 하지만 장기적인 관점에서 볼 때, 한국 경제를 이끄는 대장주인 삼성전자와 플랫폼 기업인 카카오는 여전히 매력적인 투자 대상입니다.

**매수 전략:**

1.  **분할 매수:** 현재 시장 변동성이 크므로, 1천만 원을 한 번에 모두 투자하기보다는 분할 매수를 통해 리스크를 관리하는 것이 좋습니다. 예를 들어, 3~4회에 걸쳐 나누어 매수하는 것을 고려해볼 수 있습니다.
2.  **삼성전자 (800만 원):**
    *   **장점:** 반도체 업황 회복 기대감, 안정적인 실적, 높은 배당 수익률
    *   **매수 시점:** 단기적인 주가 조정 시 매수 기회로 활용
    *   **투자 포인트:** 삼성전자는 메모리 반도체 시장의 선두 주자이며, 파운드리 사업 확장, 인공지능, 전장 등 미래 성장 동력 확보에 적극적으로 나서고 있습니다. 장기적인 관점에서 꾸준히 모아간다면 안정적인 수익을 기대할 수 있습니다.
3.  **카카오 (200만 원):**
    *   **장점:** 플랫폼 경쟁력, 다양한 사업 포트폴리오 (광고, 커머스, 모빌리티, 금융 등), 성장 가능성
    *   **매수 시점:** 규제 이슈 완화, 실적 개선 추세 확인 후 매수 고려
    *   **투자 포인트:** 카카오는 국민 메신저 카카오톡을 기반으로 다양한 서비스를 제공하며 성장해왔습니다. 최근 플랫폼 규제 이슈로 주가가 조정을 받았지만, 장기적인 관점에서 디지털 전환 시대에 더욱 성장할 가능성이 높습니다. 다만, 카카오의 경우 성장주로 분류되어 시장 변동성에 민감하게 반응할 수 있으므로 투자에 유의해야 합니다.

**추가 조언:**

*   **투자 목표 설정:** 투자 기간, 목표 수익률 등을 명확히 설정하고 투자 전략을 수립하는 것이 중요합니다.
*   **포트폴리오 다변화:** 삼성전자와 카카오 외에도 다양한 종목에 분산 투자하여 리스크를 줄이는 것을 고려해볼 수 있습니다.
*   **정기적인 점검:** 시장 상황과 투자 종목의 변화를 꾸준히 점검하고 필요에 따라 투자 전략을 수정해야 합니다.
*   **전문가 활용:** 투자에 어려움을 느낀다면 증권사 PB나 투자 전문가의 도움을 받는 것도 좋은 방법입니다.

**Disclaimer:**

본 정보는 투자 자문이 아니며, 투자 결정은 본인의 판단과 책임 하에 이루어져야 합니다. 투자에는 항상 위험이 따르므로 신중하게 결정하시기 바랍니다.

💡 마무리

이처럼 LangChain과 Gemini를 조합하면 AI 주식 상담사, 트레이딩 어시스턴트, 심지어 포트폴리오 추천 시스템까지 만들 수 있습니다!

Posted by 제이브레인
,