Skip to main content

熊猫市场和交易所交易日历

项目描述

与 pandas 一起用于交易应用程序的市场日历。

https://badge.fury.io/py/pandas-market-calendars.svg https://travis-ci.com/rsheftel/pandas_market_calendars.svg?branch=master https://coveralls.io/repos/github/rsheftel/pandas_market_calendars/badge.svg?branch=master 文件状态

文档

http://pandas_market_calendars.readthedocs.io/en/latest/

概述

Pandas 包广泛用于金融领域,特别是用于时间序列分析。它包括用于生成日期序列的出色功能和自定义假日日历的功能,但作为一种明确的设计选择,它不包括特定交易所或 OTC 市场的实际假日日历。

pandas_market_calendars 包看起来通过假期、延迟开放和提前关闭日历来填补特定交易所和场外交易会议的角色。pandas_market_calendars 还添加了几个函数来操作市场日历,并包括一个 date_range 函数来创建一个 pandas DatetimeIndex,其中仅包含市场开放时的日期时间。此外,该软件包还包含针对未来交易所的产品特定日历,这些日历根据产品类型具有不同的市场开放、关闭、休息和假期。

该软件包提供对全球股票和期货市场超过 50 种独特交易日历的访问。

这个包是来自 Quantopian 的 Zipline 包的一个分支,只提取了相关部分。他们的出色工作都归功于 Quantopian。

主要版本

从 v1.0 开始,此包仅适用于 Python3。这与 Pandas 放弃对 Python2 的支持是一致的。

从 v1.4 开始,这个包现在有了交易日休息的概念。例如,这可以适应有午休时间的亚洲市场,或 24 小时开放并在一天中休息以进行交易处理的期货市场。

从 v2.0 开始,这个包提供了exchange_calendars 包中所有日历的镜像,它本身就是原始 trading_calendars 包的现在维护的分支。这增加了 50 多个日历。

从 v3.0 开始,函数 date_range() 更加完整和一致,有关该主题的更多讨论请参阅 PR #142 和 Issue #138。

从 v4.0 开始,此包提供了向日历添加中断的框架。这些也可以添加到计划中并使用新的 interrupts_df 属性进行查看。完整的更改列表可以在 PR #210 中找到。

源位置

托管在 GitHub 上:https ://github.com/rsheftel/pandas_market_calendars

安装

pip install pandas_market_calendars

Arch Linux 软件包在这里可用:https ://aur.archlinux.org/packages/python-pandas_market_calendars/

日历

可用日历列表

快速开始

import pandas_market_calendars as mcal

# Create a calendar
nyse = mcal.get_calendar('NYSE')

# Show available calendars
print(mcal.get_calendar_names())
early = nyse.schedule(start_date='2012-07-01', end_date='2012-07-10')
early
                  market_open             market_close
=========== ========================= =========================
 2012-07-02 2012-07-02 13:30:00+00:00 2012-07-02 20:00:00+00:00
 2012-07-03 2012-07-03 13:30:00+00:00 2012-07-03 17:00:00+00:00
 2012-07-05 2012-07-05 13:30:00+00:00 2012-07-05 20:00:00+00:00
 2012-07-06 2012-07-06 13:30:00+00:00 2012-07-06 20:00:00+00:00
 2012-07-09 2012-07-09 13:30:00+00:00 2012-07-09 20:00:00+00:00
 2012-07-10 2012-07-10 13:30:00+00:00 2012-07-10 20:00:00+00:00
mcal.date_range(early, frequency='1D')
DatetimeIndex(['2012-07-02 20:00:00+00:00', '2012-07-03 17:00:00+00:00',
               '2012-07-05 20:00:00+00:00', '2012-07-06 20:00:00+00:00',
               '2012-07-09 20:00:00+00:00', '2012-07-10 20:00:00+00:00'],
              dtype='datetime64[ns, UTC]', freq=None)
mcal.date_range(early, frequency='1H')
DatetimeIndex(['2012-07-02 14:30:00+00:00', '2012-07-02 15:30:00+00:00',
               '2012-07-02 16:30:00+00:00', '2012-07-02 17:30:00+00:00',
               '2012-07-02 18:30:00+00:00', '2012-07-02 19:30:00+00:00',
               '2012-07-02 20:00:00+00:00', '2012-07-03 14:30:00+00:00',
               '2012-07-03 15:30:00+00:00', '2012-07-03 16:30:00+00:00',
               '2012-07-03 17:00:00+00:00', '2012-07-05 14:30:00+00:00',
               '2012-07-05 15:30:00+00:00', '2012-07-05 16:30:00+00:00',
               '2012-07-05 17:30:00+00:00', '2012-07-05 18:30:00+00:00',
               '2012-07-05 19:30:00+00:00', '2012-07-05 20:00:00+00:00',
               '2012-07-06 14:30:00+00:00', '2012-07-06 15:30:00+00:00',
               '2012-07-06 16:30:00+00:00', '2012-07-06 17:30:00+00:00',
               '2012-07-06 18:30:00+00:00', '2012-07-06 19:30:00+00:00',
               '2012-07-06 20:00:00+00:00', '2012-07-09 14:30:00+00:00',
               '2012-07-09 15:30:00+00:00', '2012-07-09 16:30:00+00:00',
               '2012-07-09 17:30:00+00:00', '2012-07-09 18:30:00+00:00',
               '2012-07-09 19:30:00+00:00', '2012-07-09 20:00:00+00:00',
               '2012-07-10 14:30:00+00:00', '2012-07-10 15:30:00+00:00',
               '2012-07-10 16:30:00+00:00', '2012-07-10 17:30:00+00:00',
               '2012-07-10 18:30:00+00:00', '2012-07-10 19:30:00+00:00',
               '2012-07-10 20:00:00+00:00'],
              dtype='datetime64[ns, UTC]', freq=None)

贡献

欢迎以拉取请求的形式进行所有改进和附加(和更正)。这个包的价值和正确性会随着更多的关注而增长。

要添加新功能,请包含标准 pytest 格式的测试。

使用 pytest 运行测试套件。

未来

这个包是在 MIT 许可下开源的。欢迎大家添加更多的交易所或场外交易市场,确认或更正现有的日历,并且通常使用此代码做任何他们想做的事情。

项目详情