Release Notes v2.4.0.1

This release adds R-support to LEAN, allowing you to run R-code from your LEAN C# algorithms. This makes the R statistics libraries available for use in QuantConnect. Additionally, a community member contributed a plugin for Visual Studio, which uses the QuantConnect API to perform file editing tasks and deploy backtests. Additionally, this release extends Python support with many new libraries, charting, history request support, Quandl support, and many example algorithms. Quantity decimalization was implemented as the first step towards crypto-currency support. In addition, there were numerous bug fixes, notably for IB connection handling and Python support. Download this release from GitHub


  • Added support for R.Net and R-base from C#
  • Added Plug-in for Visual Studio Integration
  • Added charting support for Python
  • Added Arnaud Legoux Moving Average (ALMA) indicator
  • Added Python packages sklearn, keras, tensorflow, copulalib, theano, xgboost, TA-Lib and many more
  • Added Python basic template algorithms for options and futures
  • Added calculation of futures expiry dates
  • Added AlgorithmSettings and IAlgorithm.Settings property
  • Order quantity and position sizes are now decimals to support crypto-currency assets.
  • Added Python History Requests returning pandas.DataFrame
  • Added new LeanManagement interface
  • Added Quandl support for Python


  • Updated example algorithms written in Python
  • Improved ZipDataCacheProvider exception handling and logging
  • Restored default accountId for OandaDownloader
  • Updated OandaDownloader to save QuoteBars instead of TradeBars
  • Improved compression in futures and options data writers
  • Update Reader error log messages for QuoteBar and TradeBar
  • Added symbol to QuoteBar.Reader error logging
  • Added Resolution to QuoteBar.Reader error logging
  • Performance improvements to ZipDataCacheProvider
  • Updated and added new sample data files
  • Added rate limiting to 50 msg/second for Interactive Brokerssubscribe/unsubscribe
  • Added Easter holidays in market-hours-database
  • Updated Python framework to support Python datetime
  • Time-based removal of option contracts from universe in live mode
  • Updated OandaSymbolMapper to support delisted symbols
  • Updated Forex/CFD default fee model to ConstantFeeModel(0)
  • Added Holidays for CFDs in market-hours-database
  • Updated YahooDownloader to new Yahoo API
  • Updated example Python algorithms
  • Added DataNormalization mode validation for Options
  • Updated HistoryDataCacheProvider to use ZipDataCacheProvider within Engine
  • Updated all LEAN threads to be Background threads
  • Increased speed in option data conversion
  • Upgraded all projects to target .NET Framework 4.5.2
  • Upgraded all projects to use C# 6.0 compiler
  • Upgraded all third-party libraries
  • Updated ToDecimal extension method to allow negative numbers
  • Added OANDA-Agent HTTP Header to API requests

Bug Fixes

  • Removed redundant properties in HistoryRequest class
  • Added HasCustomData flag to SubscriptionManager (for Python)
  • Updated IB brokerage to restart when receiving reconnect (1102) message
  • Removed lock from AddData method
  • Added check for custom data existence after security removal
  • Fixed FSharp reference error
  • Fixed Warmup/History requests for canonical symbols
  • Added parameter validation in FutureMarginModel.GetInitialMarginRequirement
  • Fixed OANDA v20 history requests for more than 5000 bars
  • Fixed ParallelRunner error during application exit
  • Fixed zero-value open interest bug in IB brokerage
  • Fixed compiler build warnings
  • Fixed errors with Futures or Options existing holdings
  • Fixed existing brokerage holdings in Futures universe selection filters
  • Fixed bugs and performance issues in Python integration
  • Fixed bug in option filtering by range of strikes
  • Fixed counting bug in SubscriptionLimiter with Options/Futures
  • Fixed IB reset sequence in CheckIbGateway
  • Fixed SetBrokerageModel resetting leverage when called after AddSecurity
  • Added missing enumerator disposal when symbol removed from universe
  • Fixed price adjusting on split dates with hourly resolution
  • Fixed issues with IB reconnect and nightly reset logic
  • Fixed AddConsolidator to support all input data types available
  • Removed unnecessary subscriptions in FineFundamental universe selection
  • Fixed error handling for OANDA connection failure
  • Fixed file naming bug in daily or hourly resolution market data for futures
  • Fixed OANDA v20 GetOpenOrders with unsupported order types
  • Fixed formatting bug in StatisticsBuilder.GetSummary
  • Fixed bug in LiveTradingDataFeed.Run exception handler
  • Fixed OANDA API v1 error handling
  • Fixed error handling in FileSystemDataFeed
  • Fixed IB bug causing error "Already Connected"
  • Fixed concurrency issue in RuntimeStatistics
  • Fixed invalid order status when receiving IB errors for operations not allowed
  • Fixed DirectoryNotFoundException when using custom data with FileFormat.Collection
  • Fixed RenkoConsolidator not accepting Tick data


Thank you to the community contributors in this release: @AnshulYADAV007, @jameschch, @Jay-Jay-D, @LiXiang618, @mushketyk, @smartquant, @tomhunter-gh

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. Your trading algorithms can be seamlessly deployed from backtesting into production without changing or moving between brokerages. The LEAN user community reaches over 36,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.