A. There is a free back date testing program out there - EZbacktest.
It imports data from Yahoo Finance and allows you to create any portfolio of your own and back date testing it against S&P500 index.
It's worth a try, if you find it worth your while, please donate to it so the author could keep adding new features to it.