{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://aikstockdata.com/data/public/schemas/today.schema.json", "title": "daily digest (/data/public/today.json)", "type": "object", "required": [ "as_of", "market_breadth", "top_disclosures", "growth_top3" ], "properties": { "$schema": { "type": "string", "description": "이 파일을 설명하는 JSON Schema 주소" }, "schema_version": { "type": "string" }, "name": { "type": "string" }, "as_of": { "type": [ "string", "null" ] }, "as_of_iso": { "type": [ "string", "null" ], "description": "as_of 를 YYYY-MM-DD 로 정규화한 값. 형식이 하나뿐이라 파싱에 이것만 쓰면 됩니다. 원본 as_of 는 하위호환을 위해 그대로 둡니다. 날짜를 못 읽으면 null(추측하지 않음)." }, "generated_kst": { "type": "string" }, "snapshot_id": { "type": [ "string", "null" ], "description": "이 발행 배치 식별자. 인용할 때 이 값을 함께 적으세요 — latest 는 매 거래일 덮어쓰입니다." }, "limitations": { "type": "array", "items": { "type": "string" }, "description": "이 데이터셋으로 **무엇을 할 수 없는가**. 개별 파일의 note 필드에 흩어져 있던 것을 한 자리에 모은 것이며 새 사실이 아닙니다(원문이 더 자세합니다). 메타를 아직 안 쓴 파일에는 이 키가 없습니다 — '한계가 없다'는 뜻이 아니라 '아직 안 적었다'는 뜻입니다." }, "code_rev": { "type": [ "string", "null" ], "description": "이 파일을 만든 코드의 git 커밋(짧은 SHA). generated_kst 는 데이터 시각, 이것은 코드 버전." }, "source": { "type": [ "string", "object" ], "description": "집계 파일은 한 줄 문자열 · 종목 파일은 원천별 객체", "properties": { "quote": { "type": [ "object", "null" ], "properties": { "provider": { "type": "string" }, "dataset": { "type": "string" }, "note": { "type": [ "string", "null" ] } } }, "financials_disclosures": { "type": [ "object", "null" ], "properties": { "provider": { "type": "string" }, "dataset": { "type": "string" }, "note": { "type": [ "string", "null" ] } } } } }, "license": { "type": [ "string", "object" ], "description": "집계 파일은 전문 문자열 · 종목 파일은 {name, url} 객체", "properties": { "name": { "type": "string" }, "url": { "type": "string" } } }, "citation": { "type": "string" }, "disclaimer": { "type": "string" }, "@type": { "type": "string", "description": "schema.org 표지(Dataset). 검색엔진과 AI 가 이 파일을 데이터셋으로 인식하게 합니다." }, "description": { "type": "string", "description": "이 파일이 무엇인지 한 문단. 사람이 읽는 설명이며 데이터 값이 아닙니다." }, "notes": { "type": [ "string", "object" ], "description": "이 파일을 쓸 때 틀리기 쉬운 지점에 대한 주의. 집계 전에 읽으세요." }, "generated_at": { "type": "string", "description": "생성 시각(ISO 8601·KST). generated_kst 와 같은 시각의 다른 표기입니다." }, "generated": { "type": "string", "description": "생성 시각(사람용 표기). generated_kst·generated_at 과 같은 시각입니다 — 한 파일에 세 표기가 함께 있는 것은 구 소비자 호환 때문입니다." }, "market_breadth": { "type": "object", "properties": { "up": { "type": [ "integer", "null" ] }, "down": { "type": [ "integer", "null" ] }, "flat": { "type": [ "integer", "null" ] }, "up_ratio_pct": { "type": [ "integer", "null" ] }, "tone": { "type": [ "string", "null" ] } } }, "market_index": { "type": [ "object", "null" ], "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "name_en": { "type": "string" }, "close": { "type": "number" }, "change": { "type": [ "number", "null" ] }, "change_pct": { "type": [ "number", "null" ] }, "open": { "type": [ "number", "null" ] }, "high": { "type": [ "number", "null" ] }, "low": { "type": [ "number", "null" ] }, "constituents": { "type": [ "number", "null" ] }, "as_of": { "type": "string", "pattern": "^[0-9]{8}$" } } } }, "market_index_note": { "type": [ "string", "null" ] }, "highs_lows_52w": { "type": [ "object", "null" ], "properties": { "n_high": { "type": [ "integer", "null" ] }, "n_low": { "type": [ "integer", "null" ] }, "basis": { "type": [ "string", "null" ] } } }, "top_disclosures": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": [ "string", "null" ] }, "market": { "type": [ "string", "null" ] }, "label": { "type": [ "string", "null" ] }, "fact": { "type": [ "string", "null" ] }, "basis": { "type": [ "string", "null" ] }, "score": { "type": [ "number", "null" ] }, "url": { "type": [ "string", "null" ] }, "detail_url": { "type": [ "string", "null" ] } } } }, "growth_top3": { "type": "array", "items": { "type": "object", "properties": { "financial_period": { "type": [ "string", "null" ], "description": "이 순위가 쓴 재무의 기수(예 2026H1). 정기보고서 실측이며 시세는 쓰지 않는다 — 기수가 안 바뀌면 순위도 안 바뀐다. 전체 기준은 rankings.json 의 fin_basis." }, "code": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "score": { "type": [ "number", "null" ] }, "revenue_yoy_pct": { "type": [ "number", "null" ] }, "operating_income_yoy_pct": { "type": [ "number", "null" ] }, "status": { "type": [ "string", "null" ] }, "json_url": { "type": [ "string", "null" ] } } } }, "recent_earnings": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": [ "string", "null" ] }, "kind": { "type": [ "string", "null" ] }, "label": { "type": [ "string", "null" ] }, "period": { "type": [ "string", "null" ] }, "period_status": { "type": [ "string", "null" ] }, "value_status": { "type": [ "string", "null" ] }, "basis": { "type": [ "string", "null" ] }, "comparison_allowed": { "type": [ "boolean", "null" ] }, "revenue": { "type": [ "number", "null" ] }, "operating_income": { "type": [ "number", "null" ] }, "net_income": { "type": [ "number", "null" ] }, "rcept_no": { "type": [ "string", "null" ] }, "dart_url": { "type": [ "string", "null" ] }, "detail_url": { "type": [ "string", "null" ] } } } }, "earnings_improve_rate_pct": { "type": [ "integer", "null" ] }, "@context": { "type": "string", "description": "schema.org 문맥" }, "quote_as_of": { "type": [ "string", "null" ], "description": "시세 기준일(YYYYMMDD) — 전 영업일 확정 종가입니다. ★disclosure_through 와 날짜가 다를 수 있습니다." }, "quote_as_of_iso": { "type": [ "string", "null" ], "description": "quote_as_of 의 ISO 표기(YYYY-MM-DD)" }, "disclosure_through": { "type": [ "string", "null" ], "description": "공시 수록 기준일(YYYYMMDD) — 시세보다 하루 앞설 수 있습니다. 두 날짜를 하나로 묶어 쓰면 틀립니다." }, "disclosure_through_iso": { "type": [ "string", "null" ], "description": "disclosure_through 의 ISO 표기" }, "disclosure_type_counts": { "type": [ "object", "null" ], "additionalProperties": { "type": "integer" }, "description": "그날 공시를 유형 이름별로 센 것(유형명 → 건수)" }, "movers_up": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "change_pct": { "type": [ "number", "null" ] } } }, "description": "그날 상승률 상위 — name·code·change_pct" }, "movers_down": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "change_pct": { "type": [ "number", "null" ] } } }, "description": "그날 하락률 상위 — name·code·change_pct" }, "earnings_reported_n": { "type": [ "integer", "null" ], "description": "earnings_stats.reported_n 과 같은 값" }, "earnings_stats": { "type": [ "object", "null" ], "properties": { "reported_n": { "type": [ "integer", "null" ] }, "improve_rate_pct": { "type": [ "number", "null" ] }, "scope": { "type": [ "string", "null" ] }, "improve_definition": { "type": [ "string", "null" ] } }, "description": "어닝 집계 — reported_n·improve_rate_pct 와 그 모집단을 밝힌 scope. ★scope 를 빼고 숫자만 인용하면 오독됩니다(일별 발표 수가 아니라 롤링 누적입니다)." }, "earnings_turnaround": { "type": [ "object", "null" ], "properties": { "count": { "type": [ "integer", "null" ] }, "scope": { "type": [ "string", "null" ] }, "definition": { "type": [ "string", "null" ] } }, "description": "흑자전환 집계 — count 와 그 정의(definition)·모집단(scope)" }, "earnings_turnaround_n": { "type": [ "integer", "null" ], "description": "earnings_turnaround.count 와 같은 값" }, "signal_tracking": { "type": [ "object", "null" ], "properties": { "tracked_days": { "type": [ "integer", "null" ] }, "with_result": { "type": [ "integer", "null" ] }, "note": { "type": [ "string", "null" ] } }, "description": "성장 TOP 신호의 5·20거래일 후 실제 흐름 기록. 추천이 아니며 과거는 미래를 보장하지 않습니다." }, "next_update": { "type": "string", "description": "다음 갱신 예정 시각" } } }