pyqqq.utils.market_schedule

Constructor

MarketSchedule(**kwargs)

시장 운영 정보를 담고 있는 클래스입니다.

MarketSession(type, start_time, end_time)

시장 세션의 운영 시간을 담고 있는 클래스입니다.

MarketSessionType(value[, names, module, ...])

시장 세션 종류입니다.

Attributes

full_day_closed

운영 여부

exchange

시장 코드

open_time

개장 시간

close_time

폐장 시간

reason

장 운영이 중단되거나 시간이 조정된 이유

sessions

세션별 운영 시간 목록.

type

세션 종류

start_time

세션 시작 시간

end_time

세션 종료 시간

Methods

get_session(session_type)

주어진 종류의 세션을 반환합니다.

has_session(session_type)

주어진 종류의 세션을 운영하는지 확인합니다.

session_at(time)

주어진 시각에 운영 중인 세션을 반환합니다.

contains(time)

주어진 시각이 세션 운영 시간에 포함되는지 확인합니다.

Functions

is_full_day_closed([now, exchange])

주식 거래소가 휴장일인지 확인합니다.

is_before_opening([now, exchange])

주식 거래소가 아직 개장 전인지 확인합니다.

is_after_closing([now, exchange])

주식 거래소가 이미 폐장 후인지 확인합니다.

is_trading_time([now, exchange])

주식 거래소가 거래 시간인지 확인합니다.

get_market_schedule(date[, exchange])

주식 거래소의 개장/폐장 시간을 확인합니다.

get_last_trading_day([date, exchange])

주어진 날짜의 이전 거래일을 반환합니다.

get_next_trading_day([date, exchange])

주어진 날짜의 다음 거래일을 반환합니다.

get_trading_day_with_offset([from_date, ...])

주어진 날짜로부터 주어진 오프셋만큼의 거래일을 반환합니다.

시장 세션

MarketSchedule.sessions 는 하루의 운영 시간을 세션 단위로 나누어 제공합니다. 휴장일이면 빈 목록입니다.

세션 종류

설명

MarketSessionType.PRE_MARKET

프리마켓. NXT만 운영합니다.

MarketSessionType.REGULAR

정규장. KRX는 종가 단일가까지 포함합니다.

MarketSessionType.AFTER_MARKET

애프터마켓. KRX는 2026년 9월 14일 부터 운영합니다.

정상 영업일의 세션 구성은 다음과 같습니다.

거래소

적용 기간

프리마켓

정규장

애프터마켓

KRX

~ 2026-09-13

-

09:00 ~ 15:30

-

KRX

2026-09-14 ~

-

09:00 ~ 15:30

16:00 ~ 20:00

NXT

2025-03-04 ~

08:00 ~ 08:50

09:00:30 ~ 15:20

15:40 ~ 20:00

조정 사유

MarketSchedule.reason 에 따라 세션 구성이 달라집니다.

reason

세션 산출 방식

holiday

휴장. 세션 목록이 비어 있습니다.

opening_day

개장일. 개장 시간만 연기되고 정규장 마감과 애프터마켓은 평소와 같습니다.

csat_day

수능일. 개장이 연기된 만큼 정규장 마감과 애프터마켓 개시도 순연되며, 애프터마켓 종료 시간은 같습니다.

irregular_schedule

사유가 구분되지 않은 조정. 스케줄의 개장/폐장 시간을 그대로 사용합니다.

개장이 연기되는 날에는 프리마켓을 운영하지 않으며, 거래소의 운영에 따라 프리마켓과 애프터마켓의 운영 여부나 시간에 조정이 있을 수 있습니다.

import datetime as dtm
from pyqqq.utils.market_schedule import get_market_schedule, MarketSessionType

schedule = get_market_schedule(dtm.date(2026, 9, 14))

for session in schedule.sessions:
    print(session.type.value, session.start_time, session.end_time)

# 정규장 마감 시간 (애프터마켓 제외)
print(schedule.get_session(MarketSessionType.REGULAR).end_time)

# 특정 시각에 운영 중인 세션
print(schedule.session_at(dtm.time(18, 0)).type)
regular 09:00:00 15:30:00
after_market 16:00:00 20:00:00
15:30:00
MarketSessionType.AFTER_MARKET