📡 스캔 데이터 누적 현황

2026-10-10 17:02:10 KST  ·  60초 자동 갱신 ← 대시보드 🔍 종목 뷰 📖 API 문서 ↩ 가볍게 보기

총 스캔 기록
42,703
stock_data_daily 행 수
20260921 ~ 20261010
누적 스캔일
20
고유 scan_date 수
고유 종목 수
3,819
전체 2,400종목 중 159% 커버
아카이브
주별 18주 · 38,448행
월별 4개월 · 8,559행
스캔 사이클 진행
스캔일: 20261010 ⟳ 진행 중
38%
918 / 2,400종목  ·  약 8시간 50분 후
배치 #132  ·  7종목/2.5분 → 1사이클 ≈ 14시간
롤링 아카이브 진행
주별 ✓
100%
20260928 · 2,400/2,400
월별 ✓
100%
2026-09 · 2,400/2,400

🔍 스캔 위치 상세

현재 위치: 인덱스 918 / 2,400  ·  배치 #132  ·  예상 완료 약 8시간 50분 후  ·  마지막 갱신: 2026-10-10 08:01 UTC

다음 스캔 배치 (예정)

#티커종목명
919 138040 메리츠금융지주
920 112040 위메이드
921 435620 하나금융25호스팩
922 265740 엔에프씨
923 015760 한국전력공사
924 298690 에어부산
925 439410 엔에이치스팩26호

직전 스캔 배치 (완료)

#티커종목명전략NCAV
912 025870 신라에스지 — —
913 120240 대정화금 — —
914 094840 슈프리마에이치큐 — —
915 092780 동양피스톤 — —
916 093230 이아이디 — —
917 017940 E1 — —
918 007330 푸른저축은행 — —

최근 스캔된 종목 (오늘 · 최대 21개)

티커종목명전략 NCAVPBRPERROE
018700 바른손 — 0.29x 0.55 -5.70 -9.6%
007680 대원 NCAV PBR 4.61x 0.14 -4.65 -3.0%
002220 한일철강 PBR -0.92x 0.45 -144.29 -0.3%
039310 세중 NCAV PBR 2.42x 0.21 11.98 1.8%
205100 엑셈 — 0.71x 0.80 15.00 5.4%
011300 성안 — -1.07x 1.42 -5.62 -25.3%
095610 테스 — 0.06x 7.39 56.60 13.1%
010690 화신 PBR PER RIM -1.21x 0.45 3.90 11.6%
009140 경인전자 NCAV PBR PER 1.76x 0.37 9.31 4.0%
284740 쿠쿠홈시스 PER RIM 0.61x 0.51 4.60 11.0%
263770 유에스티 NCAV PBR PER 1.29x 0.49 7.35 6.7%
119830 아이텍 — 0.73x 0.89 -31.23 -2.8%
085310 엔케이 NCAV PBR 1.08x 0.38 -17.11 -2.2%
013570 디와이 NCAV PBR PER 1.87x 0.26 7.77 3.4%
299030 하나기술 — -0.28x 1.21 -20.94 -5.8%
126700 하이비젼시스템 — 0.77x 0.64 -10.92 -5.9%
123410 코리아에프티 PER RIM 0.48x 0.59 3.49 16.9%
004250 엔피씨 PBR PER -0.17x 0.24 9.35 2.6%
030350 드래곤플라이 — -0.13x 2.73 -1.53 -178.4%
012160 영흥 PBR 0.54x 0.22 -0.83 -25.9%
259630 엠플러스 PER 0.36x 1.23 6.26 19.6%
날짜별 스캔 현황 최근 14일 · stock_data_daily
스캔일전체 NCAV 저PBR 저PER S-RIM
20261010 2,118 247 667 521 243
20261009 1,596 108 95 706 228
20261008 3,299 335 691 1135 443
20261007 2,103 246 661 512 238
20261006 2,109 246 670 514 238
20261005 2,106 244 668 515 237
20261004 2,093 242 666 510 235
20261003 2,105 242 670 513 239
20261002 2,087 242 664 510 234
20261001 2,100 247 679 522 239
20260930 2,122 249 691 533 243
20260929 2,124 245 690 537 245
20260928 2,122 244 680 537 245
20260927 2,106 246 680 543 244

📌 데이터 수집 파이프라인

scheduled (* * * * *)
  │
  ├─ min%2===0 && min%10!==0  →  runNcavScanKr()     ← 스캔 슬롯
  │     KIS API: BalanceSheet · IncomeStatement · InquirePrice  (7종목/배치)
  │     └─ computeStrategies()  →  stock_data_daily UPSERT
  │
  ├─ min%5===3  →  runArchiveTick()              ← 아카이브 슬롯
  │     stock_data_daily  →  stock_data_archive  (50종목/tick)
  │     완료 후: 14일 초과 daily 삭제 / 26주 초과 weekly 삭제
  │
  └─ min%5===0  →  MainForKor / MainForUs               ← 트레이딩 슬롯
슬롯 분리: 트레이딩(min%5===0) · 스캔(짝수 분, 10배수 제외) · 아카이브(min%5===3)는 서로 겹치지 않습니다. Cloudflare Workers Free 플랜 cron 제한(CPU 10ms/호출)을 초과하지 않도록 모든 작업이 롤링 방식으로 처리됩니다.

🗄️ DB 스키마 · 전략 조건

stock_data_daily

UNIQUE(ticker, scan_date)
ticker, name, scan_date    TEXT
last_price, market_cap     REAL
current_assets             REAL  -- 유동자산
total_liabilities          REAL  -- 총부채
net_income, per, pbr       REAL
eps, bps                   REAL
ncav_ratio  = (CA - 부채) / 시총
roe         = 순이익 / 자기자본
strategies  TEXT  -- JSON 배열
보존: 14일 · 주별 아카이브 완료 후 초과분 자동 삭제

stock_data_archive

UNIQUE(ticker, period_type, period_label)
period_type   TEXT  -- 'weekly' | 'monthly'
period_label  TEXT  -- YYYYMMDD | YYYY-MM
period_end_date  TEXT  -- 마지막 scan_date
days_scanned  INT   -- 기간 내 스캔된 날 수
-- 나머지 컬럼: stock_data_daily 동일
주별: 26주 보존  ·  월별: 무기한 보존

전략 태그 조건 computeStrategies()

ncav ncav_ratio ≥ 1.0 (유동자산 − 총부채) / 시가총액 ≥ 1
low_pbr 0 < pbr < 0.5 주가순자산비율 0.5 미만
low_per 0 < per < 10 주가수익비율 10 미만
s_rim roe > 0.08 && 0 < pbr < 1.0 ROE 8% 초과 + PBR 1 미만
전략 태그는 스캔 시점에 계산되어 strategies 컬럼에 JSON 배열로 저장됩니다 (예: ["ncav","low_pbr"]). 원시 데이터가 보존되므로 조건 변경 시 UPDATE SQL로 재태깅이 가능합니다.

📦 보존 정책 · 핵심 함수

일별
stock_data_daily
14일
≈ 8 MB
→
주별
stock_data_archive
26주
≈ 30 MB
→
월별
stock_data_archive
무기한
+0.7 MB/월
삭제 안전성: 아카이브 UPSERT(멱등) 완료 후에만 오래된 데이터를 삭제합니다. Timeout으로 중단되더라도 다음 tick에 같은 인덱스부터 재시도하므로 데이터 손실이 없습니다. D1 Free 5GB 기준 1년 후 총합 ≈ 50 MB (약 1% 사용).

핵심 함수

scanNcavBatchKr(env, state) 7종목 배치 스캔 · KIS API 3종 호출 → batchCandidates 반환 ncavScanner.js
computeStrategies({...}) 전략 태그 배열 계산 · 순수 함수 (I/O 없음) ncavScanner.js
upsertStockDataToD1(env, candidates, date) 전체 스캔 결과를 stock_data_daily에 batch UPSERT ncavScanner.js
runArchiveTick(env) stock_archive_state 읽기 → 50종목 아카이브 → 완료 시 삭제 ncavScanKr.js
getStocksByStrategyD1(env, strategy, date) json_each(strategies) EXISTS 쿼리로 전략 종목 조회 d1Store.js