국내 주식시장에서 상장폐지된 종목의 종목코드가 시간이 지나면 다른 기업에 의해 재사용될 수 있습니다. 따라서 단순히 종목코드만 가지고 기업을 식별하는 것은 위험할 수 있습니다.
그러나 일자별로 종목 정보를 기록하고 있고, 각 종목의 상장일(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_date | stock_code | stock_name | open_dt |
---|---|---|---|
2023-01-01 | 123456 | A기업 | 2020-05-01 |
2024-06-30 | 123456 | A기업 | 2020-05-01 |
2025-01-01 | 123456 | B기업 | 2025-01-01 |
위처럼 같은 종목 코드가 재사용된 경우라도 open_dt
값을 통해 다른 종목이라는 것을 명확히 구분할 수 있습니다.
결론
- 종목코드는 재사용될 수 있다.
- 하지만 매일의
stock_date
와 함께 종목을 저장하고open_dt
를 기준으로 관리하면, ISIN 없이도 종목 식별이 충분히 가능하다. - ISIN은 외부 데이터 연동 시 도움이 될 수 있으나, 내부 히스토리 관리용으로는
open_dt
기준 방식으로도 충분히 안정적이다.
추가 팁
나중에 상장일 기반으로 상장폐지된 종목을 감지하거나, 코드 재사용 여부를 판단하고 싶다면 쿼리에서 open_dt
가 바뀐 경우만 필터링하거나, 이전 stock_name과 달라진 경우만 추출하면 쉽게 구분할 수 있습니다.