{"schema_version": "1.1", "site": "한국주식데이터 (aikstockdata.com)", "@type": "DataCatalog", "name": "한국주식데이터 — 공개 데이터 카탈로그", "description": "이 사이트가 공개하는 모든 JSON·CSV 의 목차입니다. 파일 크기(file_bytes)·소형 대체본(fetch_guide)·신선도(freshness)·파이프라인 상태(pipeline)를 함께 싣습니다. 여기서 시작하세요.", "generated_kst": "2026-09-01 18:10", "generated_at": "2026-09-01T18:10:00+09:00", "code_rev": "b092b86", "as_of": "2026.09.01", "published_date_iso": "2026-09-01", "quote_basis_date": "20260831", "quote_basis_date_iso": "2026-08-31", "license": {"id": "aiksd-public-1.0", "name": "공공데이터(DART·금융위) 가공물 — 출처 표기 후 자유 이용(영리 포함)", "version": "1.0", "scope": "/data/public/**", "url": "https://aikstockdata.com/licenses/aiksd-public-1.0.txt", "full_text": "본 사이트가 공개하는 시세·공시·랭킹 데이터(/data/public/*)는 공공데이터(금융감독원 DART·금융위원회 공공데이터포털)를 가공한 2차 저작물로, 출처를 표기하면 영리 목적을 포함해 자유롭게 복제·재배포·인용할 수 있습니다. 다만 증권사 실시간 시세 등 원천의 실시간 정보를 그대로 재배포하는 것은 허용되지 않습니다."}, "citation": "자료: 한국주식데이터(aikstockdata.com) — 원천: 금융감독원 DART · 금융위원회 공공데이터포털", "snapshot_id": "20260901-181031", "source": "금융감독원 전자공시시스템(DART) · 금융위원회 공공데이터포털", "disclaimer": "정보 제공 목적이며 투자 권유가 아닙니다. 데이터는 갱신 시점 기준 스냅샷(매 거래일 저녁 6시 10분 갱신)이며, 투자 판단과 책임은 이용자 본인에게 있습니다.", "subtrees": {"daily": {"files": 145, "bytes": 7090349, "patterns": ["disclosures_{date}.csv", "disclosures_{date}.csv.license", "quotes_{date}.csv", "quotes_{date}.csv.license", "today_{date}.json"], "by_pattern": {"disclosures_{date}.csv": {"files": 28, "bytes": 1365657}, "disclosures_{date}.csv.license": {"files": 28, "bytes": 32004}, "quotes_{date}.csv": {"files": 30, "bytes": 5440599}, "quotes_{date}.csv.license": {"files": 35, "bytes": 39830}, "today_{date}.json": {"files": 24, "bytes": 212259}}, "sample": ["daily/disclosures_20260721.csv", "daily/disclosures_20260721.csv.license", "daily/quotes_20260720.csv", "daily/quotes_20260709.csv.license", "daily/today_20260731.json"]}, "releases": {"files": 1, "bytes": 3344, "patterns": ["index.json"], "by_pattern": {"index.json": {"files": 1, "bytes": 3344}}, "sample": ["releases/index.json"]}, "s": {"files": 5634, "bytes": 36861589, "patterns": ["{code}.json", "{code}_history.json"], "by_pattern": {"{code}.json": {"files": 2836, "bytes": 12245386}, "{code}_history.json": {"files": 2798, "bytes": 24616203}}, "sample": ["s/000020.json", "s/000020_history.json"]}, "schemas": {"files": 9, "bytes": 83686, "patterns": ["disclosure_impact.schema.json", "disclosures.schema.json", "earnings.schema.json", "excluded.schema.json", "quotes_slim.schema.json", "rankings.schema.json", "screen.schema.json", "stock.schema.json", "today.schema.json"], "by_pattern": {"disclosure_impact.schema.json": {"files": 1, "bytes": 12537}, "disclosures.schema.json": {"files": 1, "bytes": 10866}, "earnings.schema.json": {"files": 1, "bytes": 6930}, "excluded.schema.json": {"files": 1, "bytes": 5023}, "quotes_slim.schema.json": {"files": 1, "bytes": 5382}, "rankings.schema.json": {"files": 1, "bytes": 12714}, "screen.schema.json": {"files": 1, "bytes": 4707}, "stock.schema.json": {"files": 1, "bytes": 12458}, "today.schema.json": {"files": 1, "bytes": 13069}}, "sample": ["schemas/disclosure_impact.schema.json", "schemas/disclosures.schema.json", "schemas/earnings.schema.json", "schemas/excluded.schema.json", "schemas/quotes_slim.schema.json", "schemas/rankings.schema.json", "schemas/screen.schema.json", "schemas/stock.schema.json", "schemas/today.schema.json"]}, "snapshots": {"files": 18, "bytes": 775872, "patterns": ["disclosure_impact_2026-08-06.json", "disclosure_impact_2026-08-07.json", "disclosure_impact_2026-08-08.json", "disclosure_impact_2026-08-10.json", "disclosure_impact_2026-08-11.json", "disclosure_impact_2026-08-12.json", "disclosure_impact_2026-08-13.json", "disclosure_impact_2026-08-14.json", "disclosure_impact_2026-08-17.json", "disclosure_impact_2026-08-18.json", "disclosure_impact_2026-08-24.json", "disclosure_impact_2026-08-25.json", "disclosure_impact_2026-08-26.json", "disclosure_impact_2026-08-27.json", "disclosure_impact_2026-08-28.json", "disclosure_impact_2026-08-31.json", "disclosure_impact_2026-09-01.json", "index.json"], "by_pattern": {"disclosure_impact_2026-08-06.json": {"files": 1, "bytes": 19338}, "disclosure_impact_2026-08-07.json": {"files": 1, "bytes": 20458}, "disclosure_impact_2026-08-08.json": {"files": 1, "bytes": 20545}, "disclosure_impact_2026-08-10.json": {"files": 1, "bytes": 46040}, "disclosure_impact_2026-08-11.json": {"files": 1, "bytes": 53742}, "disclosure_impact_2026-08-12.json": {"files": 1, "bytes": 54624}, "disclosure_impact_2026-08-13.json": {"files": 1, "bytes": 46122}, "disclosure_impact_2026-08-14.json": {"files": 1, "bytes": 47316}, "disclosure_impact_2026-08-17.json": {"files": 1, "bytes": 47316}, "disclosure_impact_2026-08-18.json": {"files": 1, "bytes": 49046}, "disclosure_impact_2026-08-24.json": {"files": 1, "bytes": 48369}, "disclosure_impact_2026-08-25.json": {"files": 1, "bytes": 50995}, "disclosure_impact_2026-08-26.json": {"files": 1, "bytes": 51564}, "disclosure_impact_2026-08-27.json": {"files": 1, "bytes": 52085}, "disclosure_impact_2026-08-28.json": {"files": 1, "bytes": 53300}, "disclosure_impact_2026-08-31.json": {"files": 1, "bytes": 53606}, "disclosure_impact_2026-09-01.json": {"files": 1, "bytes": 55579}, "index.json": {"files": 1, "bytes": 5827}}, "sample": ["snapshots/disclosure_impact_2026-08-06.json", "snapshots/disclosure_impact_2026-08-07.json", "snapshots/disclosure_impact_2026-08-08.json", "snapshots/disclosure_impact_2026-08-10.json", "snapshots/disclosure_impact_2026-08-11.json", "snapshots/disclosure_impact_2026-08-12.json", "snapshots/disclosure_impact_2026-08-13.json", "snapshots/disclosure_impact_2026-08-14.json", "snapshots/disclosure_impact_2026-08-17.json", "snapshots/disclosure_impact_2026-08-18.json", "snapshots/disclosure_impact_2026-08-24.json", "snapshots/disclosure_impact_2026-08-25.json", "snapshots/disclosure_impact_2026-08-26.json", "snapshots/disclosure_impact_2026-08-27.json", "snapshots/disclosure_impact_2026-08-28.json", "snapshots/disclosure_impact_2026-08-31.json", "snapshots/disclosure_impact_2026-09-01.json", "snapshots/index.json"]}}, "coverage": {"universe_n": 2798, "published_n": 2792, "excluded_n": 6, "note": "수록 대상 2,798 중 정상수집 2,792, 제외 6(해당 거래일 시세 미수신 — 거래정지·정리매매·신규상장 미반영·상장폐지·코드불일치 등)", "stock_json_files": 2836, "sitemap_stock_pages_n": 2728, "sitemap_stock_urls_n": 1463, "sitemap_frozen": true, "sitemap_frozen_note": "확대분을 색인 후보로 올리지 않기로 한 결정(2026-08-18)에 따라 종목 사이트맵을 동결했습니다. 종목 페이지·JSON·MCP 는 전부 그대로 제공되며, 사이트맵에만 싣지 않은 것입니다.", "rankings_eligible_n": 2436, "markets": {"KOSDAQ": 1770, "KOSPI": 916, "KONEX": 106}, "markets_label": "KOSPI·KOSDAQ·KONEX", "definitions": {"universe_n": "그날 발행 대상 유니버스 종목 수", "published_n": "그중 해당 거래일 시세를 정상 수신한 종목 수", "excluded_n": "시세 미수신으로 빠진 종목 수(universe_n - published_n)", "stock_json_files": "실제로 게시된 /data/public/s/{code}.json 파일 수 (subtrees.s.by_pattern 실측과 같은 값)", "sitemap_stock_pages_n": "종목 상세 페이지를 만들고 사이트맵 후보로 삼은 종목 수. 시세·재무·공시가 전부 없는 종목은 빠지므로 stock_json_files 보다 작을 수 있다", "sitemap_stock_urls_n": "sitemap-stocks.xml 에 **실제로 실린** 종목 URL 수. 동결이 걸려 있으면 후보 수보다 작다", "sitemap_frozen": "종목 사이트맵이 동결돼 있는가(참이면 sitemap_frozen_note 에 이유가 있다)", "rankings_eligible_n": "랭킹 집계 대상 종목 수. 유니버스에서 보통주 여부·거래상태·섹터 규칙을 차례로 적용한 뒤 남은 수이며 단계별 내역은 rankings.json 의 eligibility 에 있다. 종목 페이지·시세·공시는 우선주·리츠·스팩까지 전부 제공되고 랭킹에서만 좁혀진다", "markets": "시장별 발행 종목 수(그날 시세를 수신한 종목 기준). 여기 없는 시장은 그날 발행하지 않은 것이다 — 0과 '없음'을 섞지 않으려고 키 자체를 만들지 않는다", "markets_label": "화면·문서가 커버리지를 말할 때 쓰는 표기. markets 에서 만들며 손으로 적지 않는다"}}, "quality": {"transform_version": "p2.2026-07-17", "dataset": "public (FSC quotes + DART disclosures/financials)", "not_included_fields": ["PER", "PBR", "업종", "투자의견", "목표가", "실시간가", "투자자별 수급(외국인·기관·개인 순매수)", "분봉·틱", "배당", "재무상태표(자산·부채·자본)"], "not_included_reasons": {"PER": "시세 파생 지표 — 계산에 쓰는 EPS 기준이 제공자마다 달라 값이 갈린다", "PBR": "위와 같음(BPS 기준 상이)", "업종": "공공데이터 원천에 표준 업종 분류가 없다", "투자의견": "증권사 리서치 파생 — 재배포 불가", "목표가": "증권사 리서치 파생 — 재배포 불가", "실시간가": "T+1 확정 종가만 다룬다(실시간은 거래소 유료 시세)", "투자자별 수급(외국인·기관·개인 순매수)": "금융위 공공데이터에 포함되지 않는다. KRX 정보데이터시스템에 있으나 재배포 조건이 달라 여기서 제공하지 않는다", "분봉·틱": "원천이 일별 확정 종가셋이라 일 단위가 최소 단위다", "배당": "공시(배당 결정)로는 다루지만 종목별 배당수익률·이력 시계열은 없다", "재무상태표(자산·부채·자본)": "손익 3종(매출·영업이익·순이익)만 적재한다"}, "partially_included_fields": {"52주 신고가·신저가": "제공함 — rankings.json 의 hi52(종목 목록·건수)와 today.json 의 highs_lows_52w. 단 개별 종목 JSON 에 week52_high/low 전용 필드는 없고, 종목별 시계열(s/{code}_history.json)로 직접 계산할 수 있다."}, "note": "위 필드는 공개 데이터에 의도적으로 미포함(증권사 파생·실시간 금지). null=미제공(0과 다름). 파이프라인 예외·정정 이력은 /data/public/notices.json 참조."}, "freshness": {"status": "fresh", "publish_status": "ok", "this_run_status": "ok", "recent_health": "ok", "status_fields_note": "this_run_status = 이번 발행이 검증 게이트를 모두 통과했는가(gates_passed 로 판정) · recent_health = 최근 실행이 안정적인가(consecutive_failure_days 로 판정). publish_status 는 recent_health 의 옛 이름입니다.", "consecutive_failure_days": 0, "status_computed_at_kst": "2026-09-01 18:10", "quote_as_of_age_days": 1, "snapshot_id": "20260901-181031", "generated_at_kst": "2026-09-01 18:10", "quote_as_of": "20260831", "quote_as_of_iso": "2026-08-31", "disclosure_through": "20260828", "delayed_after": "2026-09-04", "stale_after": "2026-09-07", "next_update": "다음 거래일 18:10 KST", "missing_dates": ["20260817"], "backfill_policy": "다음 성공 발행에 소급 포함합니다. 원천(금융위·DART)이 과거 거래일을 계속 제공하므로, 실패한 날의 시세·공시는 복구 실행에서 함께 수집돼 daily 아카이브와 종목별 시계열(s/{code}_history.json)에 채워집니다. 즉 이 목록은 **영구 구멍이 아니라 지연**입니다. 다만 원천이 그 날짜를 내리면(상장폐지 종목 등) 채워지지 않을 수 있으므로, 인용 시점의 missing_dates 를 함께 기록해 두세요.", "backfill_applies_to": ["daily/quotes_{YYYYMMDD}.csv", "daily/today_{YYYYMMDD}.json", "s/{code}_history.json"], "missing_dates_note": "보유 구간(첫 날~마지막 날) 안에서 **평일인데 목록에 없는 날**입니다. KRX 휴장 달력을 갖고 있지 않아 공휴일과 발행 실패를 여기서 구분하지 못합니다 — 임시공휴일·대체휴일이 이 목록에 섞일 수 있습니다. 정확한 휴장 여부는 KRX 를 확인하세요. 무엇을 세었는지 밝히는 편이 숫자를 빼는 것보다 조인하는 쪽에 쓸모 있다고 판단했습니다.", "note": "★status 와 quote_as_of_age_days 는 status_computed_at_kst 시점의 판정이다. 발행이 멈추면 이 값들이 낡아 실제보다 신선해 보인다 — **오늘 날짜로 직접 판정할 것**: 오늘 > stale_after 면 stale, 오늘 > delayed_after 면 delayed (기준: 시세 기준일 경과 fresh ≤4일 · delayed 5~7일 · stale 8일 이상). stale/delayed 면 답변에 데이터 지연을 먼저 밝힐 것. ★status 는 **데이터 나이**만 본다. 발행이 멈췄는지는 같은 블록의 publish_status(ok/degraded)와 consecutive_failure_days 를 볼 것 — 둘 중 하나라도 나쁘면 status 가 fresh 여도 갱신은 멈춰 있다. 상세는 별도 필드 pipeline."}, "pipeline": {"last_success_kst": "20260831 18:21", "last_failure_date": "2026-08-26", "consecutive_failure_days": 0, "serving_last_good": false, "recent_failure_dates": ["2026-07-29", "2026-07-30", "2026-07-31", "2026-08-04", "2026-08-05", "2026-08-07", "2026-08-10", "2026-08-11", "2026-08-24", "2026-08-26"], "recovered_dates": ["2026-08-11", "2026-08-24"], "code_pull": {"ran_at_kst": "2026-09-01 18:05:08", "result": "updated", "before": "8b41620", "after": "b092b86", "env": {"fsc_days": 307, "fsc_first": "20250528", "fsc_last": "20260828", "measured_kst": "2026-09-01 18:05", "listing_master": {"verdict": "있음(krx_listed, stock_issue, corp_outline, dart_corp_code)", "probed_kst": "2026-08-17 19:25:14", "need_apply": [], "ok_sources": ["krx_listed", "stock_issue", "corp_outline", "dart_corp_code"]}}}, "regress": {"ran_at_kst": "2026-09-01 18:09:27", "target": 90, "ran": 85, "skipped": 5, "passed": 82, "failed": 3, "identity_ok": true, "failed_files": ["test_worker_js.py", "test_loop_deadline.py", "test_copy_style.py"], "truncated_files": ["test_render_contract.py"], "skipped_files": ["test_preview_safety.py", "test_publish_contract.py", "test_preview_build_safety.py", "test_deploy_button.py"]}, "weekly": {"ran_at_kst": "2026-08-29 10:02:53", "checks_run": ["X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8"], "checks_registered": ["X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8"], "seen": 6300, "problems": 5, "problem_heads": ["[X1] https://huggingface.co/aikstockdata — URLError: <urlopen error [SSL: CERTIFICATE_VERI", "[X1] https://huggingface.co/datasets/aikstockdata/korea-equity-daily — URLError: <urlopen ", "[X1] https://t.me/aikstockdata — URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]", "[X1] https://www.kaggle.com/datasets/aikstokdata/korean-equity-daily-prices-dart-filing-im", "[X6] 프론트: check_frontend.py exit 1 — [check_frontend] ★실패 — 아무 것도 겨냥하지 않는 카드화 블록 1개"]}, "universe_observe": {"ran_at_kst": "2026-09-01 18:10:04", "observed_days": 11, "days": {"2026-08-19": "fsc=2799 active=2789 newly=4 no_quote=1 suspended=5 delisted=37 unknown=0", "2026-08-20": "fsc=2799 active=2789 newly=4 no_quote=1 suspended=5 delisted=37 unknown=0", "2026-08-21": "fsc=2799 active=2789 newly=4 no_quote=0 suspended=6 delisted=37 unknown=0", "2026-08-24": "fsc=2799 active=2789 newly=5 no_quote=0 suspended=5 delisted=0 unknown=0 never_observed=37", "2026-08-25": "fsc=2800 active=2789 newly=6 no_quote=0 suspended=5 delisted=0 unknown=0 never_observed=37", "2026-08-26": "fsc=2799 active=2788 newly=5 no_quote=2 suspended=4 delisted=0 unknown=0 never_observed=37", "2026-08-27": "fsc=2799 active=2788 newly=5 no_quote=2 suspended=4 delisted=0 unknown=0 never_observed=37", "2026-08-28": "fsc=2799 active=2788 newly=5 no_quote=0 suspended=6 delisted=0 unknown=0 never_observed=37", "2026-08-31": "fsc=2798 active=2788 newly=5 no_quote=0 suspended=5 delisted=0 unknown=0 never_observed=37", "2026-09-01": "fsc=2798 active=2787 newly=5 no_quote=1 suspended=5 delisted=0 unknown=0 never_observed=37"}, "line_prefix": "[universe-observe]"}, "note": "데이터 신선도(freshness)와 파이프라인 건강은 별개다. 실행이 실패해도 직전 성공본을 계속 서빙하므로(last-good) 데이터가 한동안 fresh 로 남을 수 있다. serving_last_good=true 면 '오늘 것이 아니라 직전 성공본'이라는 뜻이다. published_at_kst 가 있으면 이번 발행이 검증 게이트를 모두 통과한 산출물이라는 뜻이다(그 값이 없으면 직전 성공본을 서빙 중일 수 있다). last_success_kst 는 이전 실행까지의 기록이라 이번 실행은 반영돼 있지 않다.", "shadow_diff": {"intersect_n": 1463, "only_legacy_n": 37, "only_fsc_n": 1336, "same_n": 98006, "allowed_diff_n": 0, "value_changed_n": 3, "critical_changed_n": 3, "measured_kst": "2026-08-25 12:55:45", "value_changed_fp": "b98db53959693760", "note": "확대(fsc) 산출과 기존(legacy) 산출을 필드 단위로 대조한 결과. value_changed_n=0 이어야 기존 종목의 값이 안 바뀐 것이다. measured_kst 는 그 대조를 **언제 잰 것인지**다(이 발행 시각이 아니다). 이 블록이 없으면 아직 대조를 안 돌린 것이다(0 이 아니라 '안 함')."}, "published_at_kst": "2026-09-01 18:13", "gates_passed": ["sanity", "validate", "compliance"], "timing": {"started_kst": "2026-09-01 18:10:01", "mode": "force", "steps_done": 10, "steps_total": 14, "steps_pending_at_stamp": ["deploy", "preserve", "indexnow", "archive"], "elapsed_minutes_to_publish": 3.8, "slowest_steps": [{"name": "sitegen", "minutes": 1.7}, {"name": "compliance", "minutes": 1.5}, {"name": "rankings", "minutes": 0.2}], "step_minutes": {"fsc": 0.0, "universe_observe": 0.0, "disclosures": 0.1, "rankings": 0.2, "signal": 0.0, "sanity": 0.0, "content": 0.1, "sitegen": 1.7, "validate": 0.1, "compliance": 1.5}, "note": "이 실행이 시작부터 발행까지 걸린 시간이다. 스케줄(18:10)보다 늦게 시작했으면 started_kst 가 그것을 말한다. 재시도는 19:25 에 뜨므로 elapsed 가 75분에 가까워지면 재시도가 이 실행과 겹친다(겹침은 고장이 아니라 건너뛴다 — 그 사유는 그날 로그에 남는다). steps_done 이 steps_total 보다 작은 것은 정상이다: 이 기록은 배포 단계 안에서 찍히므로 배포와 그 뒤 단계는 들어올 수 없다 — 어느 단계인지는 steps_pending_at_stamp 에 적는다."}}, "file_bytes": {"dart_receipt_times.json": 333762, "dart_receipt_times_min.json": 49930, "disclosure_impact.json": 1673359, "disclosure_impact_summary.json": 55920, "disclosures.csv": 141509, "disclosures.json": 319912, "disclosures_intraday.json": 57779, "disclosures_intraday_min.json": 31172, "disclosures_top100.json": 67736, "earnings.json": 2975149, "earnings_calendar.json": 455545, "earnings_calendar_summary.json": 8767, "earnings_recent60.json": 114427, "excluded.json": 3777, "index.json": 39077, "market_index_history.json": 15769, "new_since_yesterday.json": 2179, "notices.json": 46262, "quotes.csv": 293409, "quotes.json": 749261, "quotes_en.csv": 293434, "quotes_min.json": 108789, "quotes_slim.json": 383559, "quotes_top300.json": 85328, "rankings.json": 28737, "screen.json": 552633, "screen_top300.json": 67044, "search_index.json": 487507, "search_index_aliases.json": 15769, "search_index_min.json": 166640, "search_index_rows.json": 112388, "today.json": 10133}, "daily_archive": {"quotes_csv_pattern": "https://aikstockdata.com/data/public/daily/quotes_{YYYYMMDD}.csv", "disclosures_csv_pattern": "https://aikstockdata.com/data/public/daily/disclosures_{YYYYMMDD}.csv", "today_json_pattern": "https://aikstockdata.com/data/public/daily/today_{YYYYMMDD}.json", "available_dates": ["20260720", "20260721", "20260722", "20260723", "20260724", "20260727", "20260728", "20260729", "20260730", "20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828", "20260831"], "quotes_available_dates": ["20260720", "20260721", "20260722", "20260723", "20260724", "20260727", "20260728", "20260729", "20260730", "20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828", "20260831"], "disclosures_available_dates": ["20260721", "20260722", "20260723", "20260724", "20260727", "20260728", "20260729", "20260730", "20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828"], "today_available_dates": ["20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260817", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828", "20260831", "20260901"], "date_semantics": {"quotes_csv": "basDt — 데이터 기준일(그날 장 종가)", "disclosures_csv": "rcept_dt — 공시 접수일", "today_json": "발행일 — 내부 quote_as_of 는 보통 D-1 입니다. 인용 전에 파일 안의 quote_as_of 를 반드시 확인하세요."}, "patterns": [{"key": "quotes_csv", "url_pattern": "https://aikstockdata.com/data/public/daily/quotes_{YYYYMMDD}.csv", "format": "csv", "date_means": "basDt — 데이터 기준일(그날 장 종가)", "dates_field": "quotes_available_dates", "n_dates": 30, "from": "20260720", "to": "20260831", "example": "https://aikstockdata.com/data/public/daily/quotes_20260831.csv", "available_dates": ["20260720", "20260721", "20260722", "20260723", "20260724", "20260727", "20260728", "20260729", "20260730", "20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828", "20260831"]}, {"key": "disclosures_csv", "url_pattern": "https://aikstockdata.com/data/public/daily/disclosures_{YYYYMMDD}.csv", "format": "csv", "date_means": "rcept_dt — 공시 접수일", "dates_field": "disclosures_available_dates", "n_dates": 28, "from": "20260721", "to": "20260828", "example": "https://aikstockdata.com/data/public/daily/disclosures_20260828.csv", "available_dates": ["20260721", "20260722", "20260723", "20260724", "20260727", "20260728", "20260729", "20260730", "20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828"]}, {"key": "today_json", "url_pattern": "https://aikstockdata.com/data/public/daily/today_{YYYYMMDD}.json", "format": "json", "date_means": "발행일 — 내부 quote_as_of 는 보통 D-1 입니다. 인용 전에 파일 안의 quote_as_of 를 반드시 확인하세요.", "dates_field": "today_available_dates", "n_dates": 23, "from": "20260731", "to": "20260901", "example": "https://aikstockdata.com/data/public/daily/today_20260901.json", "available_dates": ["20260731", "20260803", "20260804", "20260805", "20260806", "20260807", "20260810", "20260811", "20260812", "20260813", "20260814", "20260817", "20260818", "20260819", "20260820", "20260821", "20260824", "20260825", "20260826", "20260827", "20260828", "20260831", "20260901"]}], "patterns_note": "★패턴마다 보유 날짜가 다르다. 반드시 **같은 항목 안의** available_dates 를 쓸 것 — 다른 패턴의 목록으로 URL 을 조립하면 404 가 난다(실측: 30일 중 22일). 최근 30영업일만 보존한다.", "note": "패턴마다 보유 날짜가 다르다 — 시세 CSV=quotes_available_dates(구 available_dates), 공시 CSV=disclosures_available_dates(접수일 축), 시장요약 JSON=today_available_dates. 각 목록에 없는 날짜는 fetch 하지 말 것(최근 30영업일 보존). ★조인이 필요 없는 형태는 patterns 다 — 패턴·보유날짜·날짜의 뜻이 한 항목에 있다."}, "fetch_guide": {"problem": "대부분의 AI fetch 도구는 응답을 50~150KB 에서 자른다. 잘린 JSON 은 파싱 불가.", "rule": "file_bytes 를 먼저 보고 150000 이상이면 아래 소형 대체본을 쓸 것.", "small_alternatives": {"https://aikstockdata.com/data/public/disclosures.json": "https://aikstockdata.com/data/public/disclosures_top100.json", "https://aikstockdata.com/data/public/earnings.json": "https://aikstockdata.com/data/public/earnings_recent60.json", "https://aikstockdata.com/data/public/disclosure_impact.json": "https://aikstockdata.com/data/public/disclosure_impact_summary.json", "https://aikstockdata.com/data/public/search_index.json": "https://aikstockdata.com/data/public/search_index_rows.json", "https://aikstockdata.com/data/public/search_index_min.json": "https://aikstockdata.com/data/public/search_index_rows.json", "https://aikstockdata.com/data/public/quotes.json": "https://aikstockdata.com/data/public/quotes_top300.json", "https://aikstockdata.com/data/public/screen.json": "https://aikstockdata.com/data/public/screen_top300.json", "https://aikstockdata.com/data/public/quotes_slim.json": "https://aikstockdata.com/data/public/quotes_min.json", "https://aikstockdata.com/data/public/earnings_calendar.json": "https://aikstockdata.com/data/public/earnings_calendar_summary.json", "https://aikstockdata.com/data/public/disclosures_intraday.json": "https://aikstockdata.com/data/public/disclosures_intraday_min.json", "https://aikstockdata.com/data/public/dart_receipt_times.json": "https://aikstockdata.com/data/public/dart_receipt_times_min.json"}, "csv_license_sidecar": {"pattern": "{csv_url}.license", "example": "https://aikstockdata.com/data/public/daily/quotes_{YYYYMMDD}.csv.license", "why": "CSV 본문에 주석을 넣으면 기존 read_csv 코드가 깨집니다 — 실측(pandas 3.0.3): 주석 줄의 쉼표 수가 데이터와 다르면 ParserError 로 죽고, 우연히 같으면 예외 없이 컬럼 이름이 통째로 바뀝니다. 그래서 조건은 같은 이름의 .license 파일에 둡니다. 기존 코드는 한 줄도 안 바뀝니다.", "contains": ["license", "source", "as_of", "scope", "full_text"]}, "no_small_alternative": [], "no_small_alternative_note": "이 파일들은 문턱을 넘지만 소형 대체본이 없다. 전체를 받을 수 없으면 HTTP Range 요청으로 앞부분만 받거나(봉투가 맨 앞에 있어 출처·기준일은 1KB 안에서 읽힌다), MCP 서버(mcp.aikstockdata.com/mcp)의 도구를 쓸 것.", "alternatives_still_over_threshold": [], "near_threshold_no_alternative": [], "near_threshold_note": "문턱의 85% 이상이지만 아직 넘지 않은, 소형 대체본이 없는 파일이다. 다음 발행에서 넘을 수 있으니 지금부터 MCP 도구나 Range 요청을 고려하라. 넘고 나서 알면 이미 잘린 응답을 받은 뒤다.", "single_stock": "https://aikstockdata.com/data/public/s/{code6}.json (한 종목만 필요하면 항상 이것)", "user_agent_403": {"symptom": "Python 표준 urllib 기본 UA(Python-urllib/x.y)로 요청하면 403.", "affected": "urllib.request.urlopen(url) — 헤더를 안 붙인 경우만", "not_affected": ["requests", "httpx", "curl", "wget", "브라우저 fetch", "빈 User-Agent"], "fix": "urllib.request.Request(url, headers={\"User-Agent\": \"my-app\"})", "note": "인증이 아니라 CDN 봇 필터입니다. API 키는 여전히 필요 없습니다."}}, "openapi": "https://aikstockdata.com/openapi.json", "schemas": ["https://aikstockdata.com/data/public/schemas/disclosure_impact.schema.json", "https://aikstockdata.com/data/public/schemas/disclosures.schema.json", "https://aikstockdata.com/data/public/schemas/earnings.schema.json", "https://aikstockdata.com/data/public/schemas/excluded.schema.json", "https://aikstockdata.com/data/public/schemas/quotes_slim.schema.json", "https://aikstockdata.com/data/public/schemas/rankings.schema.json", "https://aikstockdata.com/data/public/schemas/screen.schema.json", "https://aikstockdata.com/data/public/schemas/stock.schema.json", "https://aikstockdata.com/data/public/schemas/today.schema.json"], "schemas_note": "draft 2020-12. 각 데이터 파일 안의 $schema 필드로 역참조도 됩니다.", "transform_version": "p2.2026-07-17", "endpoints": [{"name": "오늘의 시장 다이제스트(하루 요약 — 등락·주요공시·성장·실적·집계)", "url": "https://aikstockdata.com/data/public/today.json", "format": "json", "schema": "schema.org/Dataset"}, {"name": "시세 전체(T+1 종가)", "url": "https://aikstockdata.com/data/public/quotes.json", "format": "json", "schema": "schema.org/Dataset"}, {"name": "시세 경량판(핵심 6필드 · 375KB · 잘림 문턱 초과 — 전 종목이 필요할 때)", "url": "https://aikstockdata.com/data/public/quotes_slim.json", "format": "json"}, {"name": "★시세 최소판(전 종목 행 배열 — 잘림 안전 · 이름은 search_index_min 과 조인)", "url": "https://aikstockdata.com/data/public/quotes_min.json", "format": "json"}, {"name": "시총 상위 300(내림차순 정렬 보장 — '시총 상위 N' 질문용)", "url": "https://aikstockdata.com/data/public/quotes_top300.json", "format": "json"}, {"name": "종목 인덱스 경량판(코드·이름·시장 + URL 패턴 · 163KB · 잘림 문턱 초과 — 객체판)", "url": "https://aikstockdata.com/data/public/search_index_min.json", "format": "json"}, {"name": "★종목 인덱스 행 배열판(전 종목 — 잘림 안전 110KB · 별칭은 옆 파일)", "url": "https://aikstockdata.com/data/public/search_index_rows.json", "format": "json"}, {"name": "종목 한글 별칭(코드 → 한글로 읽은 이름 — 이름 검색용)", "url": "https://aikstockdata.com/data/public/search_index_aliases.json", "format": "json"}, {"name": "종목 인덱스(전 종목 code·이름·개별 JSON URL 리터럴 — 476KB, URL 조립 못 하는 환경용)", "url": "https://aikstockdata.com/data/public/search_index.json", "format": "json"}, {"name": "시세 CSV", "url": "https://aikstockdata.com/data/public/quotes.csv", "format": "csv"}, {"name": "시세 CSV(영문 헤더)", "url": "https://aikstockdata.com/data/public/quotes_en.csv", "format": "csv"}, {"name": "종목별 소형 JSON", "url_pattern": "https://aikstockdata.com/data/public/s/{code6}.json", "example": "https://aikstockdata.com/data/public/s/005930.json", "format": "json", "schema_version": "1.1"}, {"name": "★종목별 가격 시계열(1년 일별 종가·거래량 — 추세·고점대비 질문은 이 파일)", "url_pattern": "https://aikstockdata.com/data/public/s/{code6}_history.json", "example": "https://aikstockdata.com/data/public/s/005930_history.json", "format": "json", "schema_version": "1.0", "note": "행은 [date, close, volume] 배열(키 반복 제거로 경량화). 최대 250거래일. 휴장·무거래일은 행이 없으니 날짜 연속성을 가정하지 말 것."}, {"name": "★주요 공시 TOP100(중요도순 — 잘림 안전 66KB)", "url": "https://aikstockdata.com/data/public/disclosures_top100.json", "format": "json"}, {"name": "공시 브리핑 전체(쉬운 풀이·점수·접수 시각·재무원장)", "url": "https://aikstockdata.com/data/public/disclosures.json", "format": "json"}, {"name": "랭킹(성장·조용한 실적주·신고저)", "url": "https://aikstockdata.com/data/public/rankings.json", "format": "json"}, {"name": "어닝 스코어보드(실적 공시 롤링 120일 — rankings 에서 분리)", "url": "https://aikstockdata.com/data/public/earnings.json", "format": "json"}, {"name": "★어닝 스코어보드 소형판(시총 상위 80종목 + 최근 70건 · 압축 재무 포함 — AI 잘림 안전)", "url": "https://aikstockdata.com/data/public/earnings_recent60.json", "format": "json"}, {"name": "공시 유형별 이후 주가 경로(시장조정 중앙값)", "url": "https://aikstockdata.com/data/public/disclosure_impact.json", "format": "json"}, {"name": "★지수 시계열(코스피·코스닥 일별 종가 — 시장조정의 기준선)", "url": "https://aikstockdata.com/data/public/market_index_history.json", "format": "json"}, {"name": "★인용용 불변 스냅샷 목록 — latest 는 매 거래일 덮어쓰이므로 인용 불가", "url": "https://aikstockdata.com/data/public/snapshots/index.json", "format": "json"}, {"name": "★발행 이력 — 그날 무엇이 발행됐는지(백테스트에서 '그때 알던 것'의 기준점). 파일별 해시는 싣지 않습니다", "url": "https://aikstockdata.com/data/public/releases/index.json", "format": "json"}, {"name": "★DART 공시 접수 시각(HH:MM) — 공개 API 에는 날짜만 있고 시:분이 없다", "url": "https://aikstockdata.com/data/public/dart_receipt_times.json", "format": "json"}, {"name": "★장중 공시 목록 — 매 거래일 15:00 수집, 접수 시각(HH:MM) 포함. 본 발행(18:10)을 기다리지 않고 종가 전에 쓰라고 따로 낸다", "url": "https://aikstockdata.com/data/public/disclosures_intraday.json", "format": "json"}, {"name": "★조건 검색 재료(전 종목 한 줄 — 흑자전환·시총/영업이익 배수·52주 신고저)", "url": "https://aikstockdata.com/data/public/screen.json", "format": "json", "note": "개수가 아니라 목록이 필요할 때. 행은 배열이고 fields 에 열 이름이 있다."}, {"name": "제외 종목 목록", "url": "https://aikstockdata.com/data/public/excluded.json", "format": "json"}, {"name": "정정·공지 로그(기계가독)", "url": "https://aikstockdata.com/data/public/notices.json", "format": "json"}, {"name": "종목 검색 인덱스(코드·이름·시장)", "url": "https://aikstockdata.com/data/public/search_index.json", "format": "json"}, {"name": "RSS 피드(공시·브리핑)", "url": "https://aikstockdata.com/feed.xml", "format": "rss"}, {"name": "★값 정정 피드(이용자가 받은 값이 바뀐 사건만 — 조용한 것이 정상)", "url": "https://aikstockdata.com/corrections.xml", "format": "rss"}, {"name": "★실적 캘린더(이번 분기 접수 완료 / 아직 없음 + 법정 마감 D-day)", "url": "https://aikstockdata.com/data/public/earnings_calendar.json", "format": "json"}, {"name": "★직전 발행 이후 신규 실적 공시(폴링을 알림으로 — 무상태 클라이언트용)", "url": "https://aikstockdata.com/data/public/new_since_yesterday.json", "format": "json"}, {"name": "★공시가 장중에 나왔나 마감 뒤에 나왔나(접수 시각 최근분 소형판)", "url": "https://aikstockdata.com/data/public/dart_receipt_times_min.json", "format": "json", "note": "본체가 잘림 문턱에 닿아 파싱이 안 되는 것을 피한 소형 대체본. 접수번호를 키로 receipt_time·session·code·label 을 준다. 세션별 건수(by_session)도 함께. 옛 건이 필요하면 full_url."}, {"name": "★'이 유형 공시 뒤 주가가 어땠나'의 정답 경로(유형별 요약만 — 대형본의 1/15)", "url": "https://aikstockdata.com/data/public/disclosure_impact_summary.json", "format": "json", "note": "유형별 h0/h1/h5 중앙값·95% 신뢰구간·상승확률과 표본 수. 접수 세션별·전년동기 방향별 분해까지 여기 있다. 개별 이벤트 원장(접수번호 단위)이 필요할 때만 대형본을 받으라."}, {"name": "공시 브리핑을 표로(엑셀·판다스로 바로 여는 열 구조)", "url": "https://aikstockdata.com/data/public/disclosures.csv", "format": "csv", "note": "열: 접수일·종목코드·종목명·시장·공시유형·중요도점수·요약·쉬운말풀이·DART원문. JSON 을 파싱하지 않고 바로 걸러 보고 싶을 때."}, {"name": "★종가 전에 오늘 공시를 보고 싶을 때(장중 15:00 수집분 경량판)", "url": "https://aikstockdata.com/data/public/disclosures_intraday_min.json", "format": "json", "note": "접수 시각 최신순 최대 120건. dart_url 은 빼고 dart_url_pattern 에 rcept_no 를 넣어 조립한다. 전량은 full_url."}, {"name": "★'이번 분기 실적, 몇 곳이 냈고 마감까지 며칠 남았나'", "url": "https://aikstockdata.com/data/public/earnings_calendar_summary.json", "format": "json", "note": "집계·법정 마감 D-day·오늘 신규 접수·미접수 상위(시총순)·날짜별 접수 추이. 미접수는 기한 위반이 아니다(결산월·특례·연장). 전체 명단이 필요하면 earnings_calendar.json."}, {"name": "조건 검색 재료 소형판(시총 상위 300 — 잘림 안전)", "url": "https://aikstockdata.com/data/public/screen_top300.json", "format": "json", "note": "열 정의·주의사항은 전체본과 같다. 흑자전환처럼 전 종목을 훑어야 하는 조건은 screen.json 을 쓰라 — 여기엔 상위 300만 있다."}, {"name": "llms.txt", "url": "https://aikstockdata.com/llms.txt", "format": "text"}, {"name": "데이터셋 안내(사람용)", "url": "https://aikstockdata.com/datasets", "format": "html"}], "mirrors": [{"name": "Hugging Face (JSON Lines)", "url": "https://huggingface.co/datasets/aikstockdata/korea-equity-daily", "note": "인용용 월간 동결본은 같은 계정의 korea-equity-daily-YYYY-MM"}, {"name": "Kaggle (CSV · 공시 접수 시각 열 포함)", "url": "https://www.kaggle.com/datasets/aikstokdata/korean-equity-daily-prices-dart-filing-impact"}, {"name": "GitHub", "url": "https://github.com/na77tech-creator/aikstockdata"}], "mirrors_note": "미러는 발행일에 고정된 스냅샷입니다. 매 거래일 갱신되는 원본은 이 카탈로그의 endpoints 입니다.", "notes": "시세는 전 영업일(T+1) 확정 종가로 실시간이 아닙니다. 전부 공공데이터(DART·금융위) 가공물이며, 업종·PER/PBR·목표가 등 증권사 파생 지표는 공개 데이터에 포함되지 않습니다. 52주 신고가·신저가는 제공합니다(rankings.json 의 hi52).", "endpoints_autofilled": 0, "endpoints_autofilled_note": "손으로 설명을 안 붙인 채 자동으로 실린 항목 수. 0 이면 카탈로그의 모든 항목에 사람이 쓴 용도 설명이 있다는 뜻이다."}