소개 — 무엇을, 왜 시도했나
직접 투자하는 미국 종목을 9개에서 10개로 맞추기 위해 1종목을 더 발굴하고 싶었습니다. 다만 보유 종목이 기술주에 몰려 있다 보니, 코카콜라처럼 포트폴리오의 무게중심을 잡아줄 방어형 종목을 찾고 싶었어요.
스터디를 하던 중 문득 이런 생각이 들었습니다. '스터디에서 배운 좋은 프롬프트를 내 입맛에 맞게 커스텀해서 쓰면 되지 않을까?'
그래서 investmentagent.lovable.app의 '종목 찾기' 프롬프트를 커스텀해 종목을 발굴했습니다.
또 한 가지 고민이 있었습니다. 포트폴리오 리밸런싱을 위한 매수/매도 타이밍을 잡기가 어려웠고, 결국 비중이 과도하게 커지는 종목들이 생기기 시작한 거죠. 그래서 다음과 같은 시스템을 원하게 됐습니다.
보유 종목 중 비중이 초과된 종목이 생기면, 비중이 부족하면서 저평가된 종목을 발굴해 매도/매수 알림을 보내준다.
매매를 간편하게 하기 위해 금액에 맞는 수량까지 계산해준다. 단, 금액이 딱 맞지 않으면 일단 패스하는 것을 원칙으로 한다.
나무증권은 API가 없으므로, 보유 종목 수량을 직접 조절할 수 있는 대시보드를 함께 구축한다.
진행 방법 — 사용한 도구와 활용 방식
1. 마지막 1종목 발굴
코카콜라 같은 종목을 찾기 위해 프롬프트를 아래와 같이 커스텀했습니다.
[시장: 미국주식] 코카콜라같은 방어형 퀄리티 컴파운더 발굴
#Role:
당신은 20년 경력의 AI 인공지능 섹터 전문 애널리스트입니다.
- CFA, 공인회계사 자격 보유
- 연평균 수익률 상위 10% 달성 실적
#Instruction
다음 조건에 맞는 미국주식 5개을 발굴해주세요:
스크리닝 조건:
- 유사종목: 코카콜라
- 투자 스타일: 방어형 퀄리티 컴파운더
- 스크리닝 필터: PER 업종평균 -30%, PBR 1 미만, ROE 10%+
- 중점 분석: 저평가 해소 촉매, 자산가치
- 투자 기간: 10년
- 목표 수익률: 30% 이상
제외 조건:
- 최근 2년 연속 적자 기업
- 감사의견 비적정 기업
- 시가총액 1,000억 미만
#Context
- 시장: 미국주식 (NYSE/NASDAQ)
- 현재 시장 상황과 AI 인공지능 업황을 고려하여 분석
- 단기 모멘텀보다 10년 관점의 구조적 성장 중시
#Example
🏆 코카콜라와 유사한 TOP 5개
---
1순위: [종목명] - [핵심 투자포인트 한 줄]
| 항목 | 내용 |
|------|------|
| 기본 정보 | 현재가, 시가총액, 52주 최고/최저 |
| 밸류에이션 | PER, PBR, PEG |
| 수익성 | ROE, 영업이익률, 순이익률 |
| 성장성 | 매출 CAGR(3년), 이익 CAGR(3년) |
투자 포인트:
1. [핵심 성장동력]
2. [경쟁우위/해자]
3. [실적 모멘텀]
리스크 요인:
1. [주요 위험]
2. [모니터링 포인트]
매매 전략:
- 적정가: [산출 근거 포함]
- 목표가: [+30%]
- 1차 매수: [가격/비중]
- 2차 매수: [가격/비중]
- 손절가: [가격/사유]
---
(2순위 ~ 5개 동일 형식)
---
📊 종합 비교표
| 순위 | 종목 | 현재가 | 목표가 | 기대수익 | PER | ROE | 핵심 투자포인트 |
|------|------|--------|--------|----------|-----|-----|-----------------|
| 1 | | | | | | | |
🎯 최종 추천
- 가장 확신 높은 종목: [종목] - [이유]
- 리스크 대비 수익 최고: [종목] - [이유]처음 추천받은 TOP5에는 제가 선호하지 않는 섹터가 섞여 있었습니다. 그래서 싫어하는 섹터와 그 이유를 설명한 뒤 다시 5개를 추천받았고, 그 중 흥미가 가는 종목이 나와 마지막 10번째 종목으로 선정했습니다.
…그리고 귀신같이 -5%를 쳐맞았습니다. 😇
사용한 도구: 클로드 코워크
2. 리밸런싱용 대시보드 & 텔레그램 봇 만들기
개발은 다음 순서로 진행했습니다.
클로드 챗으로 원하는 배경과 필요한 기능을 설명했습니다.
부족한 부분을 지적해달라고 요청하며 내용을 계속 보강했습니다.
완성된 내용을 바탕으로, 코워크에게 개발을 맡길 수 있도록 노션 기획 문서로 정리해달라고 요청했습니다. → 기획 문서
챗에 "이제 코워크로 개발을 진행할 거야"라고 하니, 개발용 문서까지 알아서 만들어줬습니다. → 개발 문서
코워크에게 이 문서를 바탕으로 개발을 시키니, 챗봇과 대시보드가 뚝딱 완성됐습니다. → 완성된 대시보드
사용한 도구: Streamlit, GitHub, 클로드 챗/코워크
결과와 배운 점
시행착오
① 지인들이 보유 종목을 마음대로 편집해버린 사건
대시보드를 지인 단톡방에 공개했더니, 지인들이 보유 종목을 제멋대로 편집해버렸습니다. 하나씩 되돌리기 귀찮아서, 보유 종목 수량을 리셋하는 코드를 만들어 초기화하고, 편집하려면 비밀번호를 입력하도록 MVP를 수정했습니다.
② yfinance 미지원 종목 시세를 못 가져오는 문제
보유 종목 중 yfinance에 없는 종목은 Streamlit에 정상적으로 업데이트되지 않았습니다. KRX 금현물과 NASA ETF(유럽 거래소 상장)가 yfinance 미지원 종목이었는데, 대안을 찾는 과정이 험난했습니다.
Streamlit Cloud가 미국 서버에서 동작하다 보니, 네이버 금융 API는 해외 IP 차단 + JS 렌더링 필요로 접근이 막혔고,
investing.com은 Cloudflare 보호 때문에 스크래핑도 불가능했습니다.
처음엔 AI에게 코드 수정을 계속 요청했지만 번번이 실패했습니다. 그래서 한국 IP를 가진 지인 서버(Ubuntu + Docker)를 중간 브릿지로 활용해 네이버를 스크래핑한 뒤 GitHub에 push하는 방식을 제안했고, AI도 적극 찬성했습니다. 하 지만 이 서버에서도 네이버 API가 똑같이 막혔고, Docker 배포 과정에서 git 충돌까지 반복돼 결국 서버 방식은 포기했습니다.
그러다 문득 깨달았습니다. 이미 구글 시트로 종목 정보를 가져오고 있었으니, 구글 시트를 중간 브릿지로 쓰면 되지 않을까? 최종 해결책은 이랬습니다.
구글 시트에서
IMPORTXML(KRX 금)과GOOGLEFINANCE(NASA) 함수로 시세를 받아 CSV로 게시한다.GitHub Actions가 이 CSV를 읽어
external_prices.json에 저장한 뒤 레포에 push한다.Streamlit은 이 파일을 읽어 가격을 표시한다.
배운 점
좋은 프롬프트가 있다면 잘 보관해뒀다가, 상황에 맞게 커스텀해서 써먹자.
AI가 제안하는 방법이 늘 정답은 아니다. 막힐 때는 나만의 아이디어도 적극적으로 던져보자. (이번에도 결국 구글 시트라는 '내 아이디어'가 문제를 풀었다.)
앞으로의 계획
대시보드에 집중하느라 검증을 못 해 망가진 텔레그램 봇 고치기.
매수/매도 로직을 공식에 의거한 기계적 반응이 아니라, 스터디에서 구한 프롬프트를 활용해 LLM으로 구현하여 고도화하기.