Key Concepts

Getting Started

Introduction

The Research Environment is a Jupyter notebook-based environment where you can access our data through the QuantBook class instead of through the QCAlgorithm class in a backtest. The environment supports both Python and C#. If you use Python, you can import code from the code files in your project into the Research Environment to aid development.

Before you run backtests, we recommend testing your hypothesis in the Research Environment. It's easier to perform data analysis and produce plots in the Research Environment than in a backtest. In the Research Environment, you can use the QuantConnect API to import your backtest results for further analysis.

Before backtesting or live trading with machine learning models, you may find it beneficial to train them in the Research Environment, save them in the ObjectStore, and then load them from the ObjectStore into the backtesting and live trading environment

Example

The following snippet demonstrates how to use the Research Environment to plot the price and Bollinger Bands of the S&P 500 index ETF, SPY:

The following snippet demonstrates how to use the Research Environment to print the price of the S&P 500 index ETF, SPY:

// Load the required assembly files and data types
#load "../Initialize.csx"
#load "../QuantConnect.csx"
using QuantConnect;
using QuantConnect.Data;
using QuantConnect.Algorithm;
using QuantConnect.Research;

// Create a QuantBook
var qb = new QuantBook();

// Create a security subscription
var symbol = qb.AddEquity("SPY").Symbol;

// Request some historical data
var history = qb.History(symbol, 70, Resolution.Daily);

foreach (var tradeBar in history)
{
    Console.WriteLine($"{tradeBar.EndTime} :: {tradeBar.ToString()}");
}
# Create a QuantBook
qb = QuantBook()

# Create a security subscription
spy = qb.AddEquity("SPY")

# Request some historical data
history = qb.History(qb.Securities.Keys, 360, Resolution.Daily)

# Calculate the Bollinger Bands
bbdf = qb.Indicator(BollingerBands(30, 2), spy.Symbol, 360, Resolution.Daily)

# Plot the data
bbdf.drop('standarddeviation', 1).plot()

Open Notebooks

Each new project you create contains a notebook file by default. Follow these steps to open the notebook:

  1. Open the project.
  2. In the right navigation menu, click the Explorer icon.
  3. In the Explorer panel, expand the Workspace (Workspace) section.
  4. Click the Research.ipynbresearch.ipynb file.

Run Notebook Cells

Notebooks are a collection of cells where you can execute code snippets or write MarkDown.

The following describes some helpful keyboard shortcuts to speed up your research:

Keyboard ShortcutDescription
Shift+EnterRun the selected cell.
aInsert a cell above the selected cell.
bInsert a cell below the selected cell.
xCut the selected cell.
vPaste the copied or cut cell.
zUndo cell actions.

Stop Nodes

You need stop node permissions to stop research nodes in the cloud.

Follow these steps to stop a research node:

  1. Open the project.
  2. In the right navigation menu, click the Resources icon.
  3. Click the stop button next to the research node you want to stop.

Add Notebooks

Follow these steps to add notebook files to a project:

  1. Open the project.
  2. In the right navigation menu, click the Explorer icon.
  3. In the Explorer panel, expand the Workspace (Workspace) section.
  4. Click the New File icon.
  5. Enter fileName.ipynb.
  6. Press Enter.

Rename Notebooks

Follow these steps to rename a notebook in a project:

  1. Open the project.
  2. In the right navigation menu, click the Explorer icon.
  3. In the Explorer panel, right-click the notebook you want to rename and then click Rename.
  4. Enter the new name and then press Enter.

Delete Notebooks

Follow these steps to delete a notebook in a project:

  1. Open the project.
  2. In the right navigation menu, click the Explorer icon.
  3. In the Explorer panel, right-click the notebook you want to delete and then click Delete Permanently.
  4. Click Delete.

Learn Jupyter

The following table lists some helpful resources to learn Jupyter:

TypeNameProducer
Text Jupyter Tutorialtutorialspoint
Text Jupyter Notebook Tutorial: The Definitive GuideDataCamp

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: