QuantRocket is a Python-based platform for researching, backtesting, and running automated, quantitative trading strategies. It provides data collection tools, multiple data vendors, a research environment, multiple backtesters, and live and paper trading through Interactive Brokers (IB). It provides scheduling, notification, and maintenance tools to allow your strategies to run fully automated. It allows you to track and analyze your live performance on a strategy-by-strategy basis.
Absolutely! QuantRocket offers first-class support for running your trading strategies on international markets. The lack of support for international markets among most available trading platforms (which tend to be US-centric) was a major reason for QuantRocket's development.
QuantRocket was built from the ground up with global markets in mind and seamlessly handles the technical details associated with international trading, such as differing timezones, trading hours, currencies, tick sizes, etc. QuantRocket makes it easy to build a diversified portfolio of international trading strategies.
QuantRocket is well-suited for traders and data scientists who would describe themselves as "quants first, programmers second." QuantRocket focuses on providing turn-key infrastructure and data management tools so that you don't have to be a professional software developer to trade your strategies, allowing you to focus on your research and backtesting.
Experienced software developers will appreciate QuantRocket's modern, Docker-based stack, cloud integrations, clean APIs, flexibility, and developer-centric workflows.
We also offer premium support options if you prefer customized, hands-on help.
The "home base" for interacting with QuantRocket is a web-based Jupyter research environment in which you can view, create, and edit your research notebooks, algorithm files, and configuration files. You can use QuantRocket's Python API within your notebooks and algorithms, or you can open a terminal inside the Jupyter interface and use QuantRocket's command line interface.
The intro video provides a demonstration of the Jupyter environment.
QuantRocket installs on your hardware. This could be your local computer or a server in the cloud.
If you're interested in a hosted version of QuantRocket that includes server monitoring and maintenance, we offer a hosted infrastructure premium support option.
QuantRocket runs anywhere Docker runs: Windows, Linux, or Mac. For Windows users, Windows 10 Professional or higher is required.
Your computer should have at least 8 GB of memory to ensure a good user experience.
See the cloud installation tutorials.
For most use cases, an IB account is required. IB is the only supported broker and is also a primary data source. QuantRocket offers a top-notch experience for quantitative trading with IB because it is custom-built around IB's strengths and capabilities.
Some use cases do not require an IB account. If you wish to use non-IB data and do not intend to trade or connect to IB, no IB account is required.
QuantRocket connects to IB using IB Gateway, a slimmed-down version of Trader Workstation (TWS) which provides access to the IB API for collecting market data, placing orders, checking your account balance, etc.
IB Gateway is bundled with QuantRocket and doesn't need to be installed separately.
IB offers listings on over 60 global exchanges. With QuantRocket you can trade all of them.
The exchange selector on the account page (login required) shows the approximate number of listings for each exchange.
QuantRocket supports equities, futures, and currencies. Options support is limited but will be expanded in the future.
You can trade Bitcoin futures on CME or CBOE. IB does not offer spot cryptocurrency trading.
QuantRocket integrates historical price data from IB and fundamental data from the Reuters Worldwide Fundamentals dataset (available through IB).
QuantRocket also provides premium US fundamental and end-of-day price data from Sharadar.
For IB historical data, you must subscribe to the relevant market data through IB Account Management then use QuantRocket to collect the data from IB.
IB offers over 20 bar sizes ranging from 1 month to 1 second. The full list includes: 1 month, 1 week, 1 day, 8 hours, 4 hours, 3 hours, 2 hours, 1 hour, 30 mins, 20 mins, 15 mins, 10 mins, 5 mins, 3 mins, 2 mins, 1 min, 30 secs, 15 secs, 10 secs, 5 secs, and 1 secs.
For stocks and currencies, historical data depth varies by exchange and bar size. End of day prices go back as far as 1980 for some exchanges, while intraday prices down to 1-minute bars go back as far as 2004. The amount of data available from the IB API is the same as the amount of data available when viewing the corresponding chart in Trader Workstation.
Historical data availability for select exchanges is shown here.
For futures, historical data is available for contracts that expired no more than 2 years ago. IB removes historical futures data from its system 2 years after the contract expiration date.
For bar sizes of 30 seconds or smaller, historical data goes back 6 months only.
Initial data collection can take anywhere from a few minutes to several days or more, depending on the bar size, date range, and number of securities. The usage guide provides more detail on the practicalities of historical data collection.
Yes. IB is a treasure trove of global market data, but few IB customers tap its potential due to the complexity of the API and the long runtimes required to collect it due to IB's rate limits. QuantRocket can collect data in the background continuously for days, weeks, or months on end, surviving network interruptions, IB server blackouts, and other challenges and idiosyncrasies of the IB API. With sufficient hard drive space and a little patience, you can collect terabytes and terabytes of market data.
All IB historical data is split-adjusted.
Dividend-adjusted data is optional for daily bars. Dividend-adjusted data is unavailable for bar sizes smaller than 1 day.
Either! You can choose.
No. If a stock went bankrupt, was acquired, went private, etc. it won't be in IB's data.
QuantRocket doesn't delete delisted tickers, so over time you will build up a database that includes delisted tickers.
End-of-day data that includes active and delisted tickers for US stocks and is free of survivorship bias is available as a premium dataset from Sharadar.
QuantRocket can collect Reuters fundamental data from IB and store it in a database for analysis, backtesting, and trading. There are 2 types of fundamental data available.
Financial statements provide over 125 cash flow, balance sheet, and income metrics. Statements are time-indexed to the relevant fiscal period as well as the filing date for point-in-time backtesting.
Estimates and actuals provide analyst estimates and actuals for a variety of indicators. The actuals include the announcement date, for point-in-time backtesting.
To learn more, see the Reuters Worldwide Fundamentals data guide.
Sharadar US fundamentals, available as a premium dataset, offers over 20 years of history and includes active and delisted tickers.
Moonshot is a fast, Pandas-based backtester that supports daily or intraday data, multi-strategy backtests and parameter scans, and live trading. It is well-suited for running cross-sectional strategies or screens involving hundreds or even thousands of securities.
Moonshot works with equities, futures, and currencies. For futures, individual contracts or continuous contracts can be used.
Yes, with certain limits. Moonshot supports strategies that make trading decisions at most once per day, usually at a particular time of day. The time of day can be end of day or intraday. Daily or intraday data can be used to make trading decisions.
Moonshot does not support intraday strategies that trade in and out of a position numerous times in a trading session, scalping or market making strategies, or strategies that require continuous monitoring of a data feed.
Live trading with Moonshot can be thought of as running a backtest on up-to-date historical data and placing a batch of orders based on the latest signals generated by the backtest.
No. Moonshot uses the same historical database for live trading that it uses for backtesting. You "top off" or bring current your historical database with up-to-date pricing before running Moonshot to generate live orders.
For example, for an end of day strategy, you would schedule your historical database to be brought current each evening after the market closes and schedule Moonshot to run each morning before the market opens.
For an intraday strategy that uses 15-minute bars and enters the market at 10:00 AM based on 9:45 AM prices, you would schedule your historical database to be brought current at 9:45 AM and schedule Moonshot to run at 10:00 AM. Moonshot would generate orders based on the just-collected 9:45 AM prices. The 15-minute lag between collecting prices and placing orders would mirror the 15-minute bar size used in backtests. For smaller bar sizes, a smaller lag between data collection and order placement would be used.
A benefit of using the same data source for backtesting and live trading is that it eliminates a potential source of discrepancy between simulated and live results. In addition, the dead-simple design of live trading with Moonshot enhances reliability, a key consideration for any automated trading system.
Moonshot supports any number of securities and can utilize any of IB's bar sizes, from 1 month down to 1 minute. However, the combination of bar size and the number of securities in your trading universe determines the total data quantity, and there are practical limits on total data quantity. Smaller universes can support higher data frequencies (i.e. smaller bar sizes); larger universes require lower data frequencies (i.e. larger bar sizes).
In backtesting, the practical limit on total data quantity is imposed by the amount of time it takes to initially collect historical data from IB, as well as how much space the data consumes on disk and consequently how fast or slow it is to load into memory for research and backtesting. See the usage guide for more details on the practicalities of historical data collection.
In live trading, the practical limit on data quantity is imposed by the amount of time it takes to "top off" your historical database before live trading. Topping off a database with fewer securities is faster than topping off a database with many securities. Consequently small universes can be traded using higher data frequencies (smaller bar sizes) than large universes.
To give a few rough examples (these are conservative estimates, not hard limits), you should have no problem using 1-minute bars with a universe of 10 securities, 3-minute bars with a universe of 50 securities, and 15-minute bars with a universes of 1000 securities. 1-minute bars with a universe of 6,000 securities won't work because the data quantity will be prohibitive to collect, store, and work with.
Like Quantopian, QuantRocket is a platform for developing automated, quantitative trading strategies using Python. Like Quantopian, QuantRocket can be used for strategies that screen hundreds or thousands of securities. QuantRocket integrates several open source Python libraries developed by Quantopian, including Zipline, Alphalens, Pyfolio, and QGrid.
In contrast to Quantopian, QuantRocket supports live trading and international markets. Unlike Quantopian, QuantRocket does not run contests or license user-created algorithms for capital allocations. Rather, QuantRocket customers use the software to trade their own money.
QuantRocket supports backtesting with Zipline. We do not yet support live trading with Zipline but are working on it.
You can live trade your Quantopian algo by porting it to Moonshot. Many, but not all, Quantopian algos are good candidates for porting to Moonshot.
If you need help, we offer a paid service for porting your Quantopian algo to QuantRocket.
It depends. If your strategy trades once a day intraday, yes. If your strategy trades in and out throughout the day, no. See the Moonshot FAQ on what types of intraday strategies are supported.
You can use Reuters Worldwide Fundamentals in place of Morningstar. There is not a one-to-one correspondence between Morningstar indicators and Reuters indicators, so some adaptation may be required. Check out the Reuters fundamentals data guide page.
Yes, but for large universes of stocks your strategy will need to utilize a bar size larger than 1-minute (for example, 15 or 30 minutes). See the Moonshot FAQ on the relation between bar size, universe size, and total data quantity.