[AI] AI 써서 주식으로 돈 벌고 싶다고? 종목 말고 리서치를 자동화하자
AI 써서 주식으로 돈 벌고 싶다고?
종목 찍어주는 점쟁이 말고, 지치지 않는 리서치 팀을 만드는 법
“ChatGPT한테 내일 오를 주식 물어보면 되나요?”
안 된다. 적어도 그렇게 쉽게 됐다면 월스트리트에는 애널리스트 대신 프롬프트 입력 아르바이트생만 남았을 것이다. LLM은 문장을 읽고 구조화하고 비교하는 데 뛰어나지만, 최신 데이터가 없을 수 있고 숫자를 틀릴 수 있으며, 무엇보다 시장은 모두가 같은 정보를 보고 서로 먼저 반응하려는 곳이다.
그렇다고 AI가 주식 투자에 쓸모없다는 뜻은 아니다. 오히려 반대다. AI는 공시 수십 장 읽기, 지난 분기와 문장 비교하기, 실적 발표에서 경영진의 말이 바뀐 지점 찾기, 투자 가설이 깨지는 신호 감시하기에 매우 강하다. 종목을 맞혀주는 수정구슬이 아니라, 밤에도 지치지 않는 리서치 인턴으로 쓰면 된다.
이 글은 투자 방법을 연구하는 교육용 가이드이지 특정 종목의 매수·매도 추천이 아니다. 원금 손실이 가능하며, AI 분석과 백테스트 결과도 미래 수익을 보장하지 않는다. 자동화할수록 주문보다 검증·한도·중지 장치를 먼저 자동화해야 한다.
1. AI에게 맡길 일과 절대 맡기지 말아야 할 일
- 공시·컨콜 요약과 전분기 비교
- 숫자와 서술의 불일치 후보 찾기
- 뉴스를 사건·기업·영향으로 분류
- 투자 가설과 반증 조건 관리
- 매일 같은 형식의 리포트 생성
- 근거 없이 내일 주가 예측
- 출처 확인 없는 숫자 사용
- AI 확신도를 실제 확률로 해석
- LLM 문장만으로 자동 주문
- 과거 데이터에 최적화된 전략 맹신
놓치지 않기
비교하기
반증하기
한도 지키기
사람이 승인
2. 사이트부터: 정보의 서열을 정하자
투자 정보는 많지만 신뢰도는 같지 않다. AI에게 인터넷 검색 결과를 몽땅 먹이면 사실과 의견, 광고와 루머가 한 냄비에 끓는다. 정보원에 서열을 부여해야 한다.
한국 주식 핵심 사이트
| 사이트 | 무엇을 보나 | AI 활용법 |
|---|---|---|
| DART | 사업·분기보고서, 주요사항, 지분, 감사보고서 | 이전 공시와 diff, 위험요인·주석 추출 |
| OpenDART | API·XBRL·Excel·원문 XML | 재무제표 자동 수집과 공시 모니터링 |
| KRX KIND | 상장공시, 기업설명회, 시장조치 | 공시 이벤트 분류·알림 |
| KRX 정보데이터 | 가격, 거래량, 투자자, PER·PBR·배당 | 시장·업종·팩터 데이터 검증 |
| 기업 IR 페이지 | 발표자료, 컨퍼런스콜, 사업 KPI | 가이던스 변화·경영진 표현 비교 |
미국 주식·거시경제 핵심 사이트
| 사이트 | 무엇을 보나 | AI 활용법 |
|---|---|---|
| SEC EDGAR | 10-K, 10-Q, 8-K, Form 4 | Risk Factors·MD&A·insider 거래 추적 |
| SEC Data API | Submissions·CompanyFacts XBRL JSON | 키 없이 재무 데이터 자동 수집 |
| FRED | 금리·물가·고용·신용·경기 데이터 | 기업 실적과 거시 국면 연결 |
| Finviz | 미국 주식 스크리너·맵·뉴스 | 후보군 필터링 후 원문 검증 |
| TradingView | 차트, Pine Screener, 조건 알림 | 가격·거래량 조건 자동 감시 |
| Koyfin | 글로벌 시장·밸류에이션·컨센서스 | 동종기업과 멀티플·마진 비교 |
스크리너와 포털은 후보를 좁히는 데 유용하지만 최종 숫자는 공시와 거래소 원문으로 확인한다. “PER 8배라 싸다”는 문장보다 어떤 이익 기준인지, 일회성 이익이 섞였는지, 데이터 시점이 언제인지가 중요하다.
3. 주식을 보는 순서: 가격보다 사업에서 시작한다
사업
무엇으로 버나
숫자
성장·마진·현금
질
지속 가능한가
가격
기대가 얼마인가
반증
틀렸다면?
① 사업: 이 회사는 정확히 어떻게 돈을 버나
- 누가 고객이고 왜 돈을 내는가?
- 매출이 가격×수량 중 무엇 때문에 늘었나?
- 경쟁사가 따라 하기 어려운 이유가 있는가?
- 경기·금리·환율·원자재 중 무엇에 민감한가?
② 숫자: 매출보다 현금까지 내려간다
매출 성장률, 영업이익률, ROIC, 영업현금흐름, 잉여현금흐름, 순현금/부채를 본다. “이익이 늘었다”면 매출 증가인지, 비용 절감인지, 일회성 평가이익인지 분해한다.
③ 질: 좋은 숫자인가, 화장한 숫자인가
매출채권과 재고가 매출보다 훨씬 빠르게 늘거나, 순이익은 증가하는데 영업현금흐름이 약해지면 이유를 확인한다. AI에게 숫자를 계산시키기보다 구조화 데이터로 먼저 계산하고, AI는 이상 변화의 설명 후보를 찾게 한다.
④ 가격: 좋은 회사와 좋은 주식은 다르다
훌륭한 기업도 기대가 너무 비싸면 수익률이 낮을 수 있다. PER·EV/EBITDA·PBR·FCF yield를 동종기업과 과거 범위에 비교하고, 역으로 현재 주가가 어떤 성장률과 마진을 전제하는지 본다.
⑤ 반증: 매수 이유보다 매도 이유를 먼저 적는다
“AI 시장이 성장한다”는 가설은 너무 넓다. 좋은 가설은 틀렸는지 판정할 수 있다.
“A전자의 신규 제품 매출 비중이 4분기 내 20%를 넘고, 총마진이 3%p 개선될 것이다.”
반증 조건
① 신규 제품 매출 비중 15% 미만
② 재고일수 2분기 연속 증가
③ 고객 집중도 상승
④ 경영진이 가이던스를 두 번 연속 하향
4. AI에게 던질 좋은 질문
“이 주식 살까?”는 질문이 너무 크고 답을 검증하기 어렵다. 역할을 잘게 나눠야 한다.
공시 분석 프롬프트
첨부한 이번 분기 보고서와 이전 분기 보고서만 사용하라.
1. 매출, 영업이익, 영업현금흐름의 변화를 표로 정리한다.
2. 숫자의 변화와 경영진의 설명을 각각 분리한다.
3. Risk Factors, MD&A, 주요 주석에서 새로 추가·삭제·강조된 문장을 찾는다.
4. 일회성 요인과 반복 가능한 요인을 구분한다.
5. 투자 가설을 지지하는 증거와 반증하는 증거를 같은 수로 제시한다.
6. 모든 주장에 페이지·섹션·원문 인용을 붙인다.
7. 근거가 없으면 추정하지 말고 '확인 불가'라고 쓴다.
악마의 변호인 프롬프트
나는 이 기업에 투자하고 싶어 확증편향이 생길 수 있다.
내 투자 가설이 틀렸다고 가정하고 가장 강한 반론 5개를 만들어라.
각 반론에 필요한 검증 데이터와 다음 공시에서 볼 지표를 적어라.
단순한 거시경제 위험 대신 이 기업에 특화된 실패 경로를 우선하라.
실적 발표 비교 프롬프트
최근 4개 분기 컨퍼런스콜을 시간순으로 비교하라.
- 반복해서 회피한 질문
- 확신 표현이 약해진 주제
- 숫자로 답하다 정성 표현으로 바뀐 주제
- 새로 등장한 KPI
- 약속했지만 후속 확인이 없는 항목
을 원문과 함께 추출하라.
5. 예시: A전자 실적을 AI와 함께 본다면
가상의 기업 A전자가 다음 숫자를 발표했다고 하자.
| 지표 | 전년 | 현재 | 표면적 해석 |
|---|---|---|---|
| 매출 | 1조 | 1.2조 | +20%, 좋아 보임 |
| 영업이익 | 1,000억 | 1,080억 | +8%, 마진 하락 |
| 영업현금흐름 | 900억 | 420억 | 현금 전환 악화 |
| 재고 | 1,500억 | 2,400억 | 매출보다 빠른 증가 |
헤드라인만 보면 매출 20% 성장이다. AI는 다음 질문을 만들 수 있다.
- 매출 증가는 판매량인가 가격 인상인가?
- 영업이익률이 10%에서 9%로 내려간 이유는?
- 재고 증가가 신제품 선제 생산인지 수요 둔화인지?
- 현금흐름 악화가 매출채권·재고 중 어디서 발생했는가?
- 경영진이 이전 분기에 말한 재고 정상화 시점은 지켜졌는가?
여기서 AI의 가치는 “매수”라는 한 단어가 아니라, 좋아 보이는 숫자 뒤에 숨어 있는 검증 질문을 빠르게 만드는 것이다.
6. AI 투자 자동화: 주문보다 리서치부터
신규 공시
정규화
변화 감지
설명·반증
숫자·인용
사람 검토
자동화 레벨
| 레벨 | 자동화 | 추천 |
|---|---|---|
| 1 | 관심종목 공시·가격 알림 | 누구에게나 추천 |
| 2 | 요약·diff·투자 가설 업데이트 | 가장 실용적 |
| 3 | 규칙 기반 후보 선정·모의 포트폴리오 | 백테스트 필요 |
| 4 | 사람 승인 후 주문 API 호출 | 한도·중지장치 필수 |
| 5 | LLM이 완전 자동 주문 | 개인 투자자에게 비추천 |
Python 구조 예시: 주문 없는 안전한 리서치 봇
def daily_research(watchlist, as_of_date):
filings = fetch_new_filings(watchlist, as_of_date) # DART / EDGAR
facts = parse_xbrl_with_decimal_types(filings)
changes = deterministic_checks(facts) # 계산은 코드로
reports = []
for filing in filings:
analysis = llm_analyze(
current=filing,
previous=get_previous_filing(filing),
detected_changes=changes,
require_citations=True
)
verified = verify_numbers_and_quotes(analysis, filing)
reports.append(build_research_note(verified))
send_digest(reports) # 메일/Slack/Notion
update_thesis_dashboard(reports)
# place_order()는 의도적으로 없다.
숫자 계산은 Python·SQL로 하고, LLM은 설명과 분류에 사용한다. 모든 리포트에는 as_of_date, 원문 URL, 공시 ID, 모델·프롬프트 버전을 남긴다. SEC API는 인증키 없이 JSON을 제공하지만 자동 접근 정책과 User-Agent 등 Fair Access 지침을 지켜야 한다. OpenDART는 인증키를 신청해 사용한다.
자동주문까지 간다면 최소 안전장치
- 실계좌 전 최소 수개월 모의투자·paper trading
- 종목당·일별·전략별 최대 손실 및 주문금액 제한
- 시장가 주문 제한과 허용 시간대 지정
- 중복 주문 방지 idempotency key
- API 장애·가격 급변·데이터 지연 시 fail-closed
- LLM은 주문 수량을 직접 생성하지 않고 deterministic risk engine 통과
- Kill switch와 모든 주문·취소·오류 감사로그
한국투자증권은 시세 수신·주문·잔고 조회를 위한 Open API와 샘플 저장소를 제공한다. 하지만 API가 주문을 가능하게 해준다는 사실과 전략이 수익성이 있다는 사실은 완전히 별개다.
7. AI는 어떻게 공시를 ‘신호’로 바꾸나
LLM은 수정구슬이 아니라 확률적으로 다음 토큰을 생성하는 언어 엔진이다. 그래서 “다음 달 주가”보다 “지난 분기와 달라진 문장, 경영진의 약속, 숫자 사이의 모순”을 찾게 해야 한다. 숫자는 코드가 계산하고, 문맥은 LLM이 읽고, 최종 판단은 사람이 한다.
공시·콜 transcript
XBRL + RAG
margin·guidance·risk diff
계산·인용·시점
가설과 반증 조건
AI 신호 = 예언이 아니라, 사람이 재검토할 연구 특징(feature)이다.
| 부품 | 잘하는 일 | 맡기면 위험한 일 |
|---|---|---|
| LLM | 문장 분류, 요약, 두 문서 diff, 반론 생성 | 정밀 산술, 출처 없는 사실, 주문량 결정 |
| Embedding·RAG | 긴 문서에서 관련 근거 후보 검색 | 검색 결과가 완전하다는 보장 |
| Python·SQL | 비율, 시계열, 재현 가능한 규칙 | 모호한 경영진 표현의 의미 해석 |
| Agent | 관찰→계획→도구 호출→검증→기록 반복 | 무제한 권한·무감독 실계좌 실행 |
시간 절단선(time cutoff)은 필수다. 모든 입력에 published_at과 available_at을 기록하고, 에이전트가 as_of_date 이후 자료를 검색하지 못하게 한다. 이 한 줄이 “천재 백테스트”와 재현 가능한 연구를 가른다.
8. 오늘 만드는 노코드 버전: ChatGPT Work
ChatGPT Work는 여러 소스와 파일을 엮어 반복 업무를 만들 때 쓸 수 있다. 제품·플랜·관리자 설정에 따라 앱 연결과 예약 기능 범위는 달라질 수 있다. 분기 심층 분석은 Deep research, 매일 변동 확인은 예약 작업처럼 역할을 나누면 된다.
- 작업공간:
AI 투자 연구소를 만들고 아래 세 파일을 둔다. - watchlist.csv:
ticker,company,market,thesis,last_reviewed_at. - scoring_rubric.md: 성장·현금흐름·재무안전·밸류에이션·반증을 각각 0~5점으로 정의한다.
- thesis_template.md: 주장, 근거, 반대근거, 무효화 조건, 다음 확인일을 고정한다.
- 첫 실행: 관심기업 하나의 최근 공시와 직전 공시를 비교하고 모든 문장에 원문 링크·쪽수를 요구한다.
- 예약: 매일은 신규 공시 감시, 매주는 가설 점검, 분기는 Deep research로 전체 재작성한다.
[예약 작업 프롬프트]
매주 월~금 07:30 KST에 watchlist.csv의 기업을 확인한다.
지난 실행 이후 새 DART/EDGAR 공시만 찾고, 없으면 '신규 공시 없음'이라고 쓴다.
새 문서가 있으면 매출·마진·현금흐름·guidance·risk factor의 변화를 표로 비교한다.
모든 사실에 원문 URL과 공시 시각을 붙이고, 추론은 '추론'이라고 표시한다.
매수·매도 지시는 하지 말고 thesis_template.md의 반증 조건만 업데이트한다.
9. 파일 작업이 많다면 Claude Cowork
Cowork는 Anthropic의 Claude 기능이다. ChatGPT Work와 같은 이름의 기능이 아니다. 선택한 폴더 안의 파일을 읽고 결과물을 갱신하는 일이 많다면 편리하다. 홈 폴더 전체가 아니라 투자 연구 전용 폴더만 허용하는 게 핵심이다.
ai-invest-lab/
├─ inbox/ # 내려받은 원문, 읽기 전
├─ watchlist.csv
├─ theses/005930.md # 종목별 가설
├─ reports/2026-09-05.md
├─ skills/ # 반복 SOP
└─ archive/ # 처리 완료 원문
실행 순서: ① 전용 폴더 선택 → ② “inbox의 새 공시만 처리”라고 범위 제한 → ③ 기존 thesis와 diff → ④ reports에 날짜별 결과 저장 → ⑤ 사람이 승인한 뒤 thesis 갱신 → ⑥ 예약 실행. 클라우드에서 계속되는 작업이라도 권한 범위와 출력 파일을 먼저 작게 잡는다.
| 선택 | 잘 맞는 일 | 공통 원칙 |
|---|---|---|
| ChatGPT Work | 연결된 정보원, 심층 조사, 재사용 결과물, 예약 작업 | 최소 권한, 원문 인용, 사람 승인, secret 분리 |
| Claude Cowork | 선택 폴더 중심 파일 정리·갱신, 병렬 작업, 예약 작업 |
10. Skill 모음집: 프롬프트를 SOP로 승격시키기
Skill은 “수익률 300% 비법”이 아니라 입력·절차·검증·출력을 고정한 재사용 업무 매뉴얼이다. 프롬프트 한 줄보다 버전 관리와 감사가 쉽다.
이번/직전 공시의 문장·숫자 변화
이익과 현금흐름의 질 검사
가설을 깨는 반대 근거 탐색
가정별 가치 범위 계산
공시·실적·정책 이벤트 감시
누수·비용·편향 검사
# skills/filing-diff/SKILL.md
목적: 두 공시 사이의 경제적으로 중요한 변화만 찾는다.
입력: current_filing, previous_filing, as_of_date
절차: 표 구조화 → 수치 diff → 서술 diff → 반증 후보 → 인용 검증
출력: changes[], unchanged_material_items[], unknowns[]
규칙:
- 금액과 비율은 코드 계산값만 사용한다.
- 원문 위치 없는 문장은 출력하지 않는다.
- as_of_date 이후 자료는 사용하지 않는다.
- 중요도는 영향×확률로 설명하되 매수·매도 판단은 만들지 않는다.
맨 위에는 router skill을 둔다. “새 공시면 filing-diff, 분기 결산이면 financial-quality, 가설 갱신 전에는 thesis-challenger”처럼 작업을 연결한다. Skill 변경일·버전·테스트 케이스도 함께 남긴다.
11. 개발자 버전: 데이터 파이프라인을 실제로 나누기
언제
원문
불변 보관
구조화
검색
검증·전달
최소 테이블은 filings(원문과 공개시각), facts(재무 항목·단위·기간), theses(가설 버전), signals(근거와 모델 버전), trade_proposals(사람 승인 상태)다. 원문은 덮어쓰지 말고 hash를 남긴다.
class TradeProposal(BaseModel):
symbol: str
side: Literal["BUY", "SELL"]
thesis_id: str
evidence_ids: list[str]
max_price: Decimal
requested_notional: Decimal
expires_at: datetime
proposal = research_agent.propose(snapshot) # LLM: 근거 있는 제안
verified = citation_validator.check(proposal) # 코드: 원문·시점 검증
bounded = risk_engine.apply(verified, portfolio) # 코드: 수량·한도 결정
ticket = approval_queue.create(bounded) # 사람: 승인/거절
if ticket.approved and market_guard.is_open():
broker.submit(ticket, idempotency_key=ticket.id)
LLM은 제안서를 쓰고 risk engine은 거부권을 가진다. 설명용 한도 예시는 종목당 5%, 일 손실 1%, 일 회전율 10%처럼 둘 수 있지만, 이는 추천 수치가 아니다. 자신의 자산·시장·전략으로 스트레스 테스트해 결정해야 한다. 실행기는 주문 전 가격 신선도, 거래정지, 호가 공백, 중복키, 일 한도, kill switch를 다시 확인한다.
12. 자동매매, 5개의 문을 통과해야 실계좌다
- Research-only: 4주간 공시 요약과 가설만 저장한다.
- Historical replay: 당시 공개된 데이터만 재생해 비용 전·후 성과를 분리한다.
- Paper trading: 실시간 데이터로 최소 수개월 주문 흉내를 낸다.
- Human approval: 아주 작은 한도에서 모든 주문을 사람이 승인한다.
- Constrained auto: 검증된 한 전략만 허용하고 손실·오류 시 자동 중지한다.
※ 실제 전략 성과가 아닌 개념 설명용 가상 수치. 비용·과최적화·시장 변화가 성과를 깎는 모습을 표현했다.
13. 백테스트: 과거의 정답지를 몰래 보면 누구나 천재다
AI 투자에서 가장 위험한 함정은 look-ahead bias다. 2023년 실적을 분석하는 프롬프트를 2026년 모델에 던지면, 모델이 학습 중 이미 이후 결과를 봤을 가능성이 있다. 최근 연구는 LLM 금융 예측의 training-data cutoff와 look-ahead bias를 별도로 측정해야 한다고 지적한다.
□ 그 시점에 실제 공개된 데이터만 사용했나?
□ 상장폐지 종목을 제외한 survivorship bias는 없는가?
□ 공시 시각 이후에만 주문하도록 했나?
□ 수수료·세금·스프레드·슬리피지를 포함했나?
□ 전략을 만든 구간과 평가 구간을 분리했나?
□ 여러 전략 중 가장 좋은 것만 고른 data snooping을 보정했나?
□ 시장 국면별·종목별 결과가 일관적인가?
좋은 백테스트는 높은 수익률보다 망가지기 어려운 과정을 보여준다. CAGR만 보지 말고 최대낙폭, Sharpe, turnover, 승률, 손익비, 월별·국면별 안정성과 benchmark 대비 초과수익을 함께 본다.
14. AI가 읽어야 할 투자 노트 구조
company: A전자
as_of_date: 2026-09-05
thesis:
- 신규 제품 매출 비중 확대
- 원가 정상화로 총마진 개선
evidence_for:
- Q2 신규 제품 비중 17% [IR p.12]
evidence_against:
- 재고일수 61일 → 78일 [분기보고서 주석 8]
valuation:
base_case: "가정과 계산식 기록"
invalidation:
- 신규 제품 비중 2개 분기 연속 15% 미만
- 총마진 추가 2%p 하락
next_events:
- Q3 실적 발표
confidence: "숫자 확률 대신 근거 충분성으로 표현"
source_ids: [dart-..., ir-...]
human_decision: HOLD_FOR_REVIEW
이 구조가 쌓이면 AI는 매일 새로운 의견을 창작하는 대신 기존 가설의 어떤 칸이 변했는지를 알려준다. 투자 판단이 뉴스 기분에 흔들리는 것도 줄어든다.
15. 초보에서 승인형 자동주문까지: 8주 로드맵
- 1주차 — 관심종목 5개만
DART/EDGAR의 최근 4개 분기 공시와 IR 자료로 종목별 한 페이지 투자 노트를 만든다. - 2주차 — 평가표 고정
매출·마진·현금·재고·가이던스·위험요인을 같은 rubric으로 비교한다. - 3주차 — Work 또는 Cowork 자동화
신규 공시 감시와 날짜별 보고서 생성을 예약한다. 아직 주문은 없다. - 4주차 — Skill 3개
filing-diff, financial-quality, thesis-challenger의 테스트 사례와 오류율을 기록한다. - 5주차 — API·DB
원문 불변 저장, XBRL 정규화, 출처 ID와 as-of 시점을 구현한다. - 6주차 — historical replay
학습 구간과 평가 구간을 분리하고 수수료·슬리피지·상장폐지를 반영한다. - 7주차 — paper trading
실시간 데이터 지연, 주문 거절, 부분 체결, 재시작과 중복 주문을 일부러 테스트한다. - 8주차 이후 — 사람 승인형 소액 실험
한 전략·작은 한도·kill switch로 시작한다. 완전 자동은 장기간의 표본 외 성과와 운영 안정성을 확인한 뒤에도 보수적으로 판단한다.
16. 이 시스템에서 진짜 돈이 되는 부분
AI가 남들보다 미래를 정확히 보는 능력은 기대보다 약할 수 있다. 하지만 다음 세 가지는 현실적으로 가치가 있다.
- Coverage: 사람이 피곤해서 놓칠 공시를 빠짐없이 감시한다.
- Consistency: 좋아하는 종목과 싫어하는 종목을 같은 기준으로 평가한다.
- Latency: 공시가 나온 뒤 핵심 변화와 확인할 페이지를 더 빨리 찾는다.
결국 초과수익의 씨앗은 “AI가 정답을 알려줬다”보다 더 좋은 질문을 더 빨리, 더 꾸준히 했다에 가까울 가능성이 크다.
공식 사이트·참고 논문
- 금융감독원 OpenDART
- KRX 정보데이터시스템
- SEC EDGAR APIs
- FRED API
- 한국투자증권 Open API 공식 샘플
- OpenAI — ChatGPT Work 시작하기
- OpenAI — Scheduled tasks
- OpenAI — Deep research
- Anthropic — Claude Cowork
- FinGPT: Open-Source Financial Large Language Models
- Detecting Lookahead Bias in LLM Forecasts
- Look-Ahead-Bench for Point-in-Time Financial LLMs