pandas_market_calendars 是一個 Python 庫,可讓您深入了解交易市場。把文章涵蓋了 pandas_market_calendars 庫的幾個方面。
關(guān)于 pandas_market_calendars
pandas_market_calendars是Quantopian的Zipline軟件包的一部分,完全面向金融領(lǐng)域的用戶。用戶可以利用該庫進(jìn)行以下操作:
生成日期范圍
識別節(jié)假日
計算兩個日期之間的交易日數(shù)。
交易所和場外市場的詳細(xì)信息
語法
讓我們看一下 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
用途
這個庫的其他用途包括:
金融
時間序列分析
生成數(shù)據(jù)序列
創(chuàng)建自定義節(jié)假日日歷
依賴關(guān)系
pandas_market_calendars的依賴關(guān)系有兩種類型:直接和間接。建議在安裝此庫時檢查所有這些依賴關(guān)系。直接依賴關(guān)系有4個:
exchange-calendars
pandas
python-dateutil
pytz
間接依賴關(guān)系有6個:
korean-lunar-calendar
numpy
pyluach
six
toolz
tzdata
使用示例
現(xiàn)在讓我們了解如何使用這個出色的庫。
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'))
輸出結(jié)果
['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函數(shù)顯示市場是否開放進(jìn)行交易。通過這種方式,可以初始化過去的數(shù)據(jù)或了解未來的事件。regular_market_times是日歷對象的一個屬性。
import pandas_market_calendars as mcal # 獲取紐約證券交易所(NYSE)的日歷 nyse = mcal.get_calendar('NYSE') # 獲取NYSE的常規(guī)交易時間 print(nyse.regular_market_times) # 獲取特定日期的常規(guī)交易時間 print(nyse.schedule('2023-10-24', include_times=True))
輸出結(jié)果
{'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函數(shù)幫助用戶獲取這個日期范圍。
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)
輸出結(jié)果:
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')
市場假期
現(xiàn)在,一旦您獲得了所選擇的日歷,您可能想要知道哪些日期是市場假期或其他形式的市場閉市。為此,pandas_market_calendars提供了holidays函數(shù)。您只需將日期作為函數(shù)的參數(shù),并且您將了解到市場在您提供的日期中有哪些假期。
python # 獲取美聯(lián)儲日歷 us_federal_reserve_calendar = mcal.get_calendar('USFederalReserve') # 獲取下個月的所有假期和其他市場閉市日 holidays = us_federal_reserve_calendar.holidays('2023-11-01', '2023-11-30') # 打印假期列表 print(holidays)
所以這個日歷的輸出是:
['感恩節(jié)']
交易日計數(shù)
Python的pandas_market_calendars具有讓投資者了解交易日數(shù)量的功能。交易日計數(shù)提供了用戶需要指定的兩個日期之間的總交易日數(shù)的整數(shù)格式。對于那些考慮這些因素預(yù)先計劃交易收入的人來說,這非常有用。
# 獲取紐約證券交易所(NYSE)的日歷 nyse_calendar = mcal.get_calendar('NYSE') # 計算2023-11-01至2023-11-30之間的交易日數(shù) num_trading_days = nyse_calendar.business_days('2023-11-01', '2023-11-30') # 打印交易日數(shù) print(num_trading_days)
輸出結(jié)果:
使用pandas_market_calendars庫
使用pandas_market_calendars庫可以獲取特定市場的日期限制。市場的數(shù)據(jù)限制可能是由以下原因引起的:
市場可能已經(jīng)停止運營
公司可能被收購
數(shù)據(jù)提供商不再為該特定證券或交易所提供支持
通過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)
輸出結(jié)果將顯示該日歷開始運行的日期以及截至日期,格式如下:
文章來源地址http://www.zghlxwxcb.cn/article/593.html
Start date: 1875-05-17 00:00:00 End date: 2203-12-31 00:00:00
如果您想了解超出日期限制的交易日,請使用extend()函數(shù),但無法保證信息的準(zhǔn)確性。最好檢查日歷給定時間范圍內(nèi)提供的日期。但是,如果您仍然希望了解其工作原理,可以參考以下代碼:
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' , '...
設(shè)置時區(qū)
如果您想在pandas_market_calendars中設(shè)置特定的時區(qū),可以使用兩種方法之一:
使用schedule()方法的timezone參數(shù)
使用市場日歷對象的timezone屬性
使用schedule()方法的timezone參數(shù)
使用該方法非常簡單易懂。您可以使用以下代碼。schedule()方法具有timezone參數(shù),該參數(shù)接受您指定的時區(qū)作為參數(shù)。如果您不提供時區(qū),則將以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)
如上所示,輸出結(jié)果將顯示交易日期以及市場的開盤和收盤時間。
使用市場日歷對象的timezone屬性
使用此方法,您可以在不同的時區(qū)中工作。它可以提供市場的開盤和收盤時間。相比于schedule()方法,它的函數(shù)調(diào)用較少。因此,例如,如果您正在使用NYSE日歷,并希望將時區(qū)設(shè)置為太平洋時間,請嘗試以下代碼:
import pandas_market_calendars as mcal import pytz nyse_calendar = mcal.get_calendar('NYSE') pacific_timezone = pytz.timezone('America/Los_Angeles') # 將紐約證交所的默認(rèn)時區(qū)設(shè)置為太平洋時間 nyse_calendar.timezone = pacific_timezone # 獲取紐約證交所的開盤和收盤時間 nyse_business_days = nyse_calendar.schedule() print(nyse_business_days)
輸出結(jié)果將是這樣的格式:
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()函數(shù)。以下是一個示例代碼,演示如何獲取紐約證交所(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)
輸出結(jié)果將顯示指定日期范圍內(nèi)的開盤和收盤時間:
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 的另一個函數(shù),稱為 Schedule() 方法。在這里,您需要輸入開始日期和結(jié)束日期。該方法將獲取此開始日期和結(jié)束日期內(nèi)的所有交易日?,F(xiàn)在,如果您正在查看 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 有什么好處?
準(zhǔn)確性、靈活性和易用性是其最大的優(yōu)點。
如何使用 獲取特定證券交易所的交易時間pandas_market_calendars?
要獲取特定交易所的交易時間,您首先需要導(dǎo)入pandas_market_calendars并創(chuàng)建所需交易所日歷的實例。例如,要獲取紐約證券交易所 (NYSE) 日歷,您可以使用get_calendar('NYSE')。然后,您可以使用諸如schedule()獲取指定期間的詳細(xì)交易時間和日期之類的方法。文章來源:http://www.zghlxwxcb.cn/article/593.html
到此這篇關(guān)于如何利用Python 和 pandas_market_calendars 進(jìn)行高效的財務(wù)數(shù)據(jù)分析的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!