Last night we deployed a new backtesting engine we're nicknaming 'LEAN'. It is a leaps and bounds better than our previous engine! I will update the documentation soon but it brings some impressive new features:

1. Lightening Speed. We did some bench-marking on a 10 year minute level backtest to confirm. In the benchmark the 'market leader' takes a mind numbing 7m 42sec, and our previous engine wasn't much better taking 5m 30sec. The new LEAN engine completes a 10 year simulation in 46 seconds! We're now literally 10x faster than the market incumbent in a head-to-head series backtest.

2. Generic Data Support. All data sources are loaded generically at runtime, meaning the backend can run any data. If you wanted you could build portfolios of any market data imaginable. You could import daily-oil-futures data and trade directly on the asset! Your new custom data would be passed into a new function OnData(OilFutures data) { .. }. The normal equities TradeBars are now passed into OnData(TradeBars data) { .. }. It is still backwards compatible but I recommend moving to the new OnData event system.

3. Custom Plotting. The new engine supports generic charting as well, so you can pass in custom data and it will be drawn to the frontend. This isn't build out in Javascript yet but this week @Gustavo will be working on displaying custom charts.

4. Plugin Architecture. We redesigned the entire system to use a dynamic plugin style architecture. This plugin style design enables us to rocket towards live trading. We simply need to substitute the Backtesting-Orders-Processor with the Ameritrade-Orders-Processor plugin and we and deploy live trading to Ameritrade. Potentially we can release the interface for the plugin's and the community can write adapters to new brokerages!

There's bound to be some new bugs we've missed so please be patient - and if you find anything feel free to write to me at

Thanks for using QC!