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)
19 endday = datetime(2021,1,1)
20 weekdays = []
21 oneday = timedelta(1)
22 curr = 0
23 candidateday = rootday + curr*oneday
24
25
26
27
28 while (candidateday < endday):
29
30 for j in range(5):
31 weekdays.append(rootday + curr*oneday)
32 curr = curr+1
33 curr = curr+2
34 candidateday = rootday + curr*oneday
35
36
37
38
39
40 NYSEholidays = []
41
42
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
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
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
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
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
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
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
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
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
152
153 setweekdays = set(weekdays)
154 setNYSEholidays = set(NYSEholidays)
155 newdays = set.difference(setweekdays,NYSEholidays)
156 newdays = sorted(list(newdays))
157
158
159 for i in newdays:
160 print i.strftime("%m/%d/%Y")
161