我有一个 GMT-04:00 东部时间(美国和加拿大)时区 2014 年至 2023 年外汇新闻事件的数据集。
现在,我想分析一下每条消息对金价(XAUUSD)的影响。为此,我需要从 ForexSB 下载历史黄金价格数据。然而,我注意到 ForexSB 上可用数据的时区被列为 GMT-05:00 东部时间(美国和加拿大)。
我需要这两个数据集在时区方面保持一致,以避免我的分析和人工智能模型训练中出现任何问题。我怎样才能实现这个目标?
请帮助我。这些时区让我感到困惑。
我该如何解决?
非常感谢你
问:
“我怎样才能实现这个目标?”
欢迎来到现实世界的计算领域。好消息是,你在喂人工智能巨魔之前已经注意到了这个(经典问题)......(许多其他人没有......)。
2007-01-03 05:00:00+00:00 WED, 'Total Vehicle Sales', '3256', 'All Day', 'USD',
2007-01-03 05:00:00+00:00 WED, 'FOMC Meeting Minutes', '3240', '2:00pm', 'USD',
2007-01-03 05:00:00+00:00 WED, 'Trade Balance', '3260', '4:45pm', 'NZD',
2007-01-03 05:00:00+00:00 WED, 'AIG Services Index', '10194', '5:30pm', 'AUD',
2007-01-04 05:00:00+00:00 THU, 'CPI m/m', '3261', '1:45am', 'CHF',
2007-01-04 05:00:00+00:00 THU, 'Spanish Services PMI', '43885', '3:15am', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'Italian Services PMI', '43435', '3:45am', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'Final Services PMI', '3263', '4:00am', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'Services PMI', '3264', '4:30am', 'GBP',
2007-01-04 05:00:00+00:00 THU, 'Mortgage Approvals', '10286', '', 'GBP',
2007-01-04 05:00:00+00:00 THU, 'Net Lending to Individuals m/m', '3265', '', 'GBP',
2007-01-04 05:00:00+00:00 THU, 'French 10-y Bond Auction', '43326', '4:55am', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'CPI Flash Estimate y/y', '3266', '5:00am', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'Italian Prelim CPI m/m', '9537', '', 'EUR',
2007-01-04 05:00:00+00:00 THU, 'GfK Consumer Confidence', '18310', '5:30am', 'GBP',
2007-01-04 05:00:00+00:00 THU, 'MPC Member Blanchflower Speaks', '12650', '7:30am', 'GBP',
2007-01-04 05:00:00+00:00 THU, 'Challenger Job Cuts y/y', '8622', '', 'USD',
2007-01-04 05:00:00+00:00 THU, 'RMPI m/m', '3242', '8:30am', 'CAD',
2007-01-04 05:00:00+00:00 THU, 'IPPI m/m', '3241', '', 'CAD',
2007-01-04 05:00:00+00:00 THU, 'Unemployment Claims', '3243', '', 'USD',
2007-01-04 05:00:00+00:00 THU, 'ISM Non-Manufacturing PMI', '3244', '10:00am', 'USD',
2007-01-04 05:00:00+00:00 THU, 'Pending Home Sales m/m', '9879', '', 'USD',
2007-01-04 05:00:00+00:00 THU, 'Factory Orders m/m', '3246', '', 'USD',
2007-01-04 05:00:00+00:00 THU, 'Crude Oil Inventories', '3267', '10:30am', 'USD',
2007-01-04 05:00:00+00:00 THU, 'Monetary Base y/y', '3268', '6:50pm', 'JPY',
2007-01-05 05:00:00+00:00 FRI, 'Foreign Currency Reserves', '42187', '3:00am', 'CHF',
2007-01-05 05:00:00+00:00 FRI, 'Halifax HPI m/m', '9357', '', 'GBP',
2007-01-05 05:00:00+00:00 FRI, 'Retail PMI', '43575', '4:00am', 'EUR',
2007-01-05 05:00:00+00:00 FRI, 'Consumer Confidence', '11250', '5:00am', 'EUR',
2007-01-05 05:00:00+00:00 FRI, 'PPI m/m', '3269', '', 'EUR',
2007-01-05 05:00:00+00:00 FRI, 'Retail Sales m/m', '3270', '', 'EUR',
2007-01-05 05:00:00+00:00 FRI, 'Unemployment Rate', '3271', '', 'EUR',
2007-01-05 05:00:00+00:00 FRI, 'Employment Change', '3247', '7:00am', 'CAD',
2007-01-05 05:00:00+00:00 FRI, 'Unemployment Rate', '3248', '', 'CAD',
2007-01-05 05:00:00+00:00 FRI, 'Non-Farm Employment Change', '3249', '8:30am', 'USD',
2007-01-05 05:00:00+00:00 FRI, 'Unemployment Rate', '3250', '', 'USD',
2007-01-05 05:00:00+00:00 FRI, 'Average Hourly Earnings m/m', '3251', '', 'USD',
2007-01-05 05:00:00+00:00 FRI, 'Ivey PMI', '3253', '10:00am', 'CAD',
2007-01-05 05:00:00+00:00 FRI, 'Natural Gas Storage', '8326', '10:30am', 'USD',
2007-01-05 05:00:00+00:00 FRI, 'Fed Chairman Bernanke Speaks', '3252', '1:45pm', 'USD',
2007-01-06 05:00:00+00:00 SAT, '',
2007-01-07 05:00:00+00:00 SUN, 'AIG Construction Index', '10199', '5:30pm', 'AUD',
2007-01-07 05:00:00+00:00 SUN, 'Bank Holiday', '3297', 'All Day', 'JPY',
2007-01-07 05:00:00+00:00 SUN, 'Building Approvals m/m', '9704', '7:30pm', 'AUD',
2007-01-07 05:00:00+00:00 SUN, 'ANZ Job Advertisements m/m', '19238', '', 'AUD',
所以,这个世界在这方面就更加严酷了。除了 GMT-04:00 -vs- GMT-05:00 之外,您的对齐方式还必须检查,当夏季夏令时时移 ( +1 | -1 ) 出现在“大西洋两岸”时,这不是同一天,甚至不必是同一周……上帝保佑我们免于任何更多的行政转变,这些转变在过去的调整中削减了整个几个月甚至几年。因此,最后,我们必须忍受,仍然是几天,这实际上会积累额外的“填充”秒数,这有助于重新调整全球原子钟网络中已知的偏差(是的,有几分钟,很少见,但,该时间为 61 秒...所以我们的软件可以在读取“时钟”时间为 23:59:60 的情况下...呵呵)
解决方案?
上帝保佑那些为我们凡人维护的人们,所有这些“行政”引入的时间跳跃、跨时区参考(甚至有一些尴尬的 TZ-s,甚至半小时移动,有些在过去两个世纪了,但不是现在,所以确实有很多需要遵循的规则)。
Python 时间可以使用“绝对”参考设置,其中时区实际上指的是所述时间值。
# ( ... )
#-----------------------------------------------------------
class UTC_minus5( datetime.tzinfo ):
""" __doc__
USAGE: UTC_minus5( datetime.tzinfo )
PARAMETERS: ...
EXAMPLE: UTC_minus5( 'UTC' )
THROWS: exceptions appeared on w7, where locale-specific
encodings of UTC_minus5( 'UTC' ) responses caused
internally unhandled exceptions.
Once w7-system-locale has bee changes so as to use
US-locale details, this problem ceased to exist.
REF.s: https://labix.org/python-dateutil#head-8bf499d888b70bc300c6c8820dc123326197c00f
https://www.epochconverter.com/timezones
http://pytz.sourceforge.net/
* https://julien.danjou.info/blog/2015/python-and-timezones
"Why you really, really, should never ever deal with timezones"
https://youtu.be/-5wpm-gesOY
"""
def tzname( self, *farg ):
return 'UTC-5'
def utcoffset( self, *farg ):
return datetime.timedelta( hours = -5 )
def dst( self, *farg ):
return datetime.timedelta( 0 )
#-----------------------------------------------------------
TZ_UTC_minus5 = UTC_minus5()
TZ_UTC = tz.gettz( 'UTC' )
#-----------------------------------------------------------
因此,Python“绝对”参考 TZ 感知时间可以解决您的问题,因为这些时间可以转换为全球协调时间 ( UTC+00:00:00 ),从而为您的模型提供“对齐”的坚实基础”输入到你的“学习者算法”中。
# (...)
return datetime.datetime( int( aFF_DICT_stringEVENT_DATE[ :4] ), # YYYY-
int( aFF_DICT_stringEVENT_DATE[5:7] ), # -MM-
int( aFF_DICT_stringEVENT_DATE[8:10] ), # -DD
tzinfo = TZ_UTC # <_All_Day_>
)
诺塔·贝尼:
在我过去的定量模型中,我为 XAUUSD 训练了 1k5 个特征范围的模型,然后用基本面(是的,UTC 协调的特征,源自基本面)对它们进行了扩展,这比预期的工作要困难得多。
添加基本面后,量化模型(至少在那些年里)泛化能力不够好 - 无论是因为 TA 特征已经具有良好的预测能力,还是因为样本太少(在 1E+5 的时期内只有 1E+5 个基本面)大约 1E+9 个 PriceDomain 样本 - 详细信息请参阅 Hoeffding、Hoeffding、Hoeffding ...),
正如 Adams 的《银河系漫游指南》向我们揭示的那样,地球上的凡人 - 不要惊慌 :o)