Package QSTK :: Package Bin :: Module gen_nyse_dates
[hide private]
[frames] | no frames]

Source Code for Module QSTK.Bin.gen_nyse_dates

  1  """ 
  2  Created on March 22, 2011 
  3   
  4  @author: Tucker Balch 
  5  @contact: tucker@cc.gatech.edu 
  6   
  7  This script generates a list of days on which we expect the NYSE to be 
  8  open.  Information is drawn from two websites: 
  9   
 10  http://www.timeanddate.com/holidays/ 
 11  http://www.nyse.com/about/newsevents/1176373643795.html 
 12  """ 
 13   
 14  __version__ = "$Revision: 295 $" 
 15   
 16  from datetime import * 
 17   
 18  rootday = datetime(2011,1,3) # first monday in 2011 
 19  endday = datetime(2021,1,1) # don't go beyond this date 
 20  weekdays = [] # all weekdays 
 21  oneday = timedelta(1) # length of one day 
 22  curr = 0 
 23  candidateday = rootday + curr*oneday 
 24   
 25  # 
 26  # create a list of all weekdays 
 27  # 
 28  while (candidateday < endday): 
 29          # add 5 weekdays to list 
 30          for j in range(5): # 5 days per week 
 31                  weekdays.append(rootday + curr*oneday) 
 32                  curr = curr+1 
 33          curr = curr+2 # skip the weekend 
 34          candidateday = rootday + curr*oneday 
 35   
 36  # 
 37  # Create a list of all NYSE observed holidays (from NYSE's website) 
 38  # The dates are confirmed through 2013, and estimated thereafter. 
 39  # 
 40  NYSEholidays = [] 
 41   
 42  # New Year's Day 
 43  NYSEholidays.append(datetime(2011,1,1)) 
 44  NYSEholidays.append(datetime(2012,1,2)) 
 45  NYSEholidays.append(datetime(2013,1,1)) 
 46  NYSEholidays.append(datetime(2014,1,1)) 
 47  NYSEholidays.append(datetime(2015,1,1)) 
 48  NYSEholidays.append(datetime(2016,1,1)) 
 49  NYSEholidays.append(datetime(2017,1,2)) 
 50  NYSEholidays.append(datetime(2018,1,1)) 
 51  NYSEholidays.append(datetime(2019,1,1)) 
 52  NYSEholidays.append(datetime(2020,1,1)) 
 53   
 54  # MLK Day 
 55  NYSEholidays.append(datetime(2011,1,17)) 
 56  NYSEholidays.append(datetime(2012,1,16)) 
 57  NYSEholidays.append(datetime(2013,1,21)) 
 58  NYSEholidays.append(datetime(2014,1,20)) 
 59  NYSEholidays.append(datetime(2015,1,19)) 
 60  NYSEholidays.append(datetime(2016,1,18)) 
 61  NYSEholidays.append(datetime(2017,1,16)) 
 62  NYSEholidays.append(datetime(2018,1,15)) 
 63  NYSEholidays.append(datetime(2019,1,21)) 
 64  NYSEholidays.append(datetime(2020,1,20)) 
 65   
 66  # Washington's Birthday 
 67  NYSEholidays.append(datetime(2011,2,21)) 
 68  NYSEholidays.append(datetime(2012,2,20)) 
 69  NYSEholidays.append(datetime(2013,2,18)) 
 70  NYSEholidays.append(datetime(2014,2,17)) 
 71  NYSEholidays.append(datetime(2015,2,16)) 
 72  NYSEholidays.append(datetime(2016,2,15)) 
 73  NYSEholidays.append(datetime(2017,2,20)) 
 74  NYSEholidays.append(datetime(2018,2,19)) 
 75  NYSEholidays.append(datetime(2019,2,18)) 
 76  NYSEholidays.append(datetime(2020,2,17)) 
 77   
 78  # Good Friday 
 79  NYSEholidays.append(datetime(2011,4,22)) 
 80  NYSEholidays.append(datetime(2012,4,6)) 
 81  NYSEholidays.append(datetime(2013,3,29)) 
 82  NYSEholidays.append(datetime(2014,4,18)) 
 83  NYSEholidays.append(datetime(2015,4,3)) 
 84  NYSEholidays.append(datetime(2016,3,25)) 
 85  NYSEholidays.append(datetime(2017,4,14)) 
 86  NYSEholidays.append(datetime(2018,3,30)) 
 87  NYSEholidays.append(datetime(2019,4,19)) 
 88  NYSEholidays.append(datetime(2020,4,10)) 
 89   
 90  # Memorial Day 
 91  NYSEholidays.append(datetime(2011,5,30)) 
 92  NYSEholidays.append(datetime(2012,5,28)) 
 93  NYSEholidays.append(datetime(2013,5,27)) 
 94  NYSEholidays.append(datetime(2014,5,26)) 
 95  NYSEholidays.append(datetime(2015,5,25)) 
 96  NYSEholidays.append(datetime(2016,5,30)) 
 97  NYSEholidays.append(datetime(2017,5,29)) 
 98  NYSEholidays.append(datetime(2018,5,28)) 
 99  NYSEholidays.append(datetime(2019,5,27)) 
100  NYSEholidays.append(datetime(2020,5,25)) 
101   
102  # Independance Day 
103  NYSEholidays.append(datetime(2011,7,4)) 
104  NYSEholidays.append(datetime(2012,7,4)) 
105  NYSEholidays.append(datetime(2013,7,4)) 
106  NYSEholidays.append(datetime(2014,7,4)) 
107  NYSEholidays.append(datetime(2015,7,3)) 
108  NYSEholidays.append(datetime(2016,7,4)) 
109  NYSEholidays.append(datetime(2017,7,4)) 
110  NYSEholidays.append(datetime(2018,7,4)) 
111  NYSEholidays.append(datetime(2019,7,4)) 
112  NYSEholidays.append(datetime(2020,7,3)) 
113   
114  # Labor Day 
115  NYSEholidays.append(datetime(2011,9,5)) 
116  NYSEholidays.append(datetime(2012,9,3)) 
117  NYSEholidays.append(datetime(2013,9,2)) 
118  NYSEholidays.append(datetime(2014,9,1)) 
119  NYSEholidays.append(datetime(2015,9,7)) 
120  NYSEholidays.append(datetime(2016,9,5)) 
121  NYSEholidays.append(datetime(2017,9,4)) 
122  NYSEholidays.append(datetime(2018,9,3)) 
123  NYSEholidays.append(datetime(2019,9,2)) 
124  NYSEholidays.append(datetime(2020,9,7)) 
125   
126  # Thanksgiving Day 
127  NYSEholidays.append(datetime(2011,11,24)) 
128  NYSEholidays.append(datetime(2012,11,22)) 
129  NYSEholidays.append(datetime(2013,11,28)) 
130  NYSEholidays.append(datetime(2014,11,27)) 
131  NYSEholidays.append(datetime(2015,11,26)) 
132  NYSEholidays.append(datetime(2016,11,24)) 
133  NYSEholidays.append(datetime(2017,11,23)) 
134  NYSEholidays.append(datetime(2018,11,22)) 
135  NYSEholidays.append(datetime(2019,11,28)) 
136  NYSEholidays.append(datetime(2020,11,26)) 
137   
138  # Christmas 
139  NYSEholidays.append(datetime(2011,12,26)) 
140  NYSEholidays.append(datetime(2012,12,25)) 
141  NYSEholidays.append(datetime(2013,12,25)) 
142  NYSEholidays.append(datetime(2014,12,25)) 
143  NYSEholidays.append(datetime(2015,12,25)) 
144  NYSEholidays.append(datetime(2016,12,26)) 
145  NYSEholidays.append(datetime(2017,12,25)) 
146  NYSEholidays.append(datetime(2018,12,25)) 
147  NYSEholidays.append(datetime(2019,12,25)) 
148  NYSEholidays.append(datetime(2020,12,25)) 
149   
150  # 
151  # Now we use Python's set magic to remove the holidays 
152  # 
153  setweekdays = set(weekdays) # convert weekdays to a set 
154  setNYSEholidays = set(NYSEholidays) 
155  newdays = set.difference(setweekdays,NYSEholidays) # remove holidays 
156  newdays = sorted(list(newdays)) # convert back to sorted list 
157   
158  # print it out 
159  for i in newdays: 
160          print i.strftime("%m/%d/%Y") 
161