跳转到主要内容

证券交易所日历

项目描述

exchange_calendars

PyPI Python Support PyPI Downloads Code style: black

一个用于定义和查询证券交易所日历的Python库。

提供超过50个交易所的日历。如果您还没有找到您需要的日历,请创建一个新的日历

安装

$ pip install exchange_calendars

快速入门

import exchange_calendars as xcals

获取可用日历列表

>>> xcals.get_calendar_names(include_aliases=False)[5:10]
['CMES', 'IEPA', 'XAMS', 'XASX', 'XBKK']

获取日历

>>> xnys = xcals.get_calendar("XNYS")  # New York Stock Exchange
>>> xhkg = xcals.get_calendar("XHKG")  # Hong Kong Stock Exchange

查询时间表

>>> xhkg.schedule.loc["2021-12-29":"2022-01-04"]
open break_start break_end close
2021-12-29 2021-12-29 01:30:00+00:00 2021-12-29 04:00:00+00:00 2021-12-29 05:00:00+00:00 2021-12-29 08:00:00+00:00
2021-12-30 2021-12-30 01:30:00+00:00 2021-12-30 04:00:00+00:00 2021-12-30 05:00:00+00:00 2021-12-30 08:00:00+00:00
2021-12-31 2021-12-31 01:30:00+00:00 NaT NaT 2021-12-31 04:00:00+00:00
2022-01-03 2022-01-03 01:30:00+00:00 2022-01-03 04:00:00+00:00 2022-01-03 05:00:00+00:00 2022-01-03 08:00:00+00:00
2022-01-04 2022-01-04 01:30:00+00:00 2022-01-04 04:00:00+00:00 2022-01-04 05:00:00+00:00 2022-01-04 08:00:00+00:00

会话一起工作

>>> xnys.is_session("2022-01-01")
False

>>> xnys.sessions_in_range("2022-01-01", "2022-01-11")
DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11'],
              dtype='datetime64[ns]', freq='C')

>>> xnys.sessions_window("2022-01-03", 7)
DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11'],
              dtype='datetime64[ns]', freq='C')

>>> xnys.date_to_session("2022-01-01", direction="next")
Timestamp('2022-01-03 00:00:00', freq='C')

>>> xnys.previous_session("2022-01-11")
Timestamp('2022-01-10 00:00:00', freq='C')

>>> xhkg.trading_index(
...     "2021-12-30", "2021-12-31", period="90min", force=True
... )
IntervalIndex([[2021-12-30 01:30:00, 2021-12-30 03:00:00), [2021-12-30 03:00:00, 2021-12-30 04:00:00), [2021-12-30 05:00:00, 2021-12-30 06:30:00), [2021-12-30 06:30:00, 2021-12-30 08:00:00), [2021-12-31 01:30:00, 2021-12-31 03:00:00), [2021-12-31 03:00:00, 2021-12-31 04:00:00)], dtype='interval[datetime64[ns, UTC], left]')

请参阅会话教程以深入了解会话。

分钟一起工作

>>> xhkg.session_minutes("2022-01-03")
DatetimeIndex(['2022-01-03 01:30:00+00:00', '2022-01-03 01:31:00+00:00',
               '2022-01-03 01:32:00+00:00', '2022-01-03 01:33:00+00:00',
               '2022-01-03 01:34:00+00:00', '2022-01-03 01:35:00+00:00',
               '2022-01-03 01:36:00+00:00', '2022-01-03 01:37:00+00:00',
               '2022-01-03 01:38:00+00:00', '2022-01-03 01:39:00+00:00',
               ...
               '2022-01-03 07:50:00+00:00', '2022-01-03 07:51:00+00:00',
               '2022-01-03 07:52:00+00:00', '2022-01-03 07:53:00+00:00',
               '2022-01-03 07:54:00+00:00', '2022-01-03 07:55:00+00:00',
               '2022-01-03 07:56:00+00:00', '2022-01-03 07:57:00+00:00',
               '2022-01-03 07:58:00+00:00', '2022-01-03 07:59:00+00:00'],
              dtype='datetime64[ns, UTC]', length=330, freq=None)

>>> mins = [ "2022-01-03 " + tm for tm in ["01:29", "01:30", "04:20", "07:59", "08:00"] ]
>>> [ xhkg.is_trading_minute(minute) for minute in mins ]
[False, True, False, True, False]  # by default minutes are closed on the left side

>>> xhkg.is_break_minute("2022-01-03 04:20")
True

>>> xhkg.previous_close("2022-01-03 08:10")
Timestamp('2022-01-03 08:00:00+0000', tz='UTC')

>>> xhkg.previous_minute("2022-01-03 08:10")
Timestamp('2022-01-03 07:59:00+0000', tz='UTC')

请参阅分钟教程以深入了解“分钟”的概念以及“side”选项如何确定哪些分钟被视为交易分钟。

教程

希望您会发现 exchange_calendars 拥有您需要的获取所需信息的方法。如果没有,请提交PR提出问题并告诉我们!

命令行使用

从命令行直接打印类似unix-cal的日历(假日用括号表示)...

ecal 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
ecal 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

常见问题解答

我该如何创建一个新的日历?

首先,确保您想要的日历尚未定义;exchange calendars自带超过50个预定义的日历,包括主要证券交易所。

如果您找不到所需的内容,可以创建一个自定义日历,作为ExchangeCalendar的子类。该工作流程描述了将新日历添加到exchange_calendars的过程。只需遵循相关部分。

要通过get_calendar访问新日历,请调用xcals.register_calendarxcals.register_calendar_type,分别注册特定日历实例或日历工厂(即子类)。

我可以为exchange calendars贡献一个新的日历吗?

当然可以!工作流程可以在这里找到。

<calendar>缺少假日、时间错误、应该休息等...

所有的exchange calendars都由用户贡献维护。如果您关心的日历需要修订,请打开PR - 这就是其运作方式!(从未为项目做出过贡献,而且一切似乎都有些令人畏惧?查看这里并回头吧!)

您可以在这里找到修改现有日历的工作流程。

哪些时间被认为是开放和关闭的?

exchange_calendars尝试广泛地有用,认为只有在正常交易期间才将交易所视为开放。在任何预交易、后交易或拍卖期间,交易所被视为关闭。交易所还在任何观察到的午休期间被视为关闭。

有关交易所被认为是开放的详细分钟数,请参阅分钟教程。如果您之前使用过trading_calendars或3.4版本之前的exchange_calendars,那么这是寻找随着时间的推移交易分钟定义如何变化的答案的地方(现在是稳定和灵活的!)

日历

交易所 ISO代码 国家 版本添加 交易所网站(英文)
纽约证券交易所 XNYS 美国 1.0 https://www.nyse.com/index
CBOE期货 XCBF 美国 1.0 https://markets.cboe.com/us/futures/overview/
芝加哥商品交易所 CMES 美国 1.0 https://www.cmegroup.com/
ICE US IEPA 美国 1.0 https://www.theice.com/index
多伦多证券交易所 XTSE 加拿大 1.0 https://www.tsx.com/
BMF博维斯帕 BVMF 巴西 1.0 http://www.b3.com.br/en_us/
伦敦证券交易所 XLON 英格兰 1.0 https://www.londonstockexchange.com/
Euronext阿姆斯特丹 XAMS 荷兰 1.2 https://www.euronext.com/en/regulation/amsterdam
Euronext布鲁塞尔 XBRU 比利时 1.2 https://www.euronext.com/en/regulation/brussels
Euronext里斯本 XLIS 葡萄牙 1.2 https://www.euronext.com/en/regulation/lisbon
泛欧证券交易所巴黎 XPAR 法国 1.2 https://www.euronext.com/en/regulation/paris
法兰克福证券交易所 XFRA 德国 1.2 http://en.boerse-frankfurt.de/
瑞士证券交易所 XSWX 瑞士 1.2 https://www.six-group.com/en/home.html
东京证券交易所 XTKS 日本 1.2 https://www.jpx.co.jp/english/
澳大利亚证券交易所 XASX 澳大利亚 1.3 https://www.asx.com.au/
马德里证券交易所 XMAD 西班牙 1.3 https://www.bolsamadrid.es
意大利证券交易所 XMIL 意大利 1.3 https://www.borsaitaliana.it
新西兰证券交易所 XNZE 新西兰 1.3 https://www.nzx.com/
维也纳证券交易所 XWBO 奥地利 1.3 https://www.wienerborse.at/en/
香港证券交易所 XHKG 香港 1.3 https://www.hkex.com.hk/?sc_lang=en
哥本哈根证券交易所 XCSE 丹麦 1.4 http://www.nasdaqomxnordic.com/
赫尔辛基证券交易所 XHEL 芬兰 1.4 http://www.nasdaqomxnordic.com/
斯德哥尔摩证券交易所 XSTO 瑞典 1.4 http://www.nasdaqomxnordic.com/
奥斯陆证券交易所 XOSL 挪威 1.4 https://www.oslobors.no/ob_eng/
爱尔兰证券交易所 XDUB 爱尔兰 1.4 http://www.ise.ie/
孟买证券交易所 XBOM 印度 1.5 https://www.bseindia.com
新加坡交易所 XSES 新加坡 1.5 https://www.sgx.com
上海证券交易所 XSHG 中国 1.5 http://english.sse.com.cn
韩国交易所 XKRX 韩国 1.6 http://global.krx.co.kr
冰岛证券交易所 XICE 冰岛 1.7 http://www.nasdaqomxnordic.com/
波兰证券交易所 XWAR 波兰 1.9 http://www.gpw.pl
圣地亚哥证券交易所 XSGO 智利 1.9 https://www.bolsadesantiago.com/
哥伦比亚证券交易 XBOG 哥伦比亚 1.9 https://www.bvc.com.co/nueva/https://www.bvc.com.co/nueva/
墨西哥证券交易所 XMEX 墨西哥 1.9 https://www.bmv.com.mx
利马证券交易所 XLIM 秘鲁 1.9 https://www.bvl.com.pe
布拉格证券交易所 XPRA 捷克共和国 1.9 https://www.pse.cz/en/
布达佩斯证券交易所 XBUD 匈牙利 1.10 https://bse.hu/
雅典证券交易所 ASEX 希腊 1.10 http://www.helex.gr/
伊斯坦布尔证券交易所 XIST 土耳其 1.10 https://www.borsaistanbul.com/en/
约翰内斯堡证券交易所 XJSE 南非 1.10 https://www.jse.co.za/z
马来西亚证券交易所 XKLS 马来西亚 1.11 http://www.bursamalaysia.com/market/
莫斯科交易所 XMOS 俄罗斯 1.11 https://www.moex.com/en/
菲律宾证券交易所 XPHS 菲律宾 1.11 https://www.pse.com.ph/
泰国证券交易所 XBKK 泰国 1.11 https://www.set.or.th/set/mainpage.do?language=en&country=US
印尼证券交易所 XIDX 印尼 1.11 https://www.idx.co.id/
台湾证券交易所股份有限公司 XTAI 台湾 1.11 https://www.twse.com.tw/en/
布宜诺斯艾利斯证券交易所 XBUE 阿根廷 1.11 https://www.bcba.sba.com.ar/
巴基斯坦证券交易所 XKAR 巴基斯坦 1.11 https://www.psx.com.pk/
Xetra XETR 德国 2.1 https://www.xetra.com/
特拉维夫证券交易所 XTAE 以色列 2.1 https://www.tase.co.il/
阿斯塔纳国际交易所 AIXK 哈萨克斯坦 3.2 https://www.aix.kz/
布加勒斯特证券交易所 XBSE 罗马尼亚 3.2 https://www.bvb.ro/
沙特证券交易所 XSAU 沙特阿拉伯 4.2 https://www.saudiexchange.sa/
欧洲能源交易所AG XEEE 德国 4.5.5 https://www.eex.com
汉堡证券交易所 XHAM 德国 4.5.5 https://www.boerse-hamburg.de
杜塞尔多夫证券交易所 XDUS 德国 4.5.5 https://www.boerse-duesseldorf.de

请注意,交易所日历是由其ISO-10383市场标识码定义的。

市场价格

大多数v3版本的exchange_calendars开发是由market_prices库推动的。如果您喜欢使用exchange_calendars创建有意义的OHLCV数据集的想法,请查看它!它可以直接使用免费数据!

弃用和重命名

版本4.0.3中重命名,版本4.3中删除的方法

旧名称 新名称
bound_start bound_min
bound_end bound_max

版本4.0中弃用,版本4.3中删除的方法

弃用方法 原因
sessions_closes 使用.closes[start:end]
sessions_opens 使用.opens[start:end]

参数重命名的版本4.0中的方法

方法
is_session
is_open_on_minute
minutes_in_range
minutes_window
next_close
next_minute
next_open
previous_close
previous_minute
previous_open
session_break_end
session_break_start
session_close
session_open
sessions_in_range
sessions_window

版本3.4中重命名,版本4.0中删除的方法

旧名称 新名称
all_minutes minutes
all_minutes_nanos minutes_nanos
all_sessions sessions
break_start_and_end_for_session session_break_start_end
date_to_session_label date_to_session
first_trading_minute first_minute
first_trading_session first_session
has_breaks sessions_has_break
last_trading_minute last_minute
last_trading_session last_session
next_session_label next_session
open_and_close_for_session session_open_close
previous_session_label previous_session
market_break_ends_nanos break_ends_nanos
market_break_starts_nanos break_starts_nanos
market_closes_nanos closes_nanos
market_opens_nanos opens_nanos
minute_index_to_session_labels minutes_to_sessions
minute_to_session_label minute_to_session
minutes_count_for_sessions_in_range sessions_minutes_count
minutes_for_session session_minutes
minutes_for_sessions_in_range sessions_minutes
session_closes_in_range sessions_closes
session_distance sessions_distance
session_opens_in_range sessions_opens

版本3.4中弃用,版本4.0中删除的其他方法

删除方法
execution_minute_for_session
execution_minute_for_sessions_in_range
execution_time_from_close
execution_time_from_open

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

exchange_calendars-4.5.6.tar.gz (3.6 MB 查看哈希值)

上传时间

构建分发

exchange_calendars-4.5.6-py3-none-any.whl (196.2 kB 查看哈希值)

上传时间 Python 3

由以下提供支持