AI 배당성장주 분석 시스템 만들기
15편 / 다중 조건 확장 1편
14편에서는 종목별 최근 뉴스 5건을 호재·악재·혼재·중립의 별도 신호로 연결했습니다. 이번 편에서는 뉴스에 자주 등장하는 “외국인과 기관이 샀다”는 표현을 실제 숫자로 확인하기 위해 5일·20일 순매수 흐름과 거래대금 대비 수급 강도를 설계합니다.
작성 기준일: 2026년 8월 22일
현재 공개 프로그램에는 실제 투자자별 수급 점수가 아직 포함되지 않았습니다. 이번 글은 이후 구현할 계산식·데이터 구조·검증 기준을 먼저 고정하는 설계편입니다.
순매수 금액만 비교하면 종목 크기를 놓칩니다
외국인이 하루에 100억원을 순매수했다는 사실만으로 강한 수급이라고 결론 내리기 어렵습니다. 하루 거래대금이 5,000억원인 대형주와 120억원인 중소형주에서 같은 100억원은 전혀 다른 의미를 갖기 때문입니다.
또 하루 수급은 지수 리밸런싱, 블록딜, 프로그램 매매 같은 일회성 사건에 크게 흔들릴 수 있습니다. 그래서 이번 시스템은 금액·기간·지속성·거래대금 대비 비율을 함께 봅니다.
수급 분석은 여섯 단계로 설계합니다

- 일별 원천 수집: 종목코드·거래일·투자자 구분별 매수금액과 매도금액을 가져옵니다.
- 순매수 계산: 매수금액에서 매도금액을 빼 외국인·기관·개인의 일별 순매수 금액을 만듭니다.
- 기간 합산: 최근 5거래일과 20거래일의 누적 순매수를 각각 계산합니다.
- 규모 보정: 누적 순매수를 같은 기간 거래대금으로 나눠 종목 크기에 따른 차이를 줄입니다.
- 지속성 검사: 순매수였던 날의 수와 외국인·기관 동반 순매수 여부를 확인합니다.
- 상태 분류: 유입·중립·유출·계산 보류로 나누고 원천 기준일과 누락 사유를 함께 저장합니다.
핵심 지표는 금액·강도·지속성입니다
| 지표 | 계산 | 확인하는 질문 |
|---|---|---|
| 5일 누적 순매수 | 최근 5거래일 매수금액 − 매도금액 합계 | 단기 자금이 들어오고 있는가? |
| 20일 누적 순매수 | 최근 20거래일 순매수 합계 | 한 달 가까이 흐름이 유지되는가? |
| 수급 강도 | 기간 누적 순매수 ÷ 기간 누적 거래대금 × 100 | 거래 규모에 비해 매수세가 강한가? |
| 순매수 일수 | 기간 중 순매수 금액이 0보다 큰 거래일 수 | 하루가 아니라 여러 날 반복됐는가? |
| 동반 순매수 | 외국인과 기관의 기간 순매수가 모두 양수 | 두 주요 주체가 같은 방향인가? |
| 수급 반전 | 5일 방향과 20일 방향 비교 | 최근 흐름이 장기 흐름과 달라졌는가? |
수급 강도 계산 예시
어떤 종목의 최근 20일 외국인 순매수가 300억원이고 같은 기간 거래대금이 6,000억원이라면 외국인 수급 강도는 5%입니다.
foreign_flow_strength_20d = foreign_net_buy_20d / trading_value_20d * 100
# 300억원 / 6,000억원 × 100 = 5%
이 값은 주가 상승 확률이 아닙니다. 해당 기간 거래에서 외국인 순매수가 차지한 상대적 크기를 나타내는 비교 지표입니다.
5일과 20일을 함께 보는 이유
| 5일 흐름 | 20일 흐름 | 해석 후보 |
|---|---|---|
| 유입 | 유입 | 단기와 중기 흐름이 같은 방향 |
| 유입 | 유출 | 최근 반전 가능성, 추가 확인 필요 |
| 유출 | 유입 | 기존 유입 이후 단기 차익실현 가능성 |
| 유출 | 유출 | 지속적인 자금 이탈 가능성 |
표의 문장은 원인이나 미래 방향을 확정하지 않습니다. 수급 변화가 지수 편입, 업종 리밸런싱, 파생상품 만기 같은 기술적 요인인지도 별도로 확인해야 합니다.
우선주는 보통주보다 유동성 조건을 먼저 확인합니다
우선주는 거래가 적어 소규모 주문만으로 순매수 비율이 크게 보일 수 있습니다. 따라서 수급점수를 계산하기 전에 최근 20일 평균 거래대금, 거래 정지 여부, 무거래일 수를 품질 게이트로 확인합니다.
- 최근 20일 중 거래가 없는 날이 지나치게 많은가?
- 평균 거래대금이 비교 가능한 수준인가?
- 보통주 수급을 우선주 수급으로 잘못 복사하지 않았는가?
- 종류주별 종목코드가 정확히 연결됐는가?
저유동성 우선주는 강한 수급이 아니라 계산 보류로 남기는 편이 안전합니다.
미래정보를 막으려면 거래일 기준을 고정해야 합니다
백테스트에서 8월 1일 종가로 종목을 선정했다면 8월 1일까지 공개된 수급만 사용해야 합니다. 다음 거래일 자료나 나중에 수정된 파일을 섞으면 당시에는 알 수 없었던 정보가 들어갑니다.
- selection_date: 종목을 고르는 기준일
- available_date: 원천자료를 실제 사용할 수 있었던 날짜
- window_start: 5일·20일 계산을 시작한 거래일
- window_end: 계산에 포함한 마지막 거래일
- source_status: 정상·누락·지연·정정 여부
수급점수는 품질 게이트를 통과한 뒤 계산합니다
초기 설계에서는 외국인과 기관을 각각 50점으로 나누고 5일·20일 강도, 순매수 일수, 동반 매수 여부를 조합합니다. 하지만 실제 분포를 확인하기 전에는 구간과 가중치를 확정하지 않습니다.
if missing_trading_days or low_liquidity:
flow_status = "needs_review"
else:
foreign_score = score_strength_and_persistence(foreign_rows)
institution_score = score_strength_and_persistence(institution_rows)
flow_score = foreign_score * 0.5 + institution_score * 0.5
점수보다 먼저 저장할 것은 계산 기준일, 원천 출처, 누락 거래일, 거래대금, 외국인·기관 원시 금액입니다. 그래야 화면의 숫자가 이상할 때 다시 계산할 수 있습니다.
15편에서 확정한 설계
- 외국인·기관 순매수를 5일과 20일로 나눕니다.
- 절대금액뿐 아니라 거래대금 대비 수급 강도를 계산합니다.
- 순매수 일수와 동반 순매수 여부로 지속성을 확인합니다.
- 우선주는 유동성 게이트를 먼저 적용합니다.
- 수급은 뉴스처럼 기존 재무점수와 분리해 검증한 뒤 합산합니다.
다음 편에서는 차트 추세를 숫자로 바꿉니다
16편에서는 주가 차트를 눈으로만 해석하지 않고 20일·60일·120일 이동평균, 기간 수익률, 변동성과 낙폭을 같은 기준으로 계산합니다. 차트 신호도 매매 지시가 아니라 검토 순서를 정하는 보조 정보로 설계합니다.
이전 글
14편. 종목별 최신 뉴스 5건 분석하기 | 호재·악재·중립 신호 붙이기
공개 프로그램
KOSPI 장기계좌 분석 웹 프로그램
다음 글
16편. 차트 추세 점수 만들기 | 이동평균·수익률·변동성 분석
이 글은 데이터 분석 설계를 기록한 학습 콘텐츠이며 특정 종목의 매수·매도를 권유하지 않습니다. 투자자별 매매동향은 시장 상황과 거래 구조에 따라 달라질 수 있으며 투자 판단과 책임은 투자자 본인에게 있습니다.
'AI 배당투자 프로젝트' 카테고리의 다른 글
| 뉴스·재무·수급·차트 종합점수 만들기 | 다중 조건 스크리닝 (0) | 2026.08.23 |
|---|---|
| 차트 추세 점수 만들기 | 이동평균·수익률·변동성 분석 (0) | 2026.08.23 |
| 종목별 최신 뉴스 5건 분석하기 | 호재·악재·중립 신호 붙이기 (0) | 2026.08.23 |
| 실제 KOSPI 데이터로 장기계좌 분석 프로그램 만들기 | 웹 프로그램 공개 (0) | 2026.08.22 |
| 장기계좌 2개에 맞는 월간 리포트 만들기 | 안정형·성장형 자동 생성 (0) | 2026.08.02 |