I get data from Y! finance, using urllib2, and then use csv.DictParser to get the daily price series. From there I write code that takes in those series for a given basket, and buys/sells and keeps track of P&L, then use matplotlib to view results. Email's in my profile if you want to talk more.
Yahoo finance data is notoriously inaccurate, and that may invalidate many strategies based on it.