GMT 和 ET 问题 - 如何处理时区差异

问题描述 投票:0回答:1

我有一个 GMT-04:00 东部时间(美国和加拿大)时区 2014 年至 2023 年外汇新闻事件的数据集。

现在,我想分析一下每条消息对金价(XAUUSD)的影响。为此,我需要从 ForexSB 下载历史黄金价格数据。然而,我注意到 ForexSB 上可用数据的时区被列为 GMT-05:00 东部时间(美国和加拿大)。

我需要这两个数据集在时区方面保持一致,以避免我的分析和人工智能模型训练中出现任何问题。我怎样才能实现这个目标?

请帮助我。这些时区让我感到困惑。

我该如何解决?

非常感谢你

python timezone dataset gmt forex
1个回答
0
投票

问:
“我怎样才能实现这个目标?”

欢迎来到现实世界的计算领域。好消息是,你在喂人工智能巨魔之前已经注意到了这个(经典问题)......(许多其他人没有......)。

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 协调的特征,源自基本面)对它们进行了扩展,这比预期的工作要困难得多。

enter image description here

添加基本面后,量化模型(至少在那些年里)泛化能力不够好 - 无论是因为 TA 特征已经具有良好的预测能力,还是因为样本太少(在 1E+5 的时期内只有 1E+5 个基本面)大约 1E+9 个 PriceDomain 样本 - 详细信息请参阅 Hoeffding、Hoeffding、Hoeffding ...),
正如 Adams 的《银河系漫游指南》向我们揭示的那样,地球上的凡人 - 不要惊慌 :o)

© www.soinside.com 2019 - 2024. All rights reserved.