Perhaps the topic has already been discussed, but...
Why aren't unadjusted prices available in the backtester?
I see some problems with the current implementation:
1. Look-ahead bias
By restricting its users to split-adjusted prices only, Quantopian introduces a systematic look-ahead bias.
Indeed, when using split-adjusted stock prices, low priced stocks tend to do better than high priced stocks just because, by definition, stocks that did well over the years are more likely to experience splits than stocks that didn't. Thus, their split-adjusted prices converge to zero going back in time and the result is an artificial predictive power of stock prices (i.e., low > high).
2. Unrealistic filled prices in the blotter
In the transaction details I realized that filled prices are actually split-adjusted prices and not raw prices. Since I'm using IB's default commission model (price per share with a minimum of $1 per order), I guess I'm getting different results than in real life. Things add up quickly.
3. Filtering by actual prices is vital for some strategies
Generally, commission costs decrease with stock prices for the same dollar position. For strategies with a low average return per trade, it is important to avoid trading certain stocks when their prices are too low. E.g., at $0.005 per share, buying $100,000 of a $10 stock results in a $50 broker commission. It doubles for a $5 stock. The ability to filter out low priced stocks is vital for certain strategies.
A better approach?
In backtesting, using split-adjusted prices is fine as long as one is using the current price at the time when the decision was made. For example, the backtester should see the price of AAPL as $645.57 on 2014-06-06 and data prior to that date would be split-adjusted. On 2014-06-16, the price seen by the backtester should be $92.20 and at that time the price of 2014-06-06 would be split-adjusted (i.e., the initial price of $645.57 divided by 7).