AlgoSeek
US Equities
Introduction
The US Equities dataset by AlgoSeek is survivorship bias-free daily coverage of every stock traded in the US Securities Information Processors (SIP) CTA/UTP feed since 1998. The dataset covers approximately 27,500 securities, starts in January 1998, and is delivered in any resolution from tick to daily. The Data is collected from the full SIP feed via our Equinix co-located servers, including all trades and quotes published to every exchange as well as FINRA. Over-the-Counter (OTC) trades are not included.
This dataset depends on the US Equity Security Master dataset because the US Equity Security Master dataset contains information on splits, dividends, and symbol changes.
For more information about the US Equities dataset, including CLI commands and pricing, see the dataset listing.
About the Provider
AlgoSeek is a leading historical intraday US market data provider offering the most comprehensive and detailed market data and analytics products in the financial industry covering Equities, Futures, Options, cash FOREX, and Cryptocurrencies. AlgoSeek data is built for quantitative trading and machine learning. For more information about AlgoSeek, visit algoseek.com.
Getting Started
AlgoSeek is the default US Equities dataset on QuantConnect. The following snippet demonstrates how to request data from the US Equities dataset:
from QuantConnect.DataSource import * self.symbol = self.AddEquity("AAPL", Resolution.Daily).Symbol
using QuantConnect.DataSource; _symbol = AddEquity("AAPL", Resolution.Daily).Symbol;
Supported Assets
To view the supported assets in the US Equities dataset, see the Data Explorer.
Requesting Data
To add US Equities data to your algorithm, call the AddEquity method. Save a reference to the Equity Symbol so you can access the data later in your algorithm.
class USEquityDataAlgorithm(QCAlgorithm): def Initialize(self) -> None: self.SetStartDate(2018, 1, 1) self.SetEndDate(2021, 6, 1) self.SetCash(100000) self.symbol = self.AddEquity("AAPL", Resolution.Minute).Symbol
namespace QuantConnect { public class USEquityDataAlgorithm : QCAlgorithm { private Symbol _symbol; public override void Initialize() { SetStartDate(2018, 1, 1); SetEndDate(2021, 6, 1); SetCash(100000); _symbol = AddEquity("AAPL", Resolution.Minute).Symbol; } } }
For more information about creating US Equity subscriptions, see Requesting Data or US Equity Universes.
Accessing Data
To get the current US Equities data, index the Bars, QuoteBars, or Ticks properties of the current Slice with the Equity Symbol. Slice objects deliver unique events to your algorithm as they happen, but the Slice may not contain data for your security at every time step. To avoid issues, check if the Slice contains the data you want before you index it.
def OnData(self, slice: Slice) -> None: if self.symbol in slice.Bars: trade_bar = slice.Bars[self.symbol] self.Log(f"{self.symbol} close at {slice.Time}: {trade_bar.Close}") if self.symbol in slice.QuoteBars: quote_bar = slice.QuoteBars[self.symbol] self.Log(f"{self.symbol} bid at {slice.Time}: {quote_bar.Bid.Close}") if self.symbol in slice.Ticks: ticks = slice.Ticks[self.symbol] for tick in ticks: self.Log(f"{self.symbol} price at {slice.Time}: {tick.Price}")
public override void OnData(Slice slice) { if (slice.Bars.ContainsKey(_symbol)) { var tradeBar = slice.Bars[_symbol]; Log($"{_symbol} price at {slice.Time}: {tradeBar.Close}"); } if (slice.QuoteBars.ContainsKey(_symbol)) { var quoteBar = slice.QuoteBars[_symbol]; Log($"{_symbol} bid at {slice.Time}: {quoteBar.Bid.Close}"); } if (slice.Ticks.ContainsKey(_symbol)) { var ticks = slice.Ticks[_symbol]; foreach (var tick in ticks) { Log($"{_symbol} price at {slice.Time}: {tick.Price}"); } } }
You can also iterate through all of the data objects in the current Slice.
def OnData(self, slice: Slice) -> None: for symbol, trade_bar in slice.Bars.items(): self.Log(f"{symbol} close at {slice.Time}: {trade_bar.Close}") for symbol, quote_bar in slice.QuoteBars.items(): self.Log(f"{symbol} bid at {slice.Time}: {quote_bar.Bid.Close}") for symbol, ticks in slice.Ticks.items(): for tick in ticks: self.Log(f"{symbol} price at {slice.Time}: {tick.Price}")
public override void OnData(Slice slice) { foreach (var kvp in slice.Bars) { var symbol = kvp.Key; var tradeBar = kvp.Value; Log($"{symbol} price at {slice.Time}: {tradeBar.Close}"); } foreach (var kvp in slice.QuoteBars) { var symbol = kvp.Key; var quoteBar = kvp.Value; Log($"{symbol} bid at {slice.Time}: {quoteBar.Bid.Close}"); } foreach (var kvp in slice.Ticks) { var symbol = kvp.Key; var ticks = kvp.Value; foreach (var tick in ticks) { Log($"{symbol} price at {slice.Time}: {tick.Price}"); } } }
For more information about accessing US Equities data, see Handling Data.
Historical Data
To get historical US Equity data, call the History method with the Equity Symbol. If there is no data in the period you request, the history result is empty.
# DataFrame history_df = self.History(self.symbol, 100, Resolution.Daily) # TradeBar objects history_trade_bars = self.History[TradeBar](self.symbol, 100, Resolution.Daily) # QuoteBar objects history_quote_bars = self.History[QuoteBar](self.symbol, 100, Resolution.Minute) # Tick objects history_ticks = self.History[Tick](self.symbol, timedelta(seconds=10), Resolution.Tick)
// TradeBar objects var historyTradeBars = History(_symbol, 100, Resolution.Daily); // QuoteBar objects var historyQuoteBars = History<QuoteBar>(_symbol, 100, Resolution.Minute); // Tick objects var historyTicks = History<Tick>(_symbol, TimeSpan.FromSeconds(10), Resolution.Tick);
For more information about historical data, see History Requests.
Universe Selection
To select a universe of US Equities, see Equity Universes.
Example Applications
The US Equities dataset enables you to accurately design Equity trading strategies. Examples include the following strategies:
- Momentum strategies using historical returns on the premise that the momentum will continue
- Value strategies using fundamental factors on the premise that the price of undervalued securities will rise
- Factor investing with periodic rebalancing