%global _empty_manifest_terminate_build 0 Name: python-trading-calendars Version: 2.1.1 Release: 1 Summary: trading_calendars is a Python library with securities exchange calendars used by Quantopian's Zipline. License: Apache License, Version 2.0 URL: https://github.com/quantopian/trading_calendars Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1e/6e/613df8268dea3aac81d3b9d9872d4e48526f8650e970ca1d14911f02dad0/trading_calendars-2.1.1.tar.gz BuildArch: noarch %description # trading_calendars [![CI](https://github.com/quantopian/trading_calendars/workflows/CI/badge.svg)](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) [![PyPI version](https://img.shields.io/pypi/v/trading-calendars.svg)](https://pypi.org/project/trading-calendars/) [![Conda version](https://img.shields.io/conda/vn/conda-forge/trading-calendars.svg)](https://anaconda.org/conda-forge/trading-calendars) A Python library of exchange calendars, frequently used with [Zipline](https://github.com/quantopian/zipline). ## Installation ```bash $ pip install trading-calendars ``` ## Quick Start ```python import trading_calendars as tc import pandas as pd import pytz ``` Get all registered calendars with `get_calendar_names`: ```python >>> tc.get_calendar_names()[:5] ['XPHS', 'FWB', 'CFE', 'CMES', 'XSGO'] ``` Get a calendar with `get_calendar`: ```python >>> xnys = tc.get_calendar("XNYS") ``` Working with sessions: ```python >>> xnys.is_session(pd.Timestamp("2020-01-01")) False >>> xnys.next_open(pd.Timestamp("2020-01-01")) Timestamp('2020-01-02 14:31:00+0000', tz='UTC') >>> pd.Timestamp("2020-01-01", tz=pytz.UTC)+xnys.day Timestamp('2020-01-02 00:00:00+0000', tz='UTC') >>> xnys.previous_close(pd.Timestamp("2020-01-01")) Timestamp('2019-12-31 21:00:00+0000', tz='UTC') >>> xnys.sessions_in_range( >>> pd.Timestamp("2020-01-01", tz=pytz.UTC), >>> pd.Timestamp("2020-01-10", tz=pytz.UTC) >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') >>> xnys.sessions_window( >>> pd.Timestamp("2020-01-02", tz=pytz.UTC), >>> 7 >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00', '2020-01-13 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') ``` **NOTE**: see the [TradingCalendar class](https://github.com/quantopian/trading_calendars/blob/master/trading_calendars/trading_calendar.py) for more advanced usage. Trading calendars also supports command line usage, printing a unix-cal like calendar indicating which days are trading sessions or holidays. ```bash tcal XNYS 2020 ``` 2020 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 1] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 1] 2 3 4 5 6 [ 7] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [ 8] 9 10 11 12 13 [14] [19][20] 21 22 23 24 [25] [16][17] 18 19 20 21 [22] [15] 16 17 18 19 20 [21] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [22] 23 24 25 26 27 [28] [29] 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 [ 4] 1 [ 2] 1 2 3 4 5 [ 6] [ 5] 6 7 8 9 [10][11] [ 3] 4 5 6 7 8 [ 9] [ 7] 8 9 10 11 12 [13] [12] 13 14 15 16 17 [18] [10] 11 12 13 14 15 [16] [14] 15 16 17 18 19 [20] [19] 20 21 22 23 24 [25] [17] 18 19 20 21 22 [23] [21] 22 23 24 25 26 [27] [26] 27 28 29 30 [24][25] 26 27 28 29 [30] [28] 29 30 [31] July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3][ 4] [ 1] 1 2 3 4 [ 5] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 6][ 7] 8 9 10 11 [12] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [13] 14 15 16 17 18 [19] [19] 20 21 22 23 24 [25] [16] 17 18 19 20 21 [22] [20] 21 22 23 24 25 [26] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [27] 28 29 30 [30] 31 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3] 1 2 3 4 [ 5] [ 4] 5 6 7 8 9 [10] [ 1] 2 3 4 5 6 [ 7] [ 6] 7 8 9 10 11 [12] [11] 12 13 14 15 16 [17] [ 8] 9 10 11 12 13 [14] [13] 14 15 16 17 18 [19] [18] 19 20 21 22 23 [24] [15] 16 17 18 19 20 [21] [20] 21 22 23 24 [25][26] [25] 26 27 28 29 30 [31] [22] 23 24 25 [26] 27 [28] [27] 28 29 30 31 [29] 30 ```bash tcal XNYS 1 2020 ``` January 2020 Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 5] 6 7 8 9 10 [11] [12] 13 14 15 16 17 [18] [19][20] 21 22 23 24 [25] [26] 27 28 29 30 31 ## Frequently Asked Questions ### Why are open times one minute late? Due to its historical use in the [Zipline](https://github.com/quantopian/zipline) backtesting system, `trading_calendars` will only indicate a market is open upon the completion of the first minute bar in a day. Zipline uses minute bars labeled with the end of the bar, e.g. 9:31AM for 9:30-9:31AM. As an example, on a regular trading day for NYSE: - 9:30:00 is treated as closed. - 9:30:01 is treated as closed. - 9:31:00 is the first time treated as open. - 16:00:00 is treated as open - 16:00:01 is treated as closed This may change in the future. ## Calendar Support | Exchange | ISO Code | Country | Version Added | Exchange Website (English) | | ------------------------------- | -------- | -------------- | ------------- | ------------------------------------------------------------ | | New York Stock Exchange | XNYS | USA | 1.0 | https://www.nyse.com/index | | CBOE Futures | XCBF | USA | 1.0 | https://markets.cboe.com/us/futures/overview/ | | Chicago Mercantile Exchange | CMES | USA | 1.0 | https://www.cmegroup.com/ | | ICE US | IEPA | USA | 1.0 | https://www.theice.com/index | | Toronto Stock Exchange | XTSE | Canada | 1.0 | https://www.tsx.com/ | | BMF Bovespa | BVMF | Brazil | 1.0 | http://www.b3.com.br/en_us/ | | London Stock Exchange | XLON | England | 1.0 | https://www.londonstockexchange.com/home/homepage.htm | | Euronext Amsterdam | XAMS | Netherlands | 1.2 | https://www.euronext.com/en/regulation/amsterdam | | Euronext Brussels | XBRU | Belgium | 1.2 | https://www.euronext.com/en/regulation/brussels | | Euronext Lisbon | XLIS | Portugal | 1.2 | https://www.euronext.com/en/regulation/lisbon | | Euronext Paris | XPAR | France | 1.2 | https://www.euronext.com/en/regulation/paris | | Frankfurt Stock Exchange | XFRA | Germany | 1.2 | http://en.boerse-frankfurt.de/ | | SIX Swiss Exchange | XSWX | Switzerland | 1.2 | https://www.six-group.com/exchanges/index.html | | Tokyo Stock Exchange | XTKS | Japan | 1.2 | https://www.jpx.co.jp/english/ | | Austrialian Securities Exchange | XASX | Australia | 1.3 | https://www.asx.com.au/ | | Bolsa de Madrid | XMAD | Spain | 1.3 | http://www.bolsamadrid.es/ing/aspx/Portada/Portada.aspx | | Borsa Italiana | XMIL | Italy | 1.3 | https://www.borsaitaliana.it/homepage/homepage.en.htm | | New Zealand Exchange | XNZE | New Zealand | 1.3 | https://www.nzx.com/ | | Wiener Borse | XWBO | Austria | 1.3 | https://www.wienerborse.at/en/ | | Hong Kong Stock Exchange | XHKG | Hong Kong | 1.3 | https://www.hkex.com.hk/?sc_lang=en | | Copenhagen Stock Exchange | XCSE | Denmark | 1.4 | http://www.nasdaqomxnordic.com/ | | Helsinki Stock Exchange | XHEL | Finland | 1.4 | http://www.nasdaqomxnordic.com/ | | Stockholm Stock Exchange | XSTO | Sweden | 1.4 | http://www.nasdaqomxnordic.com/ | | Oslo Stock Exchange | XOSL | Norway | 1.4 | https://www.oslobors.no/ob_eng/ | | Irish Stock Exchange | XDUB | Ireland | 1.4 | http://www.ise.ie/ | | Bombay Stock Exchange | XBOM | India | 1.5 | https://www.bseindia.com | | Singapore Exchange | XSES | Singapore | 1.5 | https://www.sgx.com | | Shanghai Stock Exchange | XSHG | China | 1.5 | http://english.sse.com.cn | | Korea Exchange | XKRX | South Korea | 1.6 | http://global.krx.co.kr | | Iceland Stock Exchange | XICE | Iceland | 1.7 | http://www.nasdaqomxnordic.com/ | | Poland Stock Exchange | XWAR | Poland | 1.9 | http://www.gpw.pl | | Santiago Stock Exchange | XSGO | Chile | 1.9 | http://inter.bolsadesantiago.com/sitios/en/Paginas/home.aspx | | Colombia Securities Exchange | XBOG | Colombia | 1.9 | https://www.bvc.com.co/nueva/index_en.html | | Mexican Stock Exchange | XMEX | Mexico | 1.9 | https://www.bmv.com.mx | | Lima Stock Exchange | XLIM | Peru | 1.9 | https://www.bvl.com.pe | | Prague Stock Exchange | XPRA | Czech Republic | 1.9 | https://www.pse.cz/en/ | | Budapest Stock Exchange | XBUD | Hungary | 1.10 | https://bse.hu/ | | Athens Stock Exchange | ASEX | Greece | 1.10 | http://www.helex.gr/ | | Istanbul Stock Exchange | XIST | Turkey | 1.10 | https://www.borsaistanbul.com/en/ | | Johannesburg Stock Exchange | XJSE | South Africa | 1.10 | https://www.jse.co.za/z | | Malaysia Stock Exchange | XKLS | Malaysia | 1.11 | http://www.bursamalaysia.com/market/ | | Moscow Exchange | XMOS | Russia | 1.11 | https://www.moex.com/en/ | | Philippine Stock Exchange | XPHS | Philippines | 1.11 | https://www.pse.com.ph/stockMarket/home.html | | Stock Exchange of Thailand | XBKK | Thailand | 1.11 | https://www.set.or.th/set/mainpage.do?language=en&country=US | | Indonesia Stock Exchange | XIDX | Indonesia | 1.11 | https://www.idx.co.id/ | | Taiwan Stock Exchange Corp. | XTAI | Taiwan | 1.11 | https://www.twse.com.tw/en/ | | Buenos Aires Stock Exchange | XBUE | Argentina | 1.11 | https://www.bcba.sba.com.ar/ | | Pakistan Stock Exchange | XKAR | Pakistan | 1.11 | https://www.psx.com.pk/ | > Note that exchange calendars are defined by their [ISO-10383](https://www.iso20022.org/10383/iso-10383-market-identifier-codes) market identifier code. %package -n python3-trading-calendars Summary: trading_calendars is a Python library with securities exchange calendars used by Quantopian's Zipline. Provides: python-trading-calendars BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-trading-calendars # trading_calendars [![CI](https://github.com/quantopian/trading_calendars/workflows/CI/badge.svg)](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) [![PyPI version](https://img.shields.io/pypi/v/trading-calendars.svg)](https://pypi.org/project/trading-calendars/) [![Conda version](https://img.shields.io/conda/vn/conda-forge/trading-calendars.svg)](https://anaconda.org/conda-forge/trading-calendars) A Python library of exchange calendars, frequently used with [Zipline](https://github.com/quantopian/zipline). ## Installation ```bash $ pip install trading-calendars ``` ## Quick Start ```python import trading_calendars as tc import pandas as pd import pytz ``` Get all registered calendars with `get_calendar_names`: ```python >>> tc.get_calendar_names()[:5] ['XPHS', 'FWB', 'CFE', 'CMES', 'XSGO'] ``` Get a calendar with `get_calendar`: ```python >>> xnys = tc.get_calendar("XNYS") ``` Working with sessions: ```python >>> xnys.is_session(pd.Timestamp("2020-01-01")) False >>> xnys.next_open(pd.Timestamp("2020-01-01")) Timestamp('2020-01-02 14:31:00+0000', tz='UTC') >>> pd.Timestamp("2020-01-01", tz=pytz.UTC)+xnys.day Timestamp('2020-01-02 00:00:00+0000', tz='UTC') >>> xnys.previous_close(pd.Timestamp("2020-01-01")) Timestamp('2019-12-31 21:00:00+0000', tz='UTC') >>> xnys.sessions_in_range( >>> pd.Timestamp("2020-01-01", tz=pytz.UTC), >>> pd.Timestamp("2020-01-10", tz=pytz.UTC) >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') >>> xnys.sessions_window( >>> pd.Timestamp("2020-01-02", tz=pytz.UTC), >>> 7 >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00', '2020-01-13 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') ``` **NOTE**: see the [TradingCalendar class](https://github.com/quantopian/trading_calendars/blob/master/trading_calendars/trading_calendar.py) for more advanced usage. Trading calendars also supports command line usage, printing a unix-cal like calendar indicating which days are trading sessions or holidays. ```bash tcal XNYS 2020 ``` 2020 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 1] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 1] 2 3 4 5 6 [ 7] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [ 8] 9 10 11 12 13 [14] [19][20] 21 22 23 24 [25] [16][17] 18 19 20 21 [22] [15] 16 17 18 19 20 [21] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [22] 23 24 25 26 27 [28] [29] 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 [ 4] 1 [ 2] 1 2 3 4 5 [ 6] [ 5] 6 7 8 9 [10][11] [ 3] 4 5 6 7 8 [ 9] [ 7] 8 9 10 11 12 [13] [12] 13 14 15 16 17 [18] [10] 11 12 13 14 15 [16] [14] 15 16 17 18 19 [20] [19] 20 21 22 23 24 [25] [17] 18 19 20 21 22 [23] [21] 22 23 24 25 26 [27] [26] 27 28 29 30 [24][25] 26 27 28 29 [30] [28] 29 30 [31] July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3][ 4] [ 1] 1 2 3 4 [ 5] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 6][ 7] 8 9 10 11 [12] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [13] 14 15 16 17 18 [19] [19] 20 21 22 23 24 [25] [16] 17 18 19 20 21 [22] [20] 21 22 23 24 25 [26] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [27] 28 29 30 [30] 31 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3] 1 2 3 4 [ 5] [ 4] 5 6 7 8 9 [10] [ 1] 2 3 4 5 6 [ 7] [ 6] 7 8 9 10 11 [12] [11] 12 13 14 15 16 [17] [ 8] 9 10 11 12 13 [14] [13] 14 15 16 17 18 [19] [18] 19 20 21 22 23 [24] [15] 16 17 18 19 20 [21] [20] 21 22 23 24 [25][26] [25] 26 27 28 29 30 [31] [22] 23 24 25 [26] 27 [28] [27] 28 29 30 31 [29] 30 ```bash tcal XNYS 1 2020 ``` January 2020 Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 5] 6 7 8 9 10 [11] [12] 13 14 15 16 17 [18] [19][20] 21 22 23 24 [25] [26] 27 28 29 30 31 ## Frequently Asked Questions ### Why are open times one minute late? Due to its historical use in the [Zipline](https://github.com/quantopian/zipline) backtesting system, `trading_calendars` will only indicate a market is open upon the completion of the first minute bar in a day. Zipline uses minute bars labeled with the end of the bar, e.g. 9:31AM for 9:30-9:31AM. As an example, on a regular trading day for NYSE: - 9:30:00 is treated as closed. - 9:30:01 is treated as closed. - 9:31:00 is the first time treated as open. - 16:00:00 is treated as open - 16:00:01 is treated as closed This may change in the future. ## Calendar Support | Exchange | ISO Code | Country | Version Added | Exchange Website (English) | | ------------------------------- | -------- | -------------- | ------------- | ------------------------------------------------------------ | | New York Stock Exchange | XNYS | USA | 1.0 | https://www.nyse.com/index | | CBOE Futures | XCBF | USA | 1.0 | https://markets.cboe.com/us/futures/overview/ | | Chicago Mercantile Exchange | CMES | USA | 1.0 | https://www.cmegroup.com/ | | ICE US | IEPA | USA | 1.0 | https://www.theice.com/index | | Toronto Stock Exchange | XTSE | Canada | 1.0 | https://www.tsx.com/ | | BMF Bovespa | BVMF | Brazil | 1.0 | http://www.b3.com.br/en_us/ | | London Stock Exchange | XLON | England | 1.0 | https://www.londonstockexchange.com/home/homepage.htm | | Euronext Amsterdam | XAMS | Netherlands | 1.2 | https://www.euronext.com/en/regulation/amsterdam | | Euronext Brussels | XBRU | Belgium | 1.2 | https://www.euronext.com/en/regulation/brussels | | Euronext Lisbon | XLIS | Portugal | 1.2 | https://www.euronext.com/en/regulation/lisbon | | Euronext Paris | XPAR | France | 1.2 | https://www.euronext.com/en/regulation/paris | | Frankfurt Stock Exchange | XFRA | Germany | 1.2 | http://en.boerse-frankfurt.de/ | | SIX Swiss Exchange | XSWX | Switzerland | 1.2 | https://www.six-group.com/exchanges/index.html | | Tokyo Stock Exchange | XTKS | Japan | 1.2 | https://www.jpx.co.jp/english/ | | Austrialian Securities Exchange | XASX | Australia | 1.3 | https://www.asx.com.au/ | | Bolsa de Madrid | XMAD | Spain | 1.3 | http://www.bolsamadrid.es/ing/aspx/Portada/Portada.aspx | | Borsa Italiana | XMIL | Italy | 1.3 | https://www.borsaitaliana.it/homepage/homepage.en.htm | | New Zealand Exchange | XNZE | New Zealand | 1.3 | https://www.nzx.com/ | | Wiener Borse | XWBO | Austria | 1.3 | https://www.wienerborse.at/en/ | | Hong Kong Stock Exchange | XHKG | Hong Kong | 1.3 | https://www.hkex.com.hk/?sc_lang=en | | Copenhagen Stock Exchange | XCSE | Denmark | 1.4 | http://www.nasdaqomxnordic.com/ | | Helsinki Stock Exchange | XHEL | Finland | 1.4 | http://www.nasdaqomxnordic.com/ | | Stockholm Stock Exchange | XSTO | Sweden | 1.4 | http://www.nasdaqomxnordic.com/ | | Oslo Stock Exchange | XOSL | Norway | 1.4 | https://www.oslobors.no/ob_eng/ | | Irish Stock Exchange | XDUB | Ireland | 1.4 | http://www.ise.ie/ | | Bombay Stock Exchange | XBOM | India | 1.5 | https://www.bseindia.com | | Singapore Exchange | XSES | Singapore | 1.5 | https://www.sgx.com | | Shanghai Stock Exchange | XSHG | China | 1.5 | http://english.sse.com.cn | | Korea Exchange | XKRX | South Korea | 1.6 | http://global.krx.co.kr | | Iceland Stock Exchange | XICE | Iceland | 1.7 | http://www.nasdaqomxnordic.com/ | | Poland Stock Exchange | XWAR | Poland | 1.9 | http://www.gpw.pl | | Santiago Stock Exchange | XSGO | Chile | 1.9 | http://inter.bolsadesantiago.com/sitios/en/Paginas/home.aspx | | Colombia Securities Exchange | XBOG | Colombia | 1.9 | https://www.bvc.com.co/nueva/index_en.html | | Mexican Stock Exchange | XMEX | Mexico | 1.9 | https://www.bmv.com.mx | | Lima Stock Exchange | XLIM | Peru | 1.9 | https://www.bvl.com.pe | | Prague Stock Exchange | XPRA | Czech Republic | 1.9 | https://www.pse.cz/en/ | | Budapest Stock Exchange | XBUD | Hungary | 1.10 | https://bse.hu/ | | Athens Stock Exchange | ASEX | Greece | 1.10 | http://www.helex.gr/ | | Istanbul Stock Exchange | XIST | Turkey | 1.10 | https://www.borsaistanbul.com/en/ | | Johannesburg Stock Exchange | XJSE | South Africa | 1.10 | https://www.jse.co.za/z | | Malaysia Stock Exchange | XKLS | Malaysia | 1.11 | http://www.bursamalaysia.com/market/ | | Moscow Exchange | XMOS | Russia | 1.11 | https://www.moex.com/en/ | | Philippine Stock Exchange | XPHS | Philippines | 1.11 | https://www.pse.com.ph/stockMarket/home.html | | Stock Exchange of Thailand | XBKK | Thailand | 1.11 | https://www.set.or.th/set/mainpage.do?language=en&country=US | | Indonesia Stock Exchange | XIDX | Indonesia | 1.11 | https://www.idx.co.id/ | | Taiwan Stock Exchange Corp. | XTAI | Taiwan | 1.11 | https://www.twse.com.tw/en/ | | Buenos Aires Stock Exchange | XBUE | Argentina | 1.11 | https://www.bcba.sba.com.ar/ | | Pakistan Stock Exchange | XKAR | Pakistan | 1.11 | https://www.psx.com.pk/ | > Note that exchange calendars are defined by their [ISO-10383](https://www.iso20022.org/10383/iso-10383-market-identifier-codes) market identifier code. %package help Summary: Development documents and examples for trading-calendars Provides: python3-trading-calendars-doc %description help # trading_calendars [![CI](https://github.com/quantopian/trading_calendars/workflows/CI/badge.svg)](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) [![PyPI version](https://img.shields.io/pypi/v/trading-calendars.svg)](https://pypi.org/project/trading-calendars/) [![Conda version](https://img.shields.io/conda/vn/conda-forge/trading-calendars.svg)](https://anaconda.org/conda-forge/trading-calendars) A Python library of exchange calendars, frequently used with [Zipline](https://github.com/quantopian/zipline). ## Installation ```bash $ pip install trading-calendars ``` ## Quick Start ```python import trading_calendars as tc import pandas as pd import pytz ``` Get all registered calendars with `get_calendar_names`: ```python >>> tc.get_calendar_names()[:5] ['XPHS', 'FWB', 'CFE', 'CMES', 'XSGO'] ``` Get a calendar with `get_calendar`: ```python >>> xnys = tc.get_calendar("XNYS") ``` Working with sessions: ```python >>> xnys.is_session(pd.Timestamp("2020-01-01")) False >>> xnys.next_open(pd.Timestamp("2020-01-01")) Timestamp('2020-01-02 14:31:00+0000', tz='UTC') >>> pd.Timestamp("2020-01-01", tz=pytz.UTC)+xnys.day Timestamp('2020-01-02 00:00:00+0000', tz='UTC') >>> xnys.previous_close(pd.Timestamp("2020-01-01")) Timestamp('2019-12-31 21:00:00+0000', tz='UTC') >>> xnys.sessions_in_range( >>> pd.Timestamp("2020-01-01", tz=pytz.UTC), >>> pd.Timestamp("2020-01-10", tz=pytz.UTC) >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') >>> xnys.sessions_window( >>> pd.Timestamp("2020-01-02", tz=pytz.UTC), >>> 7 >>> ) DatetimeIndex(['2020-01-02 00:00:00+00:00', '2020-01-03 00:00:00+00:00', '2020-01-06 00:00:00+00:00', '2020-01-07 00:00:00+00:00', '2020-01-08 00:00:00+00:00', '2020-01-09 00:00:00+00:00', '2020-01-10 00:00:00+00:00', '2020-01-13 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='C') ``` **NOTE**: see the [TradingCalendar class](https://github.com/quantopian/trading_calendars/blob/master/trading_calendars/trading_calendar.py) for more advanced usage. Trading calendars also supports command line usage, printing a unix-cal like calendar indicating which days are trading sessions or holidays. ```bash tcal XNYS 2020 ``` 2020 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 1] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 1] 2 3 4 5 6 [ 7] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [ 8] 9 10 11 12 13 [14] [19][20] 21 22 23 24 [25] [16][17] 18 19 20 21 [22] [15] 16 17 18 19 20 [21] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [22] 23 24 25 26 27 [28] [29] 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 [ 4] 1 [ 2] 1 2 3 4 5 [ 6] [ 5] 6 7 8 9 [10][11] [ 3] 4 5 6 7 8 [ 9] [ 7] 8 9 10 11 12 [13] [12] 13 14 15 16 17 [18] [10] 11 12 13 14 15 [16] [14] 15 16 17 18 19 [20] [19] 20 21 22 23 24 [25] [17] 18 19 20 21 22 [23] [21] 22 23 24 25 26 [27] [26] 27 28 29 30 [24][25] 26 27 28 29 [30] [28] 29 30 [31] July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3][ 4] [ 1] 1 2 3 4 [ 5] [ 5] 6 7 8 9 10 [11] [ 2] 3 4 5 6 7 [ 8] [ 6][ 7] 8 9 10 11 [12] [12] 13 14 15 16 17 [18] [ 9] 10 11 12 13 14 [15] [13] 14 15 16 17 18 [19] [19] 20 21 22 23 24 [25] [16] 17 18 19 20 21 [22] [20] 21 22 23 24 25 [26] [26] 27 28 29 30 31 [23] 24 25 26 27 28 [29] [27] 28 29 30 [30] 31 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 [ 3] 1 2 3 4 [ 5] [ 4] 5 6 7 8 9 [10] [ 1] 2 3 4 5 6 [ 7] [ 6] 7 8 9 10 11 [12] [11] 12 13 14 15 16 [17] [ 8] 9 10 11 12 13 [14] [13] 14 15 16 17 18 [19] [18] 19 20 21 22 23 [24] [15] 16 17 18 19 20 [21] [20] 21 22 23 24 [25][26] [25] 26 27 28 29 30 [31] [22] 23 24 25 [26] 27 [28] [27] 28 29 30 31 [29] 30 ```bash tcal XNYS 1 2020 ``` January 2020 Su Mo Tu We Th Fr Sa [ 1] 2 3 [ 4] [ 5] 6 7 8 9 10 [11] [12] 13 14 15 16 17 [18] [19][20] 21 22 23 24 [25] [26] 27 28 29 30 31 ## Frequently Asked Questions ### Why are open times one minute late? Due to its historical use in the [Zipline](https://github.com/quantopian/zipline) backtesting system, `trading_calendars` will only indicate a market is open upon the completion of the first minute bar in a day. Zipline uses minute bars labeled with the end of the bar, e.g. 9:31AM for 9:30-9:31AM. As an example, on a regular trading day for NYSE: - 9:30:00 is treated as closed. - 9:30:01 is treated as closed. - 9:31:00 is the first time treated as open. - 16:00:00 is treated as open - 16:00:01 is treated as closed This may change in the future. ## Calendar Support | Exchange | ISO Code | Country | Version Added | Exchange Website (English) | | ------------------------------- | -------- | -------------- | ------------- | ------------------------------------------------------------ | | New York Stock Exchange | XNYS | USA | 1.0 | https://www.nyse.com/index | | CBOE Futures | XCBF | USA | 1.0 | https://markets.cboe.com/us/futures/overview/ | | Chicago Mercantile Exchange | CMES | USA | 1.0 | https://www.cmegroup.com/ | | ICE US | IEPA | USA | 1.0 | https://www.theice.com/index | | Toronto Stock Exchange | XTSE | Canada | 1.0 | https://www.tsx.com/ | | BMF Bovespa | BVMF | Brazil | 1.0 | http://www.b3.com.br/en_us/ | | London Stock Exchange | XLON | England | 1.0 | https://www.londonstockexchange.com/home/homepage.htm | | Euronext Amsterdam | XAMS | Netherlands | 1.2 | https://www.euronext.com/en/regulation/amsterdam | | Euronext Brussels | XBRU | Belgium | 1.2 | https://www.euronext.com/en/regulation/brussels | | Euronext Lisbon | XLIS | Portugal | 1.2 | https://www.euronext.com/en/regulation/lisbon | | Euronext Paris | XPAR | France | 1.2 | https://www.euronext.com/en/regulation/paris | | Frankfurt Stock Exchange | XFRA | Germany | 1.2 | http://en.boerse-frankfurt.de/ | | SIX Swiss Exchange | XSWX | Switzerland | 1.2 | https://www.six-group.com/exchanges/index.html | | Tokyo Stock Exchange | XTKS | Japan | 1.2 | https://www.jpx.co.jp/english/ | | Austrialian Securities Exchange | XASX | Australia | 1.3 | https://www.asx.com.au/ | | Bolsa de Madrid | XMAD | Spain | 1.3 | http://www.bolsamadrid.es/ing/aspx/Portada/Portada.aspx | | Borsa Italiana | XMIL | Italy | 1.3 | https://www.borsaitaliana.it/homepage/homepage.en.htm | | New Zealand Exchange | XNZE | New Zealand | 1.3 | https://www.nzx.com/ | | Wiener Borse | XWBO | Austria | 1.3 | https://www.wienerborse.at/en/ | | Hong Kong Stock Exchange | XHKG | Hong Kong | 1.3 | https://www.hkex.com.hk/?sc_lang=en | | Copenhagen Stock Exchange | XCSE | Denmark | 1.4 | http://www.nasdaqomxnordic.com/ | | Helsinki Stock Exchange | XHEL | Finland | 1.4 | http://www.nasdaqomxnordic.com/ | | Stockholm Stock Exchange | XSTO | Sweden | 1.4 | http://www.nasdaqomxnordic.com/ | | Oslo Stock Exchange | XOSL | Norway | 1.4 | https://www.oslobors.no/ob_eng/ | | Irish Stock Exchange | XDUB | Ireland | 1.4 | http://www.ise.ie/ | | Bombay Stock Exchange | XBOM | India | 1.5 | https://www.bseindia.com | | Singapore Exchange | XSES | Singapore | 1.5 | https://www.sgx.com | | Shanghai Stock Exchange | XSHG | China | 1.5 | http://english.sse.com.cn | | Korea Exchange | XKRX | South Korea | 1.6 | http://global.krx.co.kr | | Iceland Stock Exchange | XICE | Iceland | 1.7 | http://www.nasdaqomxnordic.com/ | | Poland Stock Exchange | XWAR | Poland | 1.9 | http://www.gpw.pl | | Santiago Stock Exchange | XSGO | Chile | 1.9 | http://inter.bolsadesantiago.com/sitios/en/Paginas/home.aspx | | Colombia Securities Exchange | XBOG | Colombia | 1.9 | https://www.bvc.com.co/nueva/index_en.html | | Mexican Stock Exchange | XMEX | Mexico | 1.9 | https://www.bmv.com.mx | | Lima Stock Exchange | XLIM | Peru | 1.9 | https://www.bvl.com.pe | | Prague Stock Exchange | XPRA | Czech Republic | 1.9 | https://www.pse.cz/en/ | | Budapest Stock Exchange | XBUD | Hungary | 1.10 | https://bse.hu/ | | Athens Stock Exchange | ASEX | Greece | 1.10 | http://www.helex.gr/ | | Istanbul Stock Exchange | XIST | Turkey | 1.10 | https://www.borsaistanbul.com/en/ | | Johannesburg Stock Exchange | XJSE | South Africa | 1.10 | https://www.jse.co.za/z | | Malaysia Stock Exchange | XKLS | Malaysia | 1.11 | http://www.bursamalaysia.com/market/ | | Moscow Exchange | XMOS | Russia | 1.11 | https://www.moex.com/en/ | | Philippine Stock Exchange | XPHS | Philippines | 1.11 | https://www.pse.com.ph/stockMarket/home.html | | Stock Exchange of Thailand | XBKK | Thailand | 1.11 | https://www.set.or.th/set/mainpage.do?language=en&country=US | | Indonesia Stock Exchange | XIDX | Indonesia | 1.11 | https://www.idx.co.id/ | | Taiwan Stock Exchange Corp. | XTAI | Taiwan | 1.11 | https://www.twse.com.tw/en/ | | Buenos Aires Stock Exchange | XBUE | Argentina | 1.11 | https://www.bcba.sba.com.ar/ | | Pakistan Stock Exchange | XKAR | Pakistan | 1.11 | https://www.psx.com.pk/ | > Note that exchange calendars are defined by their [ISO-10383](https://www.iso20022.org/10383/iso-10383-market-identifier-codes) market identifier code. %prep %autosetup -n trading-calendars-2.1.1 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-trading-calendars -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Sun Apr 23 2023 Python_Bot - 2.1.1-1 - Package Spec generated