콘텐츠로 이동

ADR-0059: 대상 ETF 선정 기준 — 국내 주식형에서 테마별 거래대금 상위 10종

  • 상태: 제안됨
  • 날짜: 2026-10-08

맥락

ADR-0024는 상품 범위를 "국내 상장 ETF 의 가격 변동 이유 설명"으로 정했다. 어떤 ETF 를 대상으로 삼는지는 정하지 않았다. 그동안 대상 목록(sources.toml 의 krx_etf.source.etf_map)은 반도체 29종에서 출발해 시장지수 1종, 섹터·테마 9종을 필요할 때마다 더한 39종이었다. 선정 기준이 한 곳에 적혀 있지 않았고, 거래가 몰리는 테마 (방산, 전력·원자력, 바이오 등)의 대표 ETF 다수가 대상 밖이었다.

대상을 넓히려면 기준이 먼저 필요하다. 이 목록 하나가 구성 목록 수집, 1분 가격 수집과 변동 판정, 가격 변동 요인 후보 분석, 전망 배치의 대상을 같이 정하기 때문이다. 목록이 커지면 매분 받아야 하는 종목 수가 늘고, 그 수는 KIS 호출 한도에 묶인다.

아래 수치는 모두 기준일 2026-10-07 의 KRX ETF 기본정보·구성 목록과 최근 60거래일 시세로 계산한 값이다.

  • 국내 주식형 ETF 는 409종이고 구성종목 합집합은 1,342종목이다.
  • 409종 가운데 85종은 60거래일 평균 거래대금이 하루 1억 원 미만이다.
  • 거래대금 상위 10종 가운데 9종이 시장대표 지수형(5종)과 반도체(4종)다.

결정

대상은 국내 주식형 ETF 가운데 테마별로 거래가 많은 것으로 한다. 규칙은 다음과 같다.

  1. 모집단: KRX ETF 기본정보에서 기초시장 국내 · 기초자산 주식 · 추적배수 일반. 해외기초, 레버리지·인버스, 채권·혼합은 여기서 빠진다.
  2. 전략형 제외: ETF 이름이나 기초지수명에 전략을 뜻하는 단어가 있는 것. 커버드콜, 배당, 밸류업, 그룹주, 지주회사, 스타일(가치·성장·변동성·ESG 등), 롱숏.
  3. 시장대표: 기초지수명이 대표 지수와 정확히 같은 것. 지수별 거래대금 1위만, 3종까지.
  4. 테마 배정: 구성종목 비중을 KIS 테마 분류로 합산해 가장 큰 테마가 50% 이상이면 그 테마로 한다. 못 미치면 기초지수명의 테마 단어로 정한다. 그것도 없으면 가장 큰 테마가 40% 이상일 때만 배정한다.
  5. 신재생에너지 분리: 전력·에너지로 배정된 ETF 중 기초지수명에 신재생·태양광·풍력·친환경·수소·기후가 있으면 신재생에너지, 아니면 전력·원자력으로 나눈다. 이렇게 해서 테마는 20개다.
  6. 인기 기준: 최근 60거래일 평균 거래대금.
  7. 선정: 테마별 상위 10종 가운데 일평균 1억 원 이상.
  8. 그룹주: 전략형 중 그룹주만 거래대금 상위 10종(일평균 1억 원 이상)을 넣는다.
  9. 앱 선별 종목: 앱에서 선별해 보여 주는 10종은 기준과 무관하게 포함한다.
  10. 제공하던 종목 유지: 이미 제공하던 ETF 는 순위 밖이어도 남긴다. 전략형으로 분류된 커버드콜만 뺀다.

목록은 정기적으로 갱신하지 않는다. 제공하던 ETF 는 빼지 않고, 필요가 생기면 추가만 한다. 상장폐지처럼 구성 목록이 더는 나오지 않는 ETF 는 그때 뺀다.

적용 결과 (기준일 2026-10-07)

적용 전 적용 후
대상 ETF 39 148
구성종목 383 623
1분 가격 수집 대상 (업종 참조 ETF 포함) 469 803
선정 근거 ETF 수
테마별 상위 10종 (20개 테마) 121
제공하던 종목 유지 (순위 밖) 14
그룹주 상위 10종 10
시장대표 3
  • 적용 전 39종 가운데 37종이 남고 커버드콜 2종이 빠진다. 새로 들어오는 ETF 는 111종이다.
  • 대상 148종이 국내 주식형 거래대금의 71%를 차지한다.
  • 앱 선별 10종은 모두 테마 상위 10종이나 시장대표 안에 들어 예외 처리가 필요 없었다.
  • 묶음별 ETF 수: 반도체 23, 2차전지 11, 그룹주 10, 바이오·헬스케어 10, 전력·원자력 10, 방산·우주 9, 인터넷·소프트웨어 9, 소비재 8, 자동차 7, 금융 7, 조선 6, IT·전자 6, 신재생에너지 5, 로봇 5, 게임 4, 소재 4, 엔터·미디어 4, 기계·산업재 3, 시장대표 3, 건설 2, 운송 1, 여행·레저 1.
  • 반도체가 23종인 것은 제공하던 종목을 유지했기 때문이다(순위 밖 13종).
  • 시장대표 3종은 KODEX 200, KODEX 코스닥150, KODEX 200TR 이다.

대안

  • 국내 주식형 전부(409종) — 구성종목이 1,342종목이라 1분 가격 수집이 지금 구조로 받을 수 있는 양을 넘는다. 거래도 소수에 몰려 있다. 85종은 하루 거래대금이 1억 원 미만이고, 선정한 148종이 전체 거래대금의 71%다. 그래서 지금 필요한 만큼만 정하고, 넓힐 필요가 생기면 기준을 고친다.
  • 테마 없이 거래대금 상위 N종 — 시장대표 지수형과 반도체에 쏠린다(상위 10종 중 9종). 코스피 전체형처럼 구성종목이 많은 ETF 가 들어와 수집량도 크다. 상위 144종을 고르면 구성종목이 1,042종목이다. 테마별로 고르면 같은 종목을 나눠 담은 ETF 끼리 묶여 623종목이다.
  • 순자산·조회수 기준 — 순자산은 기관이 크게 들고 있는 ETF 가 위로 온다. 조회수나 관심도는 증권사 내부 자료라 구할 수 없다. 하루 거래대금은 날마다 순위가 바뀌므로 60거래일 평균으로 완화했다.
  • 거래대금 하한 없음 — 하한이 없으면 하루 거래대금이 1억 원에 못 미치는 ETF 14종이 테마 상위 10종에 더 들어온다. 거래가 거의 없는 ETF 를 대상으로 삼지 않기 위해 하한을 둔다.
  • 전략형 포함
  • 커버드콜과 롱숏은 주식이 아닌 자산(옵션·선물)이 가격을 움직인다. 분석은 구성 주식만 본다.
  • 밸류업·스타일은 시장대표와 거의 같이 움직인다. KODEX 200 과의 일간 수익률 상관(중앙값)이 밸류업 0.98, 스타일 0.89 다. 설명이 시장대표와 겹친다.
  • 배당은 크게 움직이는 날이 드물다. 60거래일 중 하루 3% 이상 움직인 날이 중앙값으로 3.5일이고, 테마 ETF 는 20일이다.
  • 그룹주만은 전략형 가운데 예외로 상위 10종을 넣기로 했다(2026-10-08 결정).
  • 정기 갱신(분기마다 순위 재산정) — 순위에서 밀린 ETF 를 빼면 제공하던 설명이 사라진다. 그래서 빼지 않고 추가만 한다.

결과

  • 넓힐 때 고칠 곳. 기준은 아래 네 손잡이로 넓힌다.
손잡이 지금 값 넓히는 방향
테마별 개수 10 늘린다
거래대금 하한 일평균 1억 원 낮춘다
시장대표 지수별 1종, 3종 지수를 늘린다
전략형 그룹주 상위 10종만 배당·밸류업 순으로 넣는다
  • 수집 용량이 상한이다. 1분 가격 수집은 분 가격 워커 전용 KIS 키의 한도에 묶인다. 초당 16~17건이면 매분 약 960~1,020종목이고, 이 목록은 803종목이라 남는 여유가 150~200종목이다. 그 이상으로 넓히려면 구성종목 수집 주기를 바꿔야 한다.
  • 목록과 같이 걸리는 한도. 목록만 넓히면 아래 다섯 곳이 먼저 막히거나 나빠진다. 넷은 반영 전에 처리했고, 재무 수집 하나는 반영 뒤로 미뤘다(2026-10-09 결정).
  • 분 가격 수집을 전용 KIS 키로 옮겼다(ALPHA-1252, 2026-10-08 적용 — ADR-0060). 종전 방식은 매분 약 500종목이 한계다. 전용 키에서의 장중 관측은 목록을 반영한 뒤에 한다. 처음에는 관측을 마친 뒤에 반영하기로 했으나 순서를 바꿨다. 그래서 반영 뒤 첫 거래일이 전용 키와 803종목의 첫 장중 실행이다. 한 분 수집 소요는 계산으로 약 50초다. 문제가 생기면 목록 반영만 되돌린다(키 전환은 그대로 둔다).
  • iNAV 워커의 호출 간격을 0.5초에서 0.25초로 줄였다(ALPHA-1256). ETF 마다 매분 한 번을 차례로 부르므로 148종이면 0.5초 간격만으로 74초다. 0.25초면 간격만으로 37초다. 장중 한 바퀴 시간은 반영 뒤 첫 거래일에 잰다.
  • KRX 구성 목록 수집의 시한을 300초에서 660초로 올렸다(ALPHA-1250). 시한에 걸려 일부만 받으면 그날 구성 목록 전체가 반영되지 않고, 다음 날 장전 대상 목록도 다시 만들어지지 않는다. 충분한지는 반영 뒤 실행 기록으로 본다.
  • 저녁 공시 배치가 파싱하지 못하는 문서 때문에 매일 실패로 끝나던 것을 고쳤다(ALPHA-1163). 실패가 전부 확정 거부이고 문서 수가 상한(기본 3건) 이하면 실패로 닫지 않는다. 구성종목이 늘면 들어오는 공시 문서도 늘어난다.
  • 재무 수집(원천 관측 레인)이 정기보고서가 몰리는 달을 견디게 하는 일(ALPHA-1251)은 반영 조건으로 두지 않는다. 대상 회사가 구성종목 수만큼 늘어난다(383 → 623종목). 회사를 차례로 부르고 끝에 한 번 저장하므로, 그런 달(3·5·8·11월)에는 실행 시한(1,500초)을 넘겨 받은 것까지 잃을 수 있다. 목록을 넓히기 전에도 있던 한계이고, 시한만 올려서는 막을 수 없다. 다음으로 몰리는 11월 중순 전에 끝낸다.
  • 목록은 선정 결과에서 만든다. etf_map 의 줄은 손으로 적지 않는다. 전망 배치의 대상 목록이 그 줄을 그대로 읽으므로 형식을 유지한다. ETF 별 테마는 파이프라인 설정에 넣지 않는다. 파이프라인이 테마를 쓰지 않는다.
  • 업종 참조 ETF 목록과 겹치면 안 된다. 대상이 된 ETF 는 [minute_universe].sector_etf_ids 에서 뺀다. 이번에 15종이 옮겨 갔다.
  • 기준일 이후의 변화는 반영되지 않는다. 새로 상장하거나 거래가 늘어난 ETF 는 추가 결정을 따로 해야 들어온다. 테마 배정에 쓴 분류와 묶음 표는 내부 기준이고, 묶음을 바꾸면 "테마별 상위 10종"의 범위가 달라져 선정 ETF 가 바뀐다.
  • 새 ETF 는 적재가 따로 필요하다. 목록에 넣는 것만으로는 구성 목록·일봉·수급·재무 이력이 생기지 않는다. 반영할 때 새 ETF 와 새 구성종목의 적재·백필을 함께 한다.
  • 분석 대상도 같이 늘어난다. 가격 변동 요인 후보 분석과 전망 배치가 같은 목록을 쓴다. 분석 쪽 처리량은 이 결정의 범위 밖이고 따로 본다.