How do I get my algorithm to make monthly rotation trades on the first trading day of the month?

I tried the following.

# Schedule the monthly trade function
self.Schedule.On(self.DateRules.MonthStart(),
self.TimeRules.BeforeMarketClose('SPY'),
self.trade)

Unfortunately, this only seems to work if the first day of the month happens to be a trading day.

If the first day of the month falls on a weekend or a holiday, the algortihm does not make any trades that month.