pandas_market_calendars 是一个 Python 库,可让您深入了解交易市场。把文章涵盖了 pandas_market_calendars 库的几个方面。
关于 pandas_market_calendars
pandas_market_calendars是Quantopian的Zipline软件包的一部分,完全面向金融领域的用户。用户可以利用该库进行以下操作:
生成日期范围
识别节假日
计算两个日期之间的交易日数。
交易所和场外市场的详细信息
语法
让我们看一下 pandas_market_calendars 的语法,先安装
pip install pandas_market_calendars
使用以下语句在 python 中引入使用,您可以开始使用该库:
import pandas_market_calendars as mcal
使用Anaconda安装
要使用Anaconda安装此库,请使用以下命令。其中任何一个都将帮助您完成安装。
conda install -c conda-forge pandas_market_calendars conda install -c "conda-forge/label/cf202003" pandas_market_calendars
用途
这个库的其他用途包括:
金融
时间序列分析
生成数据序列
创建自定义节假日日历
依赖关系
pandas_market_calendars的依赖关系有两种类型:直接和间接。建议在安装此库时检查所有这些依赖关系。直接依赖关系有4个:
exchange-calendars
pandas
python-dateutil
pytz
间接依赖关系有6个:
korean-lunar-calendar
numpy
pyluach
six
toolz
tzdata
使用示例
现在让我们了解如何使用这个出色的库。
import pandas_market_calendars as mcal # 获取纽约证券交易所(NYSE)的日历 nyse = mcal.get_calendar('NYSE') # 获取所有可用日历的列表 print(mcal.get_calendar_names()) # 检查一个日期是否是市场假日 print(nyse.is_holiday('2023-10-23')) # 获取给定日期后的下一个工作日 print(nyse.next_open_after('2023-10-23')) # 在两个日期之间生成一系列工作日期 print(mcal.date_range('2023-10-23', '2023-11-03', calendar='NYSE'))
输出结果
['ASX', 'BATS', 'CME', 'EUREX', 'FXCM', 'GLOBEX', 'HKEX', 'ICE', 'LSE', 'NASDAQ', 'NKY', 'NYSE', 'NYSEARCA', 'OTC', 'SGX', 'SSE', 'TSX'] False 2023-10-24 DatetimeIndex(['2023-10-24', '2023-10-25', '2023-10-26', '2023-10-27', '2023-10-30', '2023-10-31', '2023-11-01', '2023-11-02'], dtype='datetime64[ns]', freq='B')
正常交易时间
regular_market_times函数显示市场是否开放进行交易。通过这种方式,可以初始化过去的数据或了解未来的事件。regular_market_times是日历对象的一个属性。
import pandas_market_calendars as mcal # 获取纽约证券交易所(NYSE)的日历 nyse = mcal.get_calendar('NYSE') # 获取NYSE的常规交易时间 print(nyse.regular_market_times) # 获取特定日期的常规交易时间 print(nyse.schedule('2023-10-24', include_times=True))
输出结果
{'market_open': ((None, time(9, 30)), ('1902-03-04', time(9, 30))), 'market_close': ((None, time(16, 0)), ('1901-02-03', time(16, 0)))} [('2023-10-24 09:30:00', '2023-10-24 16:00:00')]
使用pandas_market_calendars获取日期范围
在获得日历后,您可以了解市场将开放的具体日期。这个输出会让您知道交易日的具体日期。pandas_market_calendars的date_range函数帮助用户获取这个日期范围。
import pandas_market_calendars as mcal # 获取纽约证券交易所(NYSE)的日历 nyse_calendar = mcal.get_calendar('NYSE') # 获取下个月的日期范围 next_month = nyse_calendar.date_range('2023-11-01', '2023-11-30') # 打印日期范围 print(next_month)
输出结果:
DatetimeIndex(['2023-11-01', '2023-11-02', '2023-11-03', '2023-11-06', '2023-11-07', '2023-11-08', '2023-11-09', '2023-11-10', '2023-11-13', '2023-11-14', '2023-11-15', '2023-11-16', '2023-11-17', '2023-11-20', '2023-11-21', '2023-11-22', '2023-11-27', '2023-11-28', '2023-11-29'], dtype='datetime64[ns]', freq='D')
市场假期
现在,一旦您获得了所选择的日历,您可能想要知道哪些日期是市场假期或其他形式的市场闭市。为此,pandas_market_calendars提供了holidays函数。您只需将日期作为函数的参数,并且您将了解到市场在您提供的日期中有哪些假期。
python # 获取美联储日历 us_federal_reserve_calendar = mcal.get_calendar('USFederalReserve') # 获取下个月的所有假期和其他市场闭市日 holidays = us_federal_reserve_calendar.holidays('2023-11-01', '2023-11-30') # 打印假期列表 print(holidays)
所以这个日历的输出是:
['感恩节']
交易日计数
Python的pandas_market_calendars具有让投资者了解交易日数量的功能。交易日计数提供了用户需要指定的两个日期之间的总交易日数的整数格式。对于那些考虑这些因素预先计划交易收入的人来说,这非常有用。
# 获取纽约证券交易所(NYSE)的日历 nyse_calendar = mcal.get_calendar('NYSE') # 计算2023-11-01至2023-11-30之间的交易日数 num_trading_days = nyse_calendar.business_days('2023-11-01', '2023-11-30') # 打印交易日数 print(num_trading_days)
输出结果:
使用pandas_market_calendars库
使用pandas_market_calendars库可以获取特定市场的日期限制。市场的数据限制可能是由以下原因引起的:
市场可能已经停止运营
公司可能被收购
数据提供商不再为该特定证券或交易所提供支持
通过start_date和end_date可以帮助用户了解日期限制。请参考下面的代码以理解其用法:
import pandas_market_calendars as mcal nyse_calendar = mcal.get_calendar('NYSE') start_date = nyse_calendar.start_date end_date = nyse_calendar.end_date print('Start date:', start_date) print('End date:', end_date)
输出结果将显示该日历开始运行的日期以及截至日期,格式如下:
文章来源地址https://www.toymoban.com/diary/python/593.html
Start date: 1875-05-17 00:00:00 End date: 2203-12-31 00:00:00
如果您想了解超出日期限制的交易日,请使用extend()函数,但无法保证信息的准确性。最好检查日历给定时间范围内提供的日期。但是,如果您仍然希望了解其工作原理,可以参考以下代码:
import pandas_market_calendars as mcal nyse_calendar = mcal.get_calendar('NYSE') next_year = nyse_calendar.extend('2024-01-01', '2024-12-31') print('Next year:', next_year)
输出将包含超出范围的日期,如下所示:
Next year: DatetimeIndex([ '2023-12-31' , '2024-01-01' , '2024-01-02' , '2024-01-03' , '2024-01-04' , '2024-01-05' , '2024-01-06' , '2024-01-07' , '2024-01-08' , '2024-01-09' , '2024-01-10' , '2024-01-11' , '2024-01-12' , '2024-01-13' , '2024-01-14' , '2024-01-15' , '...
设置时区
如果您想在pandas_market_calendars中设置特定的时区,可以使用两种方法之一:
使用schedule()方法的timezone参数
使用市场日历对象的timezone属性
使用schedule()方法的timezone参数
使用该方法非常简单易懂。您可以使用以下代码。schedule()方法具有timezone参数,该参数接受您指定的时区作为参数。如果您不提供时区,则将以UTC格式输出。
import pandas_market_calendars as mcal import pytz nyse_calendar = mcal.get_calendar('NYSE') pacific_timezone = pytz.timezone('America/Los_Angeles') # 以太平洋时间(PT)获取纽约证交所的开盘和收盘时间 nyse_business_days = nyse_calendar.schedule(timezone=pacific_timezone) print(nyse_business_days)
如上所示,输出结果将显示交易日期以及市场的开盘和收盘时间。
使用市场日历对象的timezone属性
使用此方法,您可以在不同的时区中工作。它可以提供市场的开盘和收盘时间。相比于schedule()方法,它的函数调用较少。因此,例如,如果您正在使用NYSE日历,并希望将时区设置为太平洋时间,请尝试以下代码:
import pandas_market_calendars as mcal import pytz nyse_calendar = mcal.get_calendar('NYSE') pacific_timezone = pytz.timezone('America/Los_Angeles') # 将纽约证交所的默认时区设置为太平洋时间 nyse_calendar.timezone = pacific_timezone # 获取纽约证交所的开盘和收盘时间 nyse_business_days = nyse_calendar.schedule() print(nyse_business_days)
输出结果将是这样的格式:
market_open market_close 2023-10-31 06:30:00 13:00:00 2023-11-01 06:30:00 13:00:00 2023-11-02 06:30:00 13:00:00 ...
如果您想获取特定市场的开盘和收盘时间段,可以使用pandas_market_calendars库中的schedule()函数。以下是一个示例代码,演示如何获取纽约证交所(NYSE)的开盘和收盘时间
import pandas_market_calendars as mcal nyse_calendar = mcal.get_calendar('NYSE') start_date = '2022-10-01' end_date = '2022-10-31' schedule = nyse_calendar.schedule(start_date=start_date, end_date=end_date) print(schedule)
输出结果将显示指定日期范围内的开盘和收盘时间:
market_open market_close 2022-10-03 13:30:00+00:00 09:30:00 2022-10-03 20:00:00 2022-10-04 13:30:00+00:00 09:30:00 2022-10-04 20:00:00 2022-10-05 13:30:00+00:00 09:30:00 2022-10-05 20:00:00 2022-10-06 13:30:00+00:00 09:30:00 2022-10-06 20:00:00 2022-10-07 13:30:00+00:00 09:30:00 2022-10-07 20:00:00 2022-10-10 13:30:00+00:00 09:30:00 2022-10-10 20:00:00 2022-10-11 13:30:00+00:00 09:30:00 2022-10-11 20:00:00 2022-10-12 13:30:00+00:00 09:30:00 2022-10-12 20:00:00 2022-10-13 13:30:00+00:00 09:30:00 2022-10-13 20:00:00 2022-10-14 13:30:00+00:00 09:30:00 2022-10-14 20:00:00 2022-10-17 13:30:00+00:00 09:30:00 2022-10-17 20:00:00 2022-10-18 13:30:00+00:00 09:30:00 2022-10-18 20:00:00 2022-10-19 13:30:00+00:00 09:30:00 2022-10-19 20:00:00 2022-10-20 13:30:00+00:00 09:30:00 2022-10-20 20:00:00 2022-10-21 13:30:00+00:00 09:30:00 2022-10-21 20:00:00 2022-10-24 13:30:00+00:00 09:30:00 2022-10-24 20:00:00 2022-10-25 13:30:00+00:00 09:30:00 2022-10-25 20:00:00 2022-10-26 13:30:00+00:00 09:30:00 2022-10-26 20:00:00 2022-10-27 13:30:00+00:00 09:30:00
pandas_market_calendars 中的交易时间表
为了衡量交易时间表,您可以使用 pandas_market_calendars 的另一个函数,称为 Schedule() 方法。在这里,您需要输入开始日期和结束日期。该方法将获取此开始日期和结束日期内的所有交易日。现在,如果您正在查看 NYSE 日历并想了解 2023 年 11 月的交易时间表,您可以通过以下代码获得帮助:
import pandas_market_calendars as mcal # Get the NYSE calendar nyse_calendar = mcal.get_calendar('NYSE') # Get the trading schedule for the month of November 2023 trading_schedule = nyse_calendar.schedule(start_date='2023-11-01', end_date='2023-11-30') # Print the trading schedule print(trading_schedule)
pandas_market_calendars 常见问题解答
使用 pandas_market_calendars 有什么好处?
准确性、灵活性和易用性是其最大的优点。
如何使用 获取特定证券交易所的交易时间pandas_market_calendars?
要获取特定交易所的交易时间,您首先需要导入pandas_market_calendars并创建所需交易所日历的实例。例如,要获取纽约证券交易所 (NYSE) 日历,您可以使用get_calendar('NYSE')。然后,您可以使用诸如schedule()获取指定期间的详细交易时间和日期之类的方法。文章来源:https://www.toymoban.com/diary/python/593.html
到此这篇关于如何利用Python 和 pandas_market_calendars 进行高效的财务数据分析的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!