This is a gem to determine whether the US stock market is open on a given day, and calculate the number of trading days between two dates. All dates are based on the NYSE calendar.
Typically, markets are closed on weekends and the following holidays:
- New Year's Day (January 1st, or first Monday of January if on weekend)
- Martin Luther King Day (third Monday of January)
- Washington's Birthday (third Monday of Feburary)
- Good Friday (Determined by http://www.maa.clell.de/StarDate/publ_holidays.html)
- Memorial Day (last Monday of May)
- Juneteenth (June 19, or nearest Monday or Friday if on a weekend)
- Independence Day (July 4, or July 3rd if on Saturday, July 5th if on Sunday)
- Labor Day (First Monday of September)
- Thanksgiving Day (Fourth Thursday of November)
- Christmas Day (December 25th, or December 24th if on Saturday, December 26th if on Sunday)
Right now the calculation of dates is limited to before 12/31/2059, but that should give you plenty of time to get rich!
In your Gemfile:
gem 'stock_market_days'
is_market_day?
- tells you whether the given date is a date US markets are open
market_days_between
- tells number of trading days between two dates
market_days_from
- gives you the trading day of given date, plus number of trading days
Look at the test suite for examples of usage.