Skip to main content

Standard financial dates

Project description

finance dates

Fast date ranges, holiday calendars, and trading hours for financial markets

Build Status codecov License PyPI

Overview

finance-dates provides calendar-aware date utilities for the finance-* stack. The Rust core handles holiday-rule expansion, weekend observance, early closes, and DST-aware regular and extended trading sessions; the Python package exposes a compact API for date series, exchange calendars, and open/close timestamps.

The library is useful when you need to answer questions like:

  • What are the valid trading dates for NYSE between two dates?
  • Which dates in a range are holidays or otherwise invalid for a venue?
  • Is a UTC timestamp inside a market session after DST and early closes?
  • What are the UTC open/close datetimes for regular and extended trading windows?

Quick start

from datetime import date, datetime, timezone

from finance_dates import Calendar
from finance_enums import EnergyType, ExchangeCode, UnderlyingAssetClass

c = Calendar.from_range(start=date(2024, 1, 1), end=date(2024, 1, 5))

# Inclusive plain calendar dates.
c.days()

# Mon-Fri only, holiday-blind.
c.business_days()

# Exchange-aware calendar with holidays, sessions, and early closes.
nyse = Calendar.from_exchange("XNYS")
nyse.business_days(date(2024, 7, 1), date(2024, 7, 5))
nyse.holidays(date(2024, 7, 1), date(2024, 9, 30))
nyse.sessions(date(2024, 7, 1), date(2024, 7, 5))
nyse.extended_sessions(date(2024, 7, 1), date(2024, 7, 5))
nyse.is_open(datetime(2024, 3, 11, 13, 30, tzinfo=timezone.utc))

gas = Calendar.from_asset(
  ExchangeCode.XNYM,
  UnderlyingAssetClass.Commodity,
  subclass=EnergyType.NaturalGas,
)
gas.regular_sessions

For US equity calendars, regular_sessions contains the standard 09:30-16:00 New York session template, while extended_hours includes pre_open and after_close templates. On early-close days, the after-close window begins at the early close.

Calendars with lunch breaks expose multiple regular session templates. For example, Tokyo (XTKS) currently returns separate 09:00-11:30 and 12:30-15:30 local sessions, and sessions() returns one UTC open/close pair per regular interval. Tokyo is date-effective around the 2024-11-05 close-time extension, so historical dates before that change close at 15:00 local while current dates close at 15:30.

Commodity futures can also use split sessions. Prefer Calendar.from_asset() with finance-enums exchange and asset/subclass enum members, or their string values, when you know the instrument vocabulary; for example ExchangeCode.XNYM plus EnergyType.NaturalGas resolves to the NYMEX energy template without requiring synthetic names like NYMEX_ENERGY. Synthetic product-group codes such as CBOT_GRAINS and product mnemonics such as CL or ZC remain accepted by from_exchange() for lower-level calendar inspection and compatibility.

Exchange and country calendars

Calendars can be resolved by exchange/MIC code or by ISO country code:

from finance_dates import Calendar
from finance_enums import EnergyType, ExchangeCode, UnderlyingAssetClass

Calendar.from_exchange("XLON")   # London Stock Exchange
Calendar.from_exchange("XTKS")   # Tokyo Stock Exchange, split lunch sessions
Calendar.from_exchange("XCME")   # CME futures-style overnight sessions
Calendar.from_exchange("CBOT_GRAINS")  # CBOT grain/oilseed futures sessions
Calendar.from_exchange("CME_ENERGY")  # Globex energy-category alias
Calendar.from_asset(ExchangeCode.XNYM, UnderlyingAssetClass.Commodity, subclass=EnergyType.NaturalGas)
Calendar.from_product("ICE_US", "Sugar")  # ICE US product-specific template
Calendar.from_exchange("FOREX")  # 24x5 FX family
Calendar.from_region("US")       # representative US equity calendar

Calendar.from_exchange() accepts additional resolver-only calendar aliases such as CBOT_GRAINS, CME_ENERGY, CL, and ZC; those are documented in the Calendars page.

Documentation

See the Calendars page for supported concepts, market families, date-series patterns, and trading-hours conventions. See the API page for the public Python API and recipes.

Rust crate

The Rust library crate is published as finance-dates and imported as finance_dates in Rust code:

[dependencies]
finance-dates = "0.1.0"
use finance_dates::{calendar_for_exchange, date_range};

[!NOTE] This library was generated using copier from the Base Python Project Template repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finance_dates-0.2.0.tar.gz (62.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

finance_dates-0.2.0-cp310-abi3-win_amd64.whl (421.4 kB view details)

Uploaded CPython 3.10+Windows x86-64

finance_dates-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl (615.8 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

finance_dates-0.2.0-cp310-abi3-macosx_11_0_arm64.whl (518.1 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file finance_dates-0.2.0.tar.gz.

File metadata

  • Download URL: finance_dates-0.2.0.tar.gz
  • Upload date:
  • Size: 62.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for finance_dates-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a8b2190525fb526e0141b6be73cf8bc0e7cb7e86cd49219d6a8248660ac95b77
MD5 a86ed287071badff8241d8ac99fe9d99
BLAKE2b-256 00c4a25eb87d87ddf8b9f82dee4ed2309129c369ec0d5a9ba1f368065c821f7d

See more details on using hashes here.

File details

Details for the file finance_dates-0.2.0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for finance_dates-0.2.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a4b3709bc6700a0c1aab4723add7ff286bfab25e9b292585f23c0d5c65f347b6
MD5 f65fd24823cea30260eac7a069652c0f
BLAKE2b-256 fc5a76bc49597272078a8a336f56b0ddfbd20be1ab799d4a2faf5d7cbf3b1a67

See more details on using hashes here.

File details

Details for the file finance_dates-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for finance_dates-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2a58e98a3153f4b3a880d0a174b67ca9df40d3b6224f9dc4021f56f06d97fbe8
MD5 846b196fa4e96e5e3ea873218177efe4
BLAKE2b-256 742984ed94518874acbbb97e6804b0202619581dcb70a32e8ca373b68f5da9bd

See more details on using hashes here.

File details

Details for the file finance_dates-0.2.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for finance_dates-0.2.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5238d0cc2dc62ef362e7fbc081099d7c4f013d97fc924c66329c71361ffc1344
MD5 18f9b61bc3827452c7059051c2c2c468
BLAKE2b-256 7bd30caaa469c9c6064d1d2ec8d25c0c7e565f7b007b5a182d281b2b0b098929

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page