Expiration day is when options expire. Expiration day is almost always the third Friday of every month. I can't remember a month in the last few years where it did not fall on a Friday, but theoretically Friday could be a holiday. Anyway, Date::Business helps us out.
#!/usr/bin/perl -w use strict; use Date::Business; # # usage: $0 MMYYYY # result: third friday business day of the given month, which # should be the date equity options expire. # Use this for equities only; # # Bonds and Futures exp dates are another story alltogether. die &usage unless defined $ARGV[0]; # # perhaps I should verify $ARGV[0] is an int and # length($ARGV[0] = 5 # my $prepassed = $ARGV[0]; my $mon = substr($prepassed, 0, 2); my $yr = substr($prepassed, 2, 4); my $passto = $yr . $mon . 21 ; my $d = new Date::Business( DATE => "$passto", ); while ( $d->day_of_week != 5 ) { $d->prevb; } my $retdate = $d->image(); print("$retdate\n"); sub usage() { print "\n\t usage:\n\t\tgetExpirationDay.pl MMYYYY\n\t\t"; print "returns expiration day in YYYYMMDD format\n"; }