종목코드 재사용과 상장일 기반 구분 방식

국내 주식시장에서 상장폐지된 종목의 종목코드가 시간이 지나면 다른 기업에 의해 재사용될 수 있습니다. 따라서 단순히 종목코드만 가지고 기업을 식별하는 것은 위험할 수 있습니다.

그러나 일자별로 종목 정보를 기록하고 있고, 각 종목의 상장일(open_dt)을 함께 수집하고 있다면, ISIN 없이도 종목을 정확하게 식별할 수 있습니다.


테이블 구조 예시

CREATE TABLE stock.stock_codes (
    stock_date date NOT NULL,
    stock_code varchar(10) NOT NULL,
    stock_name text NOT NULL,
    open_dt date NULL,
    market bpchar(1) NOT NULL,
    CONSTRAINT stock_codes_market_check CHECK (
        (market = ANY (ARRAY['K'::bpchar, 'Q'::bpchar, 'N'::bpchar]))
    ),
    CONSTRAINT stock_codes_pkey PRIMARY KEY (stock_date, stock_code)
);

이 테이블은 매일 기준으로 상장 종목 리스트를 스냅샷 형태로 기록하며, 종목 코드와 함께 해당 종목의 상장일(open_dt)을 함께 저장합니다.


상장일 기반 종목 구분 예시

stock_datestock_codestock_nameopen_dt
2023-01-01123456A기업2020-05-01
2024-06-30123456A기업2020-05-01
2025-01-01123456B기업2025-01-01

위처럼 같은 종목 코드가 재사용된 경우라도 open_dt 값을 통해 다른 종목이라는 것을 명확히 구분할 수 있습니다.


결론

  • 종목코드는 재사용될 수 있다.
  • 하지만 매일의 stock_date와 함께 종목을 저장하고 open_dt를 기준으로 관리하면, ISIN 없이도 종목 식별이 충분히 가능하다.
  • ISIN은 외부 데이터 연동 시 도움이 될 수 있으나, 내부 히스토리 관리용으로는 open_dt 기준 방식으로도 충분히 안정적이다.

추가 팁

나중에 상장일 기반으로 상장폐지된 종목을 감지하거나, 코드 재사용 여부를 판단하고 싶다면 쿼리에서 open_dt가 바뀐 경우만 필터링하거나, 이전 stock_name과 달라진 경우만 추출하면 쉽게 구분할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다