Release Notes v2.3.0.2

This release adds a generic data sourcing feature along with the abstraction of the data caching. This allows different configurations to be set up independently of physical files. In addition, LEAN had dozens of bug fixes to improve its stability and consistency across backtesting and live trading. There were no breaking changes in regression tests or the API of LEAN.


  • Added IDataProvider and IDataCacheProvider - a redesign of the bottom of the LEAN enumerator stack so the data sourcing and caching are pluggable. This helps track memory issues and abstract away the concept of data files.
  • Local desktop charting now supports custom charts.
  • Apply to backtest control limits in backtest initialization.
  • Added handling for "INF" factor files where splits make adjusted pricing impossible.
  • Backtestingodd-hour scheduled events now behave closely to live trading.
  • Added SystemDebug packet to distinguish between user debug and system debug messages.
  • Add start-date parameter to CoarseUniverseGenerator

Bug Fixes

  • Fixed the issue of double sampling and sampling when there was no data for daily data.
  • Fixed Linux log corruption from Unicode characters.
  • Set IDataConsolidator period to fix the issue of consolidating ticks.
  • Changed GUI UserInterface project path to Debug from Release.
  • Fixed Forex and CFD assets are not receiving ticks because they were added as trade data.
  • Fixed issue where equity sampling timezone is dependent on the host computer.
  • Fixed different timezones between custom and equity charts.
  • Fixed bug in FineFundamental data selection, not announcing selected securities if they already existed.
  • Removed APIDataProvider temporarily, as it doesn't fit the new IDataProvider pattern.
  • Fixed incorrect security type when seeding security.
  • Fixed incorrect bar type in Forex history requests (QuoteBar required).
  • Fixed bug in Interactive Brokers caching"No security definition found for this request."
  • Added additional data file to fix data not found error messages.
  • Fix crash in backtesting after an out-of-memory error.
  • Remove rate limiting on debug messaging in local LEAN.
  • Fix Interactive Brokers Brokerage "Pacing violation" error.
  • Ensured logs would be uploaded in the event of an initialization failure.
  • Fixed issue with CFD and OANDA data where portfolio was always $0.
  • Remove the hacky Environment. Exit solution to a temporary threading issue.


  • We have disabled options and futures price seeding to reduce logging noise.
  • History() methods without a T-type specified are not recommended as the return type is ambiguous.

Thank you to the community contributors in this release -mushketyk, mchandschuh!

About LEAN

LEAN aims to empower investors to invest confidently using cutting-edge algorithmic trading technology. Through the power of open source, we are building the world's best algorithmic trading platform, capable of accurately modeling global markets to give you insight into your strategy. Trading algorithms can be seamlessly deployed from backtesting into production without changing or moving between brokerages. The LEAN user community reaches over 28,000 quants from all over the world. LEAN supports C#, F#, VB, Java, and Python programming languages and can be used in Equity, Forex, CFD, Options, and Futures markets. It supports live paper trading or execution by Interactive Brokers, FXCM, and Oanda Brokerage. For more information, join the LEAN Community on GitHub.