I use a virtual switch as well. I was messing around trying to make a piston to do this, but there seems to be a glitch writing something to happen every year on a specific date if that date has already passed. So you might have to do something with like a Switch Case statement where at 12:01 AM every day you check to see what day it is and then react accordingly.
Try for yourself, but mine was failing when I tried to test against Every January 1. it actually was giving me a Java error. So i stopped there… But I think a Switch Case statement would work just fine as you would test it every day instead of once a year.