diff options
Diffstat (limited to 'python-trading-calendars.spec')
| -rw-r--r-- | python-trading-calendars.spec | 660 |
1 files changed, 660 insertions, 0 deletions
diff --git a/python-trading-calendars.spec b/python-trading-calendars.spec new file mode 100644 index 0000000..a078895 --- /dev/null +++ b/python-trading-calendars.spec @@ -0,0 +1,660 @@ +%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 + +[](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) +[](https://pypi.org/project/trading-calendars/) +[](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 + +[](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) +[](https://pypi.org/project/trading-calendars/) +[](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 + +[](https://github.com/quantopian/trading_calendars/actions?query=workflow%3ACI) +[](https://pypi.org/project/trading-calendars/) +[](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 +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 2.1.1-1 +- Package Spec generated |
