Terminal
↑↓ to select, press enter to go, use esc to exit
  • Pricing
  • Strategy Explorer Strategies Strategies
  • Research Research Research
  • Data
  • Documentation Docs Docs
  • Algorithm Lab Lab Lab
  • Sign In

Terminal

    Platform

  • Pricing
  • Strategy Explorer
  • Research
  • Datasets
  • Documentation
  • Algorithm Lab

    SIGN IN

  • Sign in
  • Don't have an account? Join QuantConnect Today

  • Sign up for Free

Welcome to
Algorithm Lab

We are dedicated to providing investors with a cutting-edge platform for rapidly creating quant investment strategies. Founded in 2012, we've empowered more than 250,000 quants and engineers to create and trade their ideas.

Terminal image Terminal image
Your Quantitative Foundation

Learning Center

Quickly and easily started with our API to build your strategy. The learning center lessons are interactive, step-by-step guides to make you productive as fast as possible.

BootCamp BootCamp
Explore Free and Paid Datasets

Vast Datasets

Focus your efforts on driving alpha, not parsing CSV files. Our cloud offers hundreds of terabytes of traditional and alternative data preformatted, cleaned, and instantly accessible by our API.

Datasets Datasets
Collaborate with Your Team

Organizations

Coordinate teamwork, control access permissions, and your shared cloud resources. Grow your trading organization safely and efficiently on top of our cloud architecture.

Organizations
Jumpstart Your Algorithm Development

Strategy Explorer

A selection of streaming live-trading strategies written by QuantConnect, and top highlights from the community available to follow and clone. Peer into detailed real-time positions to gain insight for your own trading.

Strategy Explorer Strategy Explorer


Loading Algorithm Lab v3.0...
  • my-projects my-projects
    my-projects my-projects
    Projects
  • my-projects my-projects
    my-projects my-projects
    Organization
  • my-projects my-projects
    my-projects my-projects
    Learning Center
  • my-projects my-projects
    my-projects my-projects
    Datasets
  • Strategy Explorer Strategy Explorer
    Strategy Explorer Strategy Explorer
    Strategies
  • my-projects my-projects
    my-projects my-projects
    Support
  •  
close lesson close lesson
search icon search icon
  • Learning Center Home Learning Center Home All Courses
  • My courses in progress My courses in progress In Progress
  • My courses Completed My courses Completed Completed
  • My Wish List My Wish List Wish List
  • My Wish List My Wish List Articles

What is Boot Camp?

Boot Camp is a great way to improve your skills and learn the QuantConnect API in easily digestible portions.

Learning Center

Your Quantitative Foundation

A collection of courses from independent educators to improve your quant skill base and create better strategies.

Available Courses

Solidify and expand your quant skill base with courses at QuantConnect

Boot Camp 101 / US Equities

Learn algorithmic trading with python for US Equities. Guided strategy development in easily digestible portions.

Author: QuantConnect

Free  |  101,008 People Enrolled

Boot Camp 102 / FOREX

Learn algorithmic trading with python for FX. Guided strategy development in easily digestible portions.

Author: QuantConnect

Free  |  21,528 People Enrolled

Boot Camp 103 / Futures

Learn algorithmic trading with python for Futures. Guided strategy development in easily digestible portions.

Author: QuantConnect

Free  |  8,244 People Enrolled

Algorithmic Trading A-Z | The Complete Course

In this algorithmic trading tutorial series you will learn everything you need to know to start writing your own trading bots using Python and the QuantConnect quantitative trading platform.

Author: Louis

Free  |  31,675 People Enrolled

Introduction to Data Analysis and Programming

Course 1/6: Learn the foundational tools for performing data analysis - the Research Environment, Python, Numpy, Pandas, and Matplotlib.

Author: QuantConnect

Free  |  46 People Enrolled

Statistics and Basic Data Analysis

Course 2/6: Learn how to analyze and interpret the statistical moments, then explore correlations, random variables, and the instability of estimates.

Author: QuantConnect

Free  |  7 People Enrolled

Regression Analysis

Course 3/6: Learn how to build regression models while respecting their underlying assumptions, how to quantify their fit, and how to avoid overfitting.

Author: QuantConnect

Free  |  6 People Enrolled

Statistical Inference

Course 4/6: Learn about hypothesis testing, confidence intervals, and correlations in the context of algorithmic trading.

Author: QuantConnect

Free  |  3 People Enrolled

Financial and Risk Analysis

Course 5/6: Learn to evaluate and mitigate risks involved with trading, including concentration risks, factor exposures, slippage, market impact, and more.

Author: QuantConnect

Free  |  6 People Enrolled

Advanced Data Analysis and Algorithmic Trading

Course 6/6: Learn advanced trading topics that are essential to success, including PCA, autocorrelation, long-short portfolio formation, pairs trading, and Futures.

Author: QuantConnect

Free  |  13 People Enrolled

Complete Algorithmic Trading Course

Master algorithmic trading with Python and AI. Backtest & live‑trade stocks, options, futures, forex and crypto

Author: Cheng Li

Paid  |  Enroll on Udemy

Python for Finance and Algorithmic Trading with QuantConnect

Learn to use Python, Pandas, Matplotlib, and the QuantConnect Lean Engine to perform financial analysis and trading.

Author: Jose Portilla, Pierian Training

Paid  |  Enroll on Udemy

Crypto Trading with QuantConnect (C#)

Learn to write programs that algorithmically trade cryptocurrencies using QuantConnect (C#).

Author: Eric Summers

Paid  |  Enroll on Udemy

List Your Course List Your Course

List Your Course

Choose a Template
Close Menu Close Menu

Basic

  • Use Default Template

Use Strategy Explorer Template

Profile Image

Quant Developer

FREE UPGRADE

Start

  • create new algorithm create new algorithm New Algorithm
  • open project open project Open Project
  • open project open project Explore Strategies

Resources

Notes icons

Organization Notes

start icon

Get Started with Algorithm Lab

Close Widget Close Widget
  • Signed Up
  • Create a Project Complete Task Complete Task
  • Backtest Your Project Complete Task Complete Task
  • Live Deploy Your Project Complete Task Complete Task
research icon

New Research

Filtering Trades With the Fear and Greed Index

Use the Fear & Greed Index as a trade filter, going long when fearful, to boost net profits....

Read

News & Releases

Close Widget Close Widget

The QuantConnect Team wishes you

MERRY CHRISTMAS
Close Widget Close Widget
HAPPY NEW YEAR!

From the QuantConnect Team

Close Widget Close Widget
Profile Image

You've been with us for 0 years!

HAPPY ANNIVERSARY!

Thanks for being our valuable member.

Close Widget Close Widget
Milestone flag

New Milestone

1000 BACKTESTS

You’ve run 1000 backtests, congrats champ!

Close Widget Close Widget
Milestone flag

New Milestone

10 PROJECTS

You created 10 projects on QuantConnect, happy coding!

Close Widget Close Widget
Milestone flag

New Milestone

FIRST LIVE TRADE

You’ve launched your first live trade, congratulations!

announce icon

New Announcement

Faster Orders in Live Trading

Read
league icon

Quant League

  • OPEN LEAGUE
  • PRO LEAGUE
Currently Leading View Competition

Lake Forest College

Sharpe: 4.33

Concordia University

Sharpe: 3.51

Chinese University of Hong Kong

Sharpe: 3.51
Currently Leading View Competition

Scalia - HTF Volatility and Liquidation Hunter

Sharpe: 4.7

LIVE ML Stack V1-4-2

Sharpe: 3.78

Scalia - Volatility Tiger

Sharpe: 3.75
roadmap icon

Upcoming Roadmap

  • UPVOTE

81 Walk Forward Optimization

View All
Online Members
+ Add Members
Quick Links
Research Community Quant League Documentation Learn

Begin Your QuantConnect Journey

Algorithm Lab is your playground for developing and refining trading algorithms with QuantConnect. Utilize advanced tools, historical data, and robust backtesting to enhance your trading strategies. Transform your ideas into actionable insights and optimize your trading approach with ease.

Sign Up for Free

Already have an account Log In.

Your Account

Summary

PROJECTS

BACKTESTS

LIVE VOLUME

PUBLIC ALGORITHMS

LIVE DEPLOYMENTS

LINES OF CODE

Account Settings

What is your preferred language?
What is your preferred color theme?
Subscriptions
Manage Email Subscriptions

Terminal Settings

Security

Change Password Deactivate 2FA Authentication

This account is protected by two-factor authentication.

Request Token Information Reset My Token
Active Sessions
Created Last Time Used Agent  

No entries found

Account Deactivation

Deactivating your account hides your profile and data from other members. We retain your data (except backtests older than 90 days) in case you reactivate later. To permanently delete your account, please contact us directly.

Learn more Contact us
Do you really want to cancel the subscription ?
Please, first downgrade to free all your organizations.
Ok
Do you really want to delete your account ?

To continue please enter your email:

Set up Google Authenticator

(No google account required)

First Install the Required Application

  1. 1. On your phone go to Google Play Store (Android) or Apple Store (iPhone)
  2. 2. Search for Google Authenticator
  3. 3. Download and install the application

Now open the Google Authenticator Application

  1. 4.- In the application, touch 'Begin Setup'
  2. 5.- Select 'Scan barcode'
  3. 6.- Using your phone camera scan this barcode

Final Verification

To verify that everything goes well please enter the 6 digit verification code generated by the authenticator application

Begin Your QuantConnect Journey

Algorithm Lab is your playground for developing and refining trading algorithms with QuantConnect. Utilize advanced tools, historical data, and robust backtesting to enhance your trading strategies. Transform your ideas into actionable insights and optimize your trading approach with ease.

Sign Up for Free

Already have an account Log In.

data Manager View
Requesting coding environment...

No Coding Session Available No Coding Session Available Retry


Please stop one of the following coding sessions, or upgrade your account.

NAME ORGANIZATION

Upgrade Coding Environment

QuantConnect Datasets

Datasets

  • all datasets all datasets All Datasets 0
  • list datasets list datasets List Dataset
  • list datasets list datasets Data Issues +99
  • status status Data Status
  • sales report sales report Sales Report
  • All
  • Geospatial Data
  • Commerce Data
  • Financial Market Data
  • Consumer Data
  • B2B Data
  • Transport and Logistics Data
  • Environmental Data
  • Credit Rating Data
  • Real Estate Data
  • Web Data
  • Legal Data
  • Healthcare Data
  • Entertainment Data
  • Energy Data
  • Industry Data
  • Political Data
  • News and Events

Datasets > Corporate Buybacks

Datasets

Explore free and paid datasets available on QuantConnect covering fundamentals, pricing, and alternative options.

select icon select icon
select icon select icon
select icon select icon
 
List Dataset

New

US Equity Security Master

Corporate action data source for splits, dividends, mergers, acquisitions, IPOs, and delistings.

  • 27,500 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

US Futures Security Master

Rolling reference data for popular CME Futures contracts.

  • 162 Future Contracts
  • May 2009
  • Free in Cloud
Learn More
New

US Equity Coarse Universe

Universe of all US Equities with closing price and volume for Coarse Universe Selection.

  • 30,000 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

US ETF Constituents

Equity constituent components and weightings for US ETF listings. This data is ideal for universe selection without selection bias.

  • 2,650 US ETF Listings
  • June 2009
  • Free in Cloud
Learn More
New

International Future Universe

FESX, HSI, and NKD Futures universe for fast future contract selection with prices, expiration dates and open interests

  • 4 contracts
  • July 1998
  • Free in Cloud
Learn More
New

US Future Option Universe

Future Options universe for fast option contract selection.

  • 16 Monthly Future Contracts
  • January 2012
  • Free in Cloud
Learn More
New

US Future Universe

Futures universe for fast future contract selection with prices, expiration dates and open interests

  • 162 Most Liquid Futures
  • May 2009
  • Free in Cloud
Learn More
New

US Equity Option Universe

Precalculated daily greeks for fast option-contract selection.

  • 4,000 Equity Options
  • January 2012
  • Free in Cloud
Learn More
New

US Index Option Universe

Precalculated Daily Greeks for Fast Option Selection

  • 7 Index Options
  • January 2012
  • Free in Cloud
Learn More
New

US Equities Short Availability

Available shares for open short positions in the US Equity market.

  • 10,500 US Equities
  • January 2018
  • Free in Cloud
Learn More
New

US Fundamental Data

Corporate Fundamental data for fine universe selection based on industry classification and underlying company performance indicators.

  • 8,000 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

US Equities

Market data for all US listed and delisted Equities, ETFs, ETNs, ADRs, and Warrants.

  • 27,500 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

US Equity Options

Trade and quote data for US Equity Options contracts.

  • 4,000 Equity Options
  • January 2012
  • Free in Cloud
Learn More
New

US Futures

Trade and quote data for the most liquid US Futures across the CME, CBOT, NYMEX, and COMEX markets.

  • 162 Most Liquid Futures
  • May 2009
  • Free in Cloud
Learn More
New

US Future Options

Future Options data for the most liquid US CME Future commodity contracts.

  • 16 Monthly Future Contracts
  • January 2012
  • Free in Cloud
Learn More
New

US Index Options

European Option contract data for 3 US Indices: SPX, VIX, and NDX.

  • 7 Index Options
  • January 2012
  • Free in Cloud
Learn More
New

International Futures

Trade and quote data for FESX, HSI, and NKD Future Contracts.

  • 4 Contracts
  • July 1998
  • Free in Cloud
Learn More
New

Benzinga News Feed

Financial articles and news publications condensed into a news feed with titles and article bodies for sentiment analysis

  • 1,250 Posts/Day, 8,000 Stocks
  • 1st January 2016
  • From $120/mo
Learn More
New

Tiingo News Feed

News releases from 120 different news providers for sentiment analysis.

  • 10,000 US Equities
  • January 2014
  • Free in Cloud
Learn More
New

Upcoming Earnings

Alert for upcoming earnings report of US Equities with report date, report time, and earnings estimation.

  • 27,500 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

Upcoming IPOs

Alert for upcoming IPO events of primary US Equities with IPO start/filing/amended date, IPO deal type. IPO prices, and number of shares.

  • US Equities
  • February 2013
  • Free in Cloud
Learn More
New

Upcoming Splits

Alert for upcoming split and reverse split events of primary US Equities common shares with split date, and split factor.

  • 27,500 US Equities
  • January 2010
  • Free in Cloud
Learn More
New

Economic Events

Alert for upcoming economic events globally, including the date and estimates of macroeconomic indicator annoucement, special dates, etc.

  • 115 Countries
  • January 2019
  • Free in Cloud
Learn More
New

US Congress Trading

Trading activity of Congresspeople for potential insider trading signals based on early access to regulation changes.

  • 1,800 US Equities
  • January 2016
  • From $5/User/mo
Learn More
New

WallStreetBets

Mentions of US Equities on the r/wallstreetbets subreddit.

  • 6,000 US Equities
  • August 2018
  • From $5/User/mo
Learn More
New

Corporate Buybacks

US Equity buyback announcements and transactions scraped from SEC reports and secondary sources.

  • 3,000 US Equities
  • May 2015
  • From $20/User/mo
Learn More
New

US Regulatory Alerts - Financial Sector

RegAlytics is the leading provider of daily regulatory updates. They source data from over 5,000 regulators.

  • 400,000 Alerts
  • January 2020
  • From $10/mo
Learn More
New

Brain Sentiment Indicator

Proprietary sentiment analysis algorithm for US Equities.

  • 4,500 US Equities
  • August 2016
  • From $10/mo
Learn More
New

Brain ML Stock Ranking

Proprietary machine learning ranking algorithm for US Equities.

  • 1,000 US Equities
  • January 2010
  • From $10/mo
Learn More
New

Brain Language Metrics on Company Filings

Proprietary NLP algorithm that monitors several language metrics on company reports.

  • 3,000 US Equities
  • January 2010
  • From $10/mo
Learn More
New

Estimize

Estimates of company financials including EPS, revenues, and macroeconomic indicators based on 100,000+ crowdsourced predictions.

  • 2,800 US Equities
  • January 2011
  • $75/mo
Learn More
New

True Beats

Predictions of EPS and Revenues for US Equities based on expert opinions, peer opinions, and historical performance.

  • Over 5,000 US Equities
  • January 2000
  • $75/mo
Learn More
New

Tactical

Likelihood score of short-term price movements driven by technical indicators.

  • Over 5,000 US Equities
  • January 2000
  • $75/mo
Learn More
New

Cross Asset Model

Scoring algorithm based on put-call spread of Equity Options, volatility skewness, and volume.

  • Over 3,000 US Equities
  • July 2005
  • $75/mo
Learn More
New

Composite Factor Bundle

Daily proprietary signals for quality, value, momentum, growth, and low volatility factors, which are used by the leading quant funds.

  • 8,000 US Equities
  • January 2003
  • From $39/mo
Learn More
New

CNBC Trading

CNBC Trading tracks the recommendations made by media personalities on CNBC.

  • 1,515 US Equities
  • December 2020
  • From $5/User/mo
Learn More
New

US Government Contracts

Use the USASpending.gov API to track government contracts granted to publicly traded companies.

  • 748 US Equities
  • October 2019
  • From $5/User/mo
Learn More
New

Corporate Lobbying

Lobbying activities of companies to political or legislative figures, including clients, issues concerned, and amount paid.

  • 1,418 US Equities
  • January 1999
  • From $5/User/mo
Learn More
New

Insider Trading

Insider Trading tracks trades made by the own company executives, implying if they were bullish or bearish on their own companies.

  • 4994 US Equities
  • 25 April 2014
  • From $5/User/mo
Learn More
New

US SEC Filings

Semi-parsed Quarterly Financial Reports (10-Q) and Annual Financial Report (8-K) filings of companies for US Equities.

  • 15,000 US Equities
  • January 1998
  • Free in Cloud
Learn More
New

US Federal Reserve (FRED)

Collection of thousands of economic datasets maintained by the US Government.

  • 560 Datasets
  • January 1999
  • Free
Learn More
New

Data Link

Nasdaq Data Link, previously known as Quandl, is a premier marketplace for financial, economic, and alternative data sets.

  • More than 20 million datasets
  • Various
  • Free in Cloud
Learn More
New

Bybit Crypto Price Data

Trade and quote data for the Bybit Crypto exchange, collected by CoinAPI.

  • 721 Currency Pairs
  • April 2022
  • Price Update II
Learn More
New

Bybit Crypto Future Price Data

Trade and quote data for the Bybit Crypto Future exchanges, collected by CoinAPI.

  • 433 Crypto Future Pairs
  • October 2019
  • Free in Cloud
Learn More
New

Bybit Crypto Future Margin Rate Data

Margin interest rate data for the Bybit Crypto Future exchanges, collected by QuantConnect.

  • 433 Crypto Future Pairs
  • August 2020
  • Price CTA
Learn More
New

Fear and Greed

A daily index between 0 and 100, representing the degree of fear or greed in the US Equity market.

  • 7 Indicators
  • July 2014
  • Free in Cloud
Learn More
New

FOREX Data

Quote data for Forex pairs.

  • 71 Currency Pairs
  • January 2007
  • Free in Cloud
Learn More
New

CFD Data

Quote data for Contracts for Difference (CFD).

  • 51 Contracts
  • May 2002
  • Free in Cloud
Learn More
New

Coinbase Crypto Price Data

Trade and quote data for the Coinbase Pro Crypto exchange, collected by CoinAPI.

  • 860 Currency Pairs
  • January 2015
  • Free in Cloud
Learn More
New

Bitfinex Crypto Price Data

Trade and quote data for the Bitfinex Crypto exchange, collected by CoinAPI.

  • 383 Currency Pairs
  • January 2013
  • Free in Cloud
Learn More
New

Binance Crypto Price Data

Trade and quote data for the Binance Crypto exchange, collected by CoinAPI.

  • 2,684 Currency Pairs
  • July 2017
  • Free in Cloud
Learn More
New

Kraken Crypto Price Data

Trade and quote data for the Kraken Crypto exchange, collected by CoinAPI.

  • 710 Currency Pairs
  • October 2013
  • Free in Cloud
Learn More
New

Binance US Crypto Price Data

Trade and quote data for the Binance US Crypto exchange, collected by CoinAPI.

  • 541 Cryptocurrency pairs
  • October 2019
  • Free in Cloud
Learn More
New

Binance Crypto Future Price Data

Trade and quote data for the Binance Crypto Future exchanges, collected by CoinAPI.

  • 421 Crypto Future Pairs
  • August 2020
  • Free in Cloud
Learn More
New

Binance Crypto Future Margin Rate Data

Margin interest rate data for the Binance Crypto Future exchanges, collected by QuantConnect.

  • 421 Crypto Future Pairs
  • August 2020
  • Free in Cloud
Learn More
New

US Interest Rate

Primary credit rate from the Federal Open Market Committee (FOMC)

  • 1 Country: US
  • January 2003
  • Price CTA
Learn More
New

Macroeconomics Indicators

39 Macroeconomic Indicators data for 249 countries/regions, including the date, value, and frequency.

  • 39 Indicators, 249 Countries/Regions
  • January 1998
  • Free in Cloud
Learn More
New

Upcoming Dividends

Alert for upcoming dividend events of primary US Equities common shares with dividend important dates, and dividend per share.

  • 27,500 US Equities
  • January 2015
  • Free in Cloud
Learn More
New

US Energy Information Administration (EIA)

Supply and demand information for US Crude Products.

  • 190 Datasets
  • January 1991
  • Free
Learn More
New

US Treasury Yield Curve

Yield curve rates for US Government bonds over all common maturity dates. The data is scraped from the US Treasury website.

  • US Daily Treasury Yield Rates
  • January 1990
  • Free
Learn More
New

VIX Central Contango

Contango rates over time for the VIX Contract. The data is provided by VIXCentral and cached by QuantConnect.

  • 1 Dataset
  • June 2010
  • Free
Learn More
New

VIX Daily Price

Daily export of OHLC daily price for VIX-related products. The data is supplied by the CBOE and cached by QuantConnect.

  • 18 Datasets
  • January 1990
  • Free
Learn More
New

Cash Indices

Price data for 125 US Cash indices and 2 international indices (HSI and SX5E). This data provides the underlying price for Index Options of NDX, SPX, RUT, and VIX.

  • 125 US indices and 3 International indices
  • January 1998
  • Free in Cloud
Learn More
New

Bitcoin Metadata

Bitcoin processing fundamental data such as hash rate, miner revenue, and number of transactions.

  • Bitcoin blockchain
  • Jan 2009
  • Free in Cloud
Learn More
New

Crypto Market Cap

Cryptocurrencies market cap data is provided by CoinGecko and cached by QuantConnect.

  • 620 cryptocurrencies
  • 28 April 2013
  • Free Research
Learn More
 
resources-icon
Datasets Browse Available Datasets

Datasets >

Dashboard

Data Sale Reports

  • 2025 - September
  • 2025 - August
  • 2025 - July
  • 2025 - June
  • 2025 - May
  • 2025 - April
  • 2025 - March
  • 2025 - February
  • 2025 - January
  • 2024 - December
  • 2024 - November
  • 2024 - October
  • 2024 - September
  • 2024 - August
  • 2024 - July
  • 2024 - June
  • 2024 - May
  • 2024 - April
  • 2024 - March
  • 2024 - February
  • 2024 - January
  • 2023 - December
  • 2023 - November
  • 2023 - October
  • 2023 - September

Datasets Manual Subscriptions

 

 



Data Issues

A transparent, community reporting system. Report suspected issues with our cloud data to be investigated by the QuantConnect Team.

search icon search icon
  • Issues
  • Issue
  • Report Issue

Issue List

Loading...

  • Page of 1

Data Explorer Issues are a way to report and track data problems. They give the QuantConnect community a way to discuss potential solutions and be notified when they are resolved. If you think you have found a data problem please check the existing open and closed issues first; often another user may have already reported your problem.

Issue Type

Does your issue match any of the already listed issues?

Thank you for your contribution! Our team is currently working on resolving these issues, please subscribe to them to receive updates.










Datasets >

Corporate Buybacks

dataset-logo
dataset-logo

Corporate Buybacks

Dataset by Smart Insider

  • About
  • Documentation
  • Research
  • Examples
  • Licenses
  • CLI
  • Pricing

Introduction

The Corporate Buybacks dataset by Smart Insider tracks US Equities share buyback programs. The data covers 3,000 US Equities, starts in May 2015, and is delivered on a second frequency. This dataset is created by analyzing daily buyback announcements and by using secondary data sources to ensure records are accurate and complete.

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.

About the Provider

Smart Insider was founded by Michael Tindale in 2016 with the goal of forming the most progressive insider data vendor in the field. Smart Insider provides access to buyback intention and transactions for quantitative researchers. In addition to their Corporate Buybacks dataset, Smart Insider provides data on stock trades made by US politicians and thousands of high net worth individuals around the globe.

Getting Started

The following snippet demonstrates how to request data from the Corporate Buybacks dataset:

Select Language:
self.aapl = self.add_equity("AAPL", Resolution.MINUTE).symbol
self.intention_symbol = self.add_data(SmartInsiderIntention, self.aapl).symbol
self.transaction_symbol = self.add_data(SmartInsiderTransaction, self.aapl).symbol

self.intention_universe = self.add_universe(SmartInsiderIntentionUniverse, self.intention_selection)
self.transaction_universe = self.add_universe(SmartInsiderTransactionUniverse, self.transaction_selection)
_symbol = AddEquity("AAPL", Resolution.Minute).Symbol;
_intentionSymbol = AddData<SmartInsiderIntention>(_symbol).Symbol;
_transactionSymbol = AddData<SmartInsiderTransaction>(_symbol).Symbol;

_intentionUniverse = AddUniverse<SmartInsiderIntentionUniverse>(IntentionSelection);
_transactionUniverse = AddUniverse<SmartInsiderTransactionUniverse>(TransactionSelection);

Data Summary

The following table describes the dataset properties:

Property Value
Start Date May 2015
Asset Coverage 3,000 US Equities
Data Density Sparse
Resolution Second
Timezone New York

Example Applications

The Corporate Buybacks dataset enables you to design strategies using information on company buyback programs. Examples include the following strategies:

  • Buying securities when the company announces an upcoming share buyback on the premise that the reduction in supply (shares outstanding) will drive up the remaining shares' price
  • Buying securities when the company executes an upcoming share buyback on the premise that the reduction in supply (shares outstanding) will drive up the remaining shares' price

For more example algorithms, see Examples.

Data Point Attributes

The Corporate Buybacks dataset provides SmartInsiderIntention, SmartInsiderIntentionUniverse, SmartInsiderTransaction, and SmartInsiderTransactionUniverse objects.

SmartInsiderIntention Attributes

SmartInsiderIntention objects have the following attributes:

SmartInsiderIntention
    Describes how the transaction was executed
  • execution: SmartInsiderExecution
  • Describes which entity intends to execute the transaction
  • execution_entity: SmartInsiderExecutionEntity
  • Describes what will be done with those shares following repurchase
  • execution_holding: SmartInsiderExecutionHolding
  • Number of shares to be or authorised to be traded
  • amount: Int64
  • Currency of the value of shares to be/Authorised to be traded (ISO Code)
  • value_currency: string
  • Value of shares to be authorised to be traded
  • amount_value: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • percentage: decimal
  • start of the period the intention/authorisation applies to
  • authorization_start_date: DateTime
  • End of the period the intention/authorisation applies to
  • authorization_end_date: DateTime
  • Currency of min/max prices (ISO Code)
  • price_currency: string
  • Minimum price shares will or may be purchased at
  • minimum_price: decimal
  • Maximum price shares will or may be purchased at
  • maximum_price: decimal
  • Free text which explains further details about the trade
  • note_text: string
  • Proprietary unique field. Not nullable
  • transaction_id: string
  • Description of what has or will take place in an execution
  • event_type: SmartInsiderEventType
  • The date when a transaction is updated after it has been reported. Not nullable
  • last_update: DateTime
  • Date that company identifiers were changed. Can be a name, Ticker Symbol or ISIN change
  • last_i_ds_update: DateTime
  • Industry classification number
  • isin: string
  • The market capitalization at the time of the transaction stated in US Dollars
  • usd_market_cap: decimal
  • Smart Insider proprietary identifier for the company
  • company_id: Int64
  • FTSE Russell Sector Classification
  • icb_industry: string
  • FTSE Russell Sector Classification
  • icb_super_sector: string
  • FTSE Russell Sector Classification
  • icb_sector: string
  • FTSE Russell Sector Classification
  • icb_sub_sector: string
  • Numeric code that is the most granular level in ICB classification
  • icb_code: Int64
  • Company name. PLC is always excluded
  • company_name: string
  • Announcement date of last results, this will be the end date of the last "Close Period"
  • previous_results_announcement_date: DateTime
  • Announcement date of next results, this will be the end date of the next "Close Period"
  • next_results_announcements_date: DateTime
  • Start date of next trading embargo ahead of scheduled results announcment
  • next_close_begin: DateTime
  • Date trading embargo (Close Period) is lifted as results are made public
  • last_close_ended: DateTime
  • Type of security. Does not contain nominal value
  • security_description: string
  • Country of local identifier, denoting where the trade took place
  • ticker_country: string
  • Local market identifier
  • ticker_symbol: string
  • Date Transaction was entered onto our system. Where a transaction is after the London market close (usually 4.30pm) this will be stated as the next day
  • announcement_date: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market, time stated is local market time
  • time_released: DateTime
  • Time the transaction was entered into Smart Insider systems and appeared on their website, time stated is local to London, UK
  • time_processed: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is GMT standard
  • time_released_utc: DateTime
  • Time the transaction was entered onto our systems and appeared on our website. Time stated is GMT standard
  • time_processed_utc: DateTime
  • Market in which the transaction was announced, this can reference more than one country
  • announced_in: string
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • The end time of this data. Some data covers spans (trade bars) and as such we want to know the entire time span covered
  • end_time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal
    Describes how the transaction was executed
  • Execution: SmartInsiderExecution
  • Describes which entity intends to execute the transaction
  • ExecutionEntity: SmartInsiderExecutionEntity
  • Describes what will be done with those shares following repurchase
  • ExecutionHolding: SmartInsiderExecutionHolding
  • Number of shares to be or authorised to be traded
  • Amount: Int64
  • Currency of the value of shares to be/Authorised to be traded (ISO Code)
  • ValueCurrency: string
  • Value of shares to be authorised to be traded
  • AmountValue: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • Percentage: decimal
  • start of the period the intention/authorisation applies to
  • AuthorizationStartDate: DateTime
  • End of the period the intention/authorisation applies to
  • AuthorizationEndDate: DateTime
  • Currency of min/max prices (ISO Code)
  • PriceCurrency: string
  • Minimum price shares will or may be purchased at
  • MinimumPrice: decimal
  • Maximum price shares will or may be purchased at
  • MaximumPrice: decimal
  • Free text which explains further details about the trade
  • NoteText: string
  • Proprietary unique field. Not nullable
  • TransactionID: string
  • Description of what has or will take place in an execution
  • EventType: SmartInsiderEventType
  • The date when a transaction is updated after it has been reported. Not nullable
  • LastUpdate: DateTime
  • Date that company identifiers were changed. Can be a name, Ticker Symbol or ISIN change
  • LastIDsUpdate: DateTime
  • Industry classification number
  • ISIN: string
  • The market capitalization at the time of the transaction stated in US Dollars
  • USDMarketCap: decimal
  • Smart Insider proprietary identifier for the company
  • CompanyID: Int64
  • FTSE Russell Sector Classification
  • ICBIndustry: string
  • FTSE Russell Sector Classification
  • ICBSuperSector: string
  • FTSE Russell Sector Classification
  • ICBSector: string
  • FTSE Russell Sector Classification
  • ICBSubSector: string
  • Numeric code that is the most granular level in ICB classification
  • ICBCode: Int64
  • Company name. PLC is always excluded
  • CompanyName: string
  • Announcement date of last results, this will be the end date of the last "Close Period"
  • PreviousResultsAnnouncementDate: DateTime
  • Announcement date of next results, this will be the end date of the next "Close Period"
  • NextResultsAnnouncementsDate: DateTime
  • Start date of next trading embargo ahead of scheduled results announcment
  • NextCloseBegin: DateTime
  • Date trading embargo (Close Period) is lifted as results are made public
  • LastCloseEnded: DateTime
  • Type of security. Does not contain nominal value
  • SecurityDescription: string
  • Country of local identifier, denoting where the trade took place
  • TickerCountry: string
  • Local market identifier
  • TickerSymbol: string
  • Date Transaction was entered onto our system. Where a transaction is after the London market close (usually 4.30pm) this will be stated as the next day
  • AnnouncementDate: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market, time stated is local market time
  • TimeReleased: DateTime
  • Time the transaction was entered into Smart Insider systems and appeared on their website, time stated is local to London, UK
  • TimeProcessed: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is GMT standard
  • TimeReleasedUtc: DateTime
  • Time the transaction was entered onto our systems and appeared on our website. Time stated is GMT standard
  • TimeProcessedUtc: DateTime
  • Market in which the transaction was announced, this can reference more than one country
  • AnnouncedIn: string
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • DataType: MarketDataType
  • True if this is a fill forward piece of data
  • IsFillForward: bool
  • Current time marker of this data packet.
  • Time: DateTime
  • The end time of this data. Some data covers spans (trade bars) and as such we want to know the entire time span covered
  • EndTime: DateTime
  • Symbol representation for underlying Security
  • Symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • Value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • Price: decimal

SmartInsiderIntentionUniverse Attributes

SmartInsiderIntentionUniverse objects have the following attributes:

SmartInsiderIntentionUniverse
    Number of shares to be or authorised to be traded
  • amount: Int64
  • Value of shares to be authorised to be traded
  • amount_value: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • percentage: decimal
  • Minimum price shares will or may be purchased at
  • minimum_price: decimal
  • Maximum price shares will or may be purchased at
  • maximum_price: decimal
  • Market Capitalization in USD
  • usd_market_cap: decimal
  • Time the data became available
  • end_time: DateTime
  • The associated underlying price data if any
  • underlying: BaseData
  • Gets or sets the contracts selected by the universe
  • filtered_contracts: HashSet<Symbol>
  • Gets the data list
  • data: List<BaseData>
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal
    Number of shares to be or authorised to be traded
  • Amount: Int64
  • Value of shares to be authorised to be traded
  • AmountValue: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • Percentage: decimal
  • Minimum price shares will or may be purchased at
  • MinimumPrice: decimal
  • Maximum price shares will or may be purchased at
  • MaximumPrice: decimal
  • Market Capitalization in USD
  • USDMarketCap: decimal
  • Time the data became available
  • EndTime: DateTime
  • The associated underlying price data if any
  • Underlying: BaseData
  • Gets or sets the contracts selected by the universe
  • FilteredContracts: HashSet<Symbol>
  • Gets the data list
  • Data: List<BaseData>
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • DataType: MarketDataType
  • True if this is a fill forward piece of data
  • IsFillForward: bool
  • Current time marker of this data packet.
  • Time: DateTime
  • Symbol representation for underlying Security
  • Symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • Value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • Price: decimal

SmartInsiderTransaction Attributes

SmartInsiderTransaction objects have the following attributes:

SmartInsiderTransaction
    Date traded through the market
  • buyback_date: DateTime
  • Describes how transaction was executed
  • execution: SmartInsiderExecution
  • Describes which entity carried out the transaction
  • execution_entity: SmartInsiderExecutionEntity
  • Describes what will be done with those shares following repurchase
  • execution_holding: SmartInsiderExecutionHolding
  • Currency of transation (ISO Code)
  • currency: string
  • Denominated in Currency of Transaction
  • execution_price: decimal
  • Number of shares traded
  • amount: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • gbp_value: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • eur_value: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • usd_value: decimal
  • Free text which expains futher details about the trade
  • note_text: string
  • Percentage of value of the trade as part of the issuers total Market Cap
  • buyback_percentage: decimal
  • Percentage of the volume traded on the day of the buyback.
  • volume_percentage: decimal
  • Rate used to calculate 'Value (GBP)' from 'Price' multiplied by 'Amount'. Will be 1 where Currency is also 'GBP'
  • conversion_rate: decimal
  • Multiplier which can be applied to 'Amount' field to account for subsequent corporate action
  • amount_adjusted_factor: decimal
  • Multiplier which can be applied to 'Price' and 'LastClose' fields to account for subsequent corporate actions
  • price_adjusted_factor: decimal
  • Post trade holding of the Treasury or Trust in the security traded
  • treasury_holding: Int64
  • Proprietary unique field. Not nullable
  • transaction_id: string
  • Description of what has or will take place in an execution
  • event_type: SmartInsiderEventType
  • The date when a transaction is updated after it has been reported. Not nullable
  • last_update: DateTime
  • Date that company identifiers were changed. Can be a name, Ticker Symbol or ISIN change
  • last_i_ds_update: DateTime
  • Industry classification number
  • isin: string
  • The market capitalization at the time of the transaction stated in US Dollars
  • usd_market_cap: decimal
  • Smart Insider proprietary identifier for the company
  • company_id: Int64
  • FTSE Russell Sector Classification
  • icb_industry: string
  • FTSE Russell Sector Classification
  • icb_super_sector: string
  • FTSE Russell Sector Classification
  • icb_sector: string
  • FTSE Russell Sector Classification
  • icb_sub_sector: string
  • Numeric code that is the most granular level in ICB classification
  • icb_code: Int64
  • Company name. PLC is always excluded
  • company_name: string
  • Announcement date of last results, this will be the end date of the last "Close Period"
  • previous_results_announcement_date: DateTime
  • Announcement date of next results, this will be the end date of the next "Close Period"
  • next_results_announcements_date: DateTime
  • Start date of next trading embargo ahead of scheduled results announcment
  • next_close_begin: DateTime
  • Date trading embargo (Close Period) is lifted as results are made public
  • last_close_ended: DateTime
  • Type of security. Does not contain nominal value
  • security_description: string
  • Country of local identifier, denoting where the trade took place
  • ticker_country: string
  • Local market identifier
  • ticker_symbol: string
  • Date Transaction was entered onto our system. Where a transaction is after the London market close (usually 4.30pm) this will be stated as the next day
  • announcement_date: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market, time stated is local market time
  • time_released: DateTime
  • Time the transaction was entered into Smart Insider systems and appeared on their website, time stated is local to London, UK
  • time_processed: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is GMT standard
  • time_released_utc: DateTime
  • Time the transaction was entered onto our systems and appeared on our website. Time stated is GMT standard
  • time_processed_utc: DateTime
  • Market in which the transaction was announced, this can reference more than one country
  • announced_in: string
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • The end time of this data. Some data covers spans (trade bars) and as such we want to know the entire time span covered
  • end_time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

SmartInsiderTransactionUniverse Attributes

SmartInsiderTransactionUniverse objects have the following attributes:

SmartInsiderTransactionUniverse
    Number of shares traded
  • amount: decimal
  • Minimum Value of Denominated in Currency of Transaction
  • minimum_execution_price: decimal
  • Maximum Value of Denominated in Currency of Transaction
  • maximum_execution_price: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • usd_value: decimal
  • Percentage of value of the trade as part of the issuers total Market Cap
  • buyback_percentage: decimal
  • Percentage of the volume traded on the day of the buyback.
  • volume_percentage: decimal
  • Market Capitalization in USD
  • usd_market_cap: decimal
  • Time the data became available
  • end_time: DateTime
  • The associated underlying price data if any
  • underlying: BaseData
  • Gets or sets the contracts selected by the universe
  • filtered_contracts: HashSet<Symbol>
  • Gets the data list
  • data: List<BaseData>
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

 


Requesting Data

To add Corporate Buybacks data to your algorithm, call the AddDataadd_data method. Save a reference to the dataset Symbol so you can access the data later in your algorithm.

Select Language:
class CorporateBuybacksDataAlgorithm(QCAlgorithm):

    def initialize(self) -> None:
        self.set_start_date(2016, 1, 1)
        self.set_end_date(2021, 1, 1)
        self.set_cash(100000)
 
        self.aapl = self.add_equity("AAPL", Resolution.MINUTE).symbol
        self.intention_symbol = self.add_data(SmartInsiderIntention, self.aapl).symbol
        self.transaction_symbol = self.add_data(SmartInsiderTransaction, self.aapl).symbol
public class CorporateBuybacksDataAlgorithm : QCAlgorithm
{
    private Symbol _symbol, _intentionSymbol, _transactionSymbol;
    
    public override void Initialize()
    {
        SetStartDate(2016, 1, 1);
        SetEndDate(2021, 1, 1);
        SetCash(100000);

        _symbol = AddEquity("AAPL", Resolution.Minute).Symbol;
        _intentionSymbol = AddData<SmartInsiderIntention>(_symbol).Symbol;
        _transactionSymbol = AddData<SmartInsiderTransaction>(_symbol).Symbol;
    }
}

Accessing Data

To get the current Corporate Buybacks data, index the current Slice with the dataset Symbol. Slice objects deliver unique events to your algorithm as they happen, but the Slice may not contain data for your dataset at every time step. To avoid issues, check if the Slice contains the data you want before you index it.

Select Language:
def on_data(self, slice: Slice) -> None:
    if slice.contains_key(self.intention_symbol):
        data_point = slice[self.intention_symbol]
        self.log(f"{self.intention_symbol} intention amount at {slice.time}: {data_point.amount}")

    if slice.contains_key(self.transaction_symbol):
        data_point = slice[self.transaction_symbol]
        self.log(f"{self.transaction_symbol} transaction amount at {slice.time}: {data_point.amount}")
public override void OnData(Slice slice)
{
    if (slice.ContainsKey(_intentionSymbol))
    {
        var dataPoint = slice[_intentionSymbol];
        Log($"{_intentionSymbol} intention amount at {slice.Time}: {dataPoint.Amount}");
    }

    if (slice.ContainsKey(_transactionSymbol))
    {
        var dataPoint = slice[_transactionSymbol];
        Log($"{_transactionSymbol} transaction amount at {slice.Time}: {dataPoint.Amount}");
    }
}

To iterate through all of the dataset objects in the current Slice, call the Getget method.

Select Language:
def on_data(self, slice: Slice) -> None:
    for dataset_symbol, data_point in slice.get(SmartInsiderIntention).items():
        self.log(f"{dataset_symbol} intention amount at {slice.time}: {data_point.amount}")

    for dataset_symbol, data_point in slice.get(SmartInsiderTransaction).items():
        self.log(f"{dataset_symbol} transaction amount at {slice.time}: {data_point.amount}")
public override void OnData(Slice slice)
{
    foreach (var kvp in slice.Get<SmartInsiderIntention>())
    {
        var datasetSymbol = kvp.Key;
        var dataPoint = kvp.Value;
        Log($"{datasetSymbol} intention amount at {slice.Time}: {dataPoint.Amount}");
    }

    foreach (var kvp in slice.Get<SmartInsiderTransaction>())
    {
        var datasetSymbol = kvp.Key;
        var dataPoint = kvp.Value;
        Log($"{datasetSymbol} transaction amount at {slice.Time}: {dataPoint.Amount}");
    }
}

Historical Data

To get historical Corporate Buybacks data, call the Historyhistory method with the dataset Symbol. If there is no data in the period you request, the history result is empty.

Select Language:
# DataFrames
intention_history_df = self.history(self.intention_symbol, 100, Resolution.DAILY)
transaction_history_df = self.history(self.transaction_symbol, 100, Resolution.DAILY)
history_df = self.history([self.intention_symbol, self.transaction_symbol], 100, Resolution.DAILY)

# Dataset objects
intention_history_bars = self.history[SmartInsiderIntention](self.intention_symbol, 100, Resolution.DAILY)
transaction_history_bars = self.history[SmartInsiderTransaction](self.transaction_symbol, 100, Resolution.DAILY)
// Dataset objects
var intentionHistory = History<SmartInsiderIntention>(_intentionSymbol, 100, Resolution.Daily);
var transactionHistory = History<SmartInsiderTransaction>(_transactionSymbol, 100, Resolution.Daily);

// Slice objects
var history = History(new[] {_intentionSymbol, _transactionSymbol}, 100, Resolution.Daily);

For more information about historical data, see History Requests.

Universe Selection

To select a dynamic universe of US Equities based on Corporate Buybacks data, call the AddUniverseadd_universe method with the SmartInsiderIntentionUniverse class or the SmartInsiderTransactionUniverse and a selection function.

Select Language:

def initialize(self) -> None:
    self.intention_universe = self.add_universe(SmartInsiderIntentionUniverse, self.intention_selection)
    self.transaction_universe = self.add_universe(SmartInsiderTransactionUniverse, self.transaction_selection)

def intention_selection(self, alt_coarse: List[SmartInsiderIntentionUniverse]) -> List[Symbol]:
    return [d.symbol for d in alt_coarse \
                if d.percentage > 0.005 \
                and d.usd_market_cap > 100000000]

def transaction_selection(self, alt_coarse: List[SmartInsiderTransactionUniverse]) -> List[Symbol]:
    return [d.symbol for d in alt_coarse \
                if d.buyback_percentage > 0.005 \
                and d.usd_market_cap > 100000000]
private Universe _intentionUniverse;
private Universe _transactionUniverse;
public override void Initialize()
{
    _intentionUniverse = AddUniverse<SmartInsiderIntentionUniverse>(altCoarse =>
    {
        return from d in altCoarse.OfType<SmartInsiderIntentionUniverse>() 
            where d.Percentage > 0.005m && d.USDMarketCap > 100000000m
            select d.Symbol;
    });
    _transactionUniverse = AddUniverse<SmartInsiderTransactionUniverse>(altCoarse =>
    {
        return from d in altCoarse.OfType<SmartInsiderTransactionUniverse>() 
            where d.BuybackPercentage > 0.005m && d.USDMarketCap > 100000000m
            select d.Symbol;
    });
}

For more information about dynamic universes, see Universes.

Universe History

You can get historical universe data in an algorithm and in the Research Environment.

Historical Universe Data in Algorithms

To get historical universe data in an algorithm, call the Historyhistory method with the Universe object and the lookback period. If there is no data in the period you request, the history result is empty.

Select Language:
var intentionUniverseHistory = History(_intentionUniverse, 30, Resolution.Daily);
foreach (var intentions in intentionUniverseHistory)
{
    foreach (SmartInsiderIntentionUniverse intention in intentions)
    {
        Log($"{intention.Symbol.Value} amount at {intention.EndTime}: {intention.AmountValue}");
    }
}

var transactionUniverseHistory = History(_transactionUniverse, 30, Resolution.Daily);
foreach (var transactions in transactionHistory)
{
    foreach (SmartInsiderTransactionUniverse transaction in transactions)
    {
        Log($"{transaction.Symbol.Value} amount at {transaction.EndTime}: {transaction.Amount}");
    }
}
# DataFrame example where the columns are the SmartInsiderIntentionUniverse attributes: 
intention_history_df = self.history(self._universe, 30, Resolution.DAILY, flatten=True)

# Series example where the values are lists of SmartInsiderIntentionUniverse objects: 
intention_universe_history = self.history(self.intention_universe, 30, Resolution.DAILY)
for (_, time), intentions in intention_universe_history.items():
    for intention in intentions:
        self.log(f"{intention.symbol.value} amount value at {intention.end_time}: {intention.amount_value}")

# DataFrame example where the columns are the SmartInsiderTransactionUniverse attributes: 
transaction_history_df = self.history(self._universe, 30, Resolution.DAILY, flatten=True)

# Series example where the values are lists of SmartInsiderTransactionUniverse objects: 
transaction_universe_history = self.history(self.transaction_universe, 30, Resolution.DAILY)
for (_, time), transactions in transaction_universe_history.items():
    for transaction in transactions:
        self.log(f"{transaction.symbol.value} amount at {intention.end_time}: {intention.amount}")

Historical Universe Data in Research

To get historical universe data in research, call the UniverseHistoryuniverse_history method with the Universe object, a start date, and an end date. This method returns the filtered universe. If there is no data in the period you request, the history result is empty.

Select Language:
var intentionUniverseHistory = qb.UniverseHistory(intentionUniverse, qb.Time.AddDays(-30), qb.Time);
foreach (var intentions in intentionUniverseHistory)
{
    foreach (SmartInsiderIntentionUniverse intention in intentions)
    {
        Console.WriteLine($"{intention.Symbol.Value} amount at {intention.EndTime}: {intention.AmountValue}");
    }
}

var transactionUniverseHistory = qb.UniverseHistory(transactionUniverse, qb.Time.AddDays(-30), qb.Time);
foreach (var transactions in transactionHistory)
{
    foreach (SmartInsiderTransactionUniverse transaction in transactions)
    {
        Console.WriteLine($"{transaction.Symbol.Value} amount at {transaction.EndTime}: {transaction.Amount}");
    }
}
# DataFrame example where the columns are the SmartInsiderIntentionUniverse attributes: 
intention_history_df = qb.universe_history(universe, qb.time-timedelta(30), qb.time, flatten=True)

# Series example where the values are lists of SmartInsiderIntentionUniverse objects: 
intention_universe_history = qb.universe_history(intention_universe, qb.time-timedelta(30), qb.time)
for (_, time), intentions in intention_universe_history.items():
    for intention in intentions:
        print(f"{intention.symbol.value} amount value at {intention.end_time}: {intention.amount_value}")

# DataFrame example where the columns are the SmartInsiderTransactionUniverse attributes: 
transaction_history_df = qb.universe_history(universe, qb.time-timedelta(30), qb.time, flatten=True)

# Series example where the values are lists of SmartInsiderTransactionUniverse objects: 
transaction_universe_history = qb.universe_history(transaction_universe, qb.time-timedelta(30), qb.time)
for (_, time), transactions in transaction_universe_history.items():
    for transaction in transactions:
        print(f"{transaction.symbol.value} amount at {transaction.end_time}: {transaction.amount}")

You can call the Historyhistory method in Research.

Remove Subscriptions

To remove a subscription, call the RemoveSecurityremove_security method.

Select Language:
self.remove_security(self.intention_symbol)
self.remove_security(self.transaction_symbol)
RemoveSecurity(_intentionSymbol);
RemoveSecurity(_transactionSymbol);

If you subscribe to Corporate Buybacks data for assets in a dynamic universe, remove the dataset subscription when the asset leaves your universe. To view a common design pattern, see Track Security Changes.

Data Point Attributes

The Corporate Buybacks dataset provides SmartInsiderIntention, SmartInsiderIntentionUniverse, SmartInsiderTransaction, and SmartInsiderTransactionUniverse objects.

SmartInsiderIntention Attributes

SmartInsiderIntention objects have the following attributes:

SmartInsiderIntention
    Describes how the transaction was executed
  • execution: SmartInsiderExecution
  • Describes which entity intends to execute the transaction
  • execution_entity: SmartInsiderExecutionEntity
  • Describes what will be done with those shares following repurchase
  • execution_holding: SmartInsiderExecutionHolding
  • Number of shares to be or authorised to be traded
  • amount: Int64
  • Currency of the value of shares to be/Authorised to be traded (ISO Code)
  • value_currency: string
  • Value of shares to be authorised to be traded
  • amount_value: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • percentage: decimal
  • start of the period the intention/authorisation applies to
  • authorization_start_date: DateTime
  • End of the period the intention/authorisation applies to
  • authorization_end_date: DateTime
  • Currency of min/max prices (ISO Code)
  • price_currency: string
  • Minimum price shares will or may be purchased at
  • minimum_price: decimal
  • Maximum price shares will or may be purchased at
  • maximum_price: decimal
  • Free text which explains further details about the trade
  • note_text: string
  • Proprietary unique field. Not nullable
  • transaction_id: string
  • Description of what has or will take place in an execution
  • event_type: SmartInsiderEventType
  • The date when a transaction is updated after it has been reported. Not nullable
  • last_update: DateTime
  • Date that company identifiers were changed. Can be a name, Ticker Symbol or ISIN change
  • last_i_ds_update: DateTime
  • Industry classification number
  • isin: string
  • The market capitalization at the time of the transaction stated in US Dollars
  • usd_market_cap: decimal
  • Smart Insider proprietary identifier for the company
  • company_id: Int64
  • FTSE Russell Sector Classification
  • icb_industry: string
  • FTSE Russell Sector Classification
  • icb_super_sector: string
  • FTSE Russell Sector Classification
  • icb_sector: string
  • FTSE Russell Sector Classification
  • icb_sub_sector: string
  • Numeric code that is the most granular level in ICB classification
  • icb_code: Int64
  • Company name. PLC is always excluded
  • company_name: string
  • Announcement date of last results, this will be the end date of the last "Close Period"
  • previous_results_announcement_date: DateTime
  • Announcement date of next results, this will be the end date of the next "Close Period"
  • next_results_announcements_date: DateTime
  • Start date of next trading embargo ahead of scheduled results announcment
  • next_close_begin: DateTime
  • Date trading embargo (Close Period) is lifted as results are made public
  • last_close_ended: DateTime
  • Type of security. Does not contain nominal value
  • security_description: string
  • Country of local identifier, denoting where the trade took place
  • ticker_country: string
  • Local market identifier
  • ticker_symbol: string
  • Date Transaction was entered onto our system. Where a transaction is after the London market close (usually 4.30pm) this will be stated as the next day
  • announcement_date: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market, time stated is local market time
  • time_released: DateTime
  • Time the transaction was entered into Smart Insider systems and appeared on their website, time stated is local to London, UK
  • time_processed: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is GMT standard
  • time_released_utc: DateTime
  • Time the transaction was entered onto our systems and appeared on our website. Time stated is GMT standard
  • time_processed_utc: DateTime
  • Market in which the transaction was announced, this can reference more than one country
  • announced_in: string
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • The end time of this data. Some data covers spans (trade bars) and as such we want to know the entire time span covered
  • end_time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

SmartInsiderIntentionUniverse Attributes

SmartInsiderIntentionUniverse objects have the following attributes:

SmartInsiderIntentionUniverse
    Number of shares to be or authorised to be traded
  • amount: Int64
  • Value of shares to be authorised to be traded
  • amount_value: Int64
  • Percentage of oustanding shares to be authorised to be traded
  • percentage: decimal
  • Minimum price shares will or may be purchased at
  • minimum_price: decimal
  • Maximum price shares will or may be purchased at
  • maximum_price: decimal
  • Market Capitalization in USD
  • usd_market_cap: decimal
  • Time the data became available
  • end_time: DateTime
  • The associated underlying price data if any
  • underlying: BaseData
  • Gets or sets the contracts selected by the universe
  • filtered_contracts: HashSet<Symbol>
  • Gets the data list
  • data: List<BaseData>
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

SmartInsiderTransaction Attributes

SmartInsiderTransaction objects have the following attributes:

SmartInsiderTransaction
    Date traded through the market
  • buyback_date: DateTime
  • Describes how transaction was executed
  • execution: SmartInsiderExecution
  • Describes which entity carried out the transaction
  • execution_entity: SmartInsiderExecutionEntity
  • Describes what will be done with those shares following repurchase
  • execution_holding: SmartInsiderExecutionHolding
  • Currency of transation (ISO Code)
  • currency: string
  • Denominated in Currency of Transaction
  • execution_price: decimal
  • Number of shares traded
  • amount: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • gbp_value: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • eur_value: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • usd_value: decimal
  • Free text which expains futher details about the trade
  • note_text: string
  • Percentage of value of the trade as part of the issuers total Market Cap
  • buyback_percentage: decimal
  • Percentage of the volume traded on the day of the buyback.
  • volume_percentage: decimal
  • Rate used to calculate 'Value (GBP)' from 'Price' multiplied by 'Amount'. Will be 1 where Currency is also 'GBP'
  • conversion_rate: decimal
  • Multiplier which can be applied to 'Amount' field to account for subsequent corporate action
  • amount_adjusted_factor: decimal
  • Multiplier which can be applied to 'Price' and 'LastClose' fields to account for subsequent corporate actions
  • price_adjusted_factor: decimal
  • Post trade holding of the Treasury or Trust in the security traded
  • treasury_holding: Int64
  • Proprietary unique field. Not nullable
  • transaction_id: string
  • Description of what has or will take place in an execution
  • event_type: SmartInsiderEventType
  • The date when a transaction is updated after it has been reported. Not nullable
  • last_update: DateTime
  • Date that company identifiers were changed. Can be a name, Ticker Symbol or ISIN change
  • last_i_ds_update: DateTime
  • Industry classification number
  • isin: string
  • The market capitalization at the time of the transaction stated in US Dollars
  • usd_market_cap: decimal
  • Smart Insider proprietary identifier for the company
  • company_id: Int64
  • FTSE Russell Sector Classification
  • icb_industry: string
  • FTSE Russell Sector Classification
  • icb_super_sector: string
  • FTSE Russell Sector Classification
  • icb_sector: string
  • FTSE Russell Sector Classification
  • icb_sub_sector: string
  • Numeric code that is the most granular level in ICB classification
  • icb_code: Int64
  • Company name. PLC is always excluded
  • company_name: string
  • Announcement date of last results, this will be the end date of the last "Close Period"
  • previous_results_announcement_date: DateTime
  • Announcement date of next results, this will be the end date of the next "Close Period"
  • next_results_announcements_date: DateTime
  • Start date of next trading embargo ahead of scheduled results announcment
  • next_close_begin: DateTime
  • Date trading embargo (Close Period) is lifted as results are made public
  • last_close_ended: DateTime
  • Type of security. Does not contain nominal value
  • security_description: string
  • Country of local identifier, denoting where the trade took place
  • ticker_country: string
  • Local market identifier
  • ticker_symbol: string
  • Date Transaction was entered onto our system. Where a transaction is after the London market close (usually 4.30pm) this will be stated as the next day
  • announcement_date: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market, time stated is local market time
  • time_released: DateTime
  • Time the transaction was entered into Smart Insider systems and appeared on their website, time stated is local to London, UK
  • time_processed: DateTime
  • Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is GMT standard
  • time_released_utc: DateTime
  • Time the transaction was entered onto our systems and appeared on our website. Time stated is GMT standard
  • time_processed_utc: DateTime
  • Market in which the transaction was announced, this can reference more than one country
  • announced_in: string
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • The end time of this data. Some data covers spans (trade bars) and as such we want to know the entire time span covered
  • end_time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

SmartInsiderTransactionUniverse Attributes

SmartInsiderTransactionUniverse objects have the following attributes:

SmartInsiderTransactionUniverse
    Number of shares traded
  • amount: decimal
  • Minimum Value of Denominated in Currency of Transaction
  • minimum_execution_price: decimal
  • Maximum Value of Denominated in Currency of Transaction
  • maximum_execution_price: decimal
  • Currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
  • usd_value: decimal
  • Percentage of value of the trade as part of the issuers total Market Cap
  • buyback_percentage: decimal
  • Percentage of the volume traded on the day of the buyback.
  • volume_percentage: decimal
  • Market Capitalization in USD
  • usd_market_cap: decimal
  • Time the data became available
  • end_time: DateTime
  • The associated underlying price data if any
  • underlying: BaseData
  • Gets or sets the contracts selected by the universe
  • filtered_contracts: HashSet<Symbol>
  • Gets the data list
  • data: List<BaseData>
  • Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.
  • data_type: MarketDataType
  • True if this is a fill forward piece of data
  • is_fill_forward: bool
  • Current time marker of this data packet.
  • time: DateTime
  • Symbol representation for underlying Security
  • symbol: Symbol
  • Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.
  • value: decimal
  • As this is a backtesting platform we'll provide an alias of value as price.
  • price: decimal

 


Classic Algorithm Example

The following example algorithm buys Apple stock when there is a buyback intention or transaction and then it sells the stock 3 days later:

Select Language:
from AlgorithmImports import *
from QuantConnect.DataSource import *

class CorporateBuybacksDataAlgorithm(QCAlgorithm):

    def initialize(self) -> None:
        self.set_start_date(2016, 1, 1)
        self.set_end_date(2021, 1, 1)
        self.set_cash(100000)
 
        self.aapl = self.add_equity("AAPL", Resolution.MINUTE).symbol
        
        # Requesting insider trade intention news and actual trades to estimate the return, since insiders may have better information of the future confidence
        self.smart_insider_intention = self.add_data(SmartInsiderIntention, self.aapl).symbol
        self.smart_insider_transaction = self.add_data(SmartInsiderTransaction, self.aapl).symbol
        
        # Historical data
        history = self.history(self.smart_insider_intention, 365, Resolution.DAILY)
        self.debug(f"We got {len(history)} items from our history request for intentions")
        
        history = self.history(self.smart_insider_transaction, 365, Resolution.DAILY)
        self.debug(f"We got {len(history)} items from our history request for transactions")

    def on_data(self, slice: Slice) -> None:
        # Buy Apple whenever we receive a buyback intention or transaction notification, given the insiders may have confidence in the future to buy more
        # This news may stimulate market popularity
        if slice.contains_key(self.smart_insider_intention) or slice.contains_key(self.smart_insider_transaction):
            self.set_holdings(self.aapl, 1)
            self.entry_time = self.time
        
        # Liquidate holdings 3 days after the latest entry
        # The market popularity and possible overbrought is cooled
        if self.portfolio.invested and self.time >= self.entry_time + timedelta(days=3):
            self.liquidate()
public class CorporateBuybacksDataAlgorithm : QCAlgorithm
{
    private Symbol _aapl;
    private Symbol _smartInsiderIntention;
    private Symbol _smartInsiderTransaction;
    private DateTime _entryTime;
    
    public override void Initialize()
    {
        SetStartDate(2016, 1, 1);
        SetEndDate(2021, 1, 1);
        SetCash(100000);
        
        _aapl = AddEquity("AAPL", Resolution.Minute).Symbol;
        
        // Requesting insider trade intention news and actual trades to estimate the return, since insiders may have better information of the future confidence
        _smartInsiderIntention = AddData<SmartInsiderIntention>(_aapl).Symbol;
        _smartInsiderTransaction = AddData<SmartInsiderTransaction>(_aapl).Symbol;
        
        // Historical data
        var intentionHistory = History<SmartInsiderIntention>(_smartInsiderIntention, 365, Resolution.Daily);
        Debug($"We got {intentionHistory.Count()} items from our history request for intentions");
        
        var transactionHistory = History<SmartInsiderTransaction>(_smartInsiderTransaction, 365, Resolution.Daily);
        Debug($"We got {transactionHistory.Count()} items from our history request for transactions");
    }

    public override void OnData(Slice slice)
    {
        // Buy Apple whenever we receive a buyback intention or transaction notification, given the insiders may have confidence in the future to buy more
        // This news may stimulate market popularity
        if (slice.ContainsKey(_smartInsiderIntention) || slice.ContainsKey(_smartInsiderTransaction))
        {
            SetHoldings(_aapl, 1);
            _entryTime = Time;
        }

        // Liquidate holdings 3 days after the latest entry
        // The market popularity and possible overbrought is cooled
        if (Portfolio.Invested && Time >= _entryTime + TimeSpan.FromDays(3))
        {
            Liquidate();
        }
    }
}

Framework Algorithm Example

The following example algorithm buys Apple stock when there is a buyback intention or transaction and then it sells the stock 3 days later:

Select Language:
from AlgorithmImports import *
from QuantConnect.DataSource import *

class CorporateBuybacksDataAlgorithm(QCAlgorithm):

    def initialize(self) -> None:
        self.set_start_date(2016, 1, 1)
        self.set_end_date(2021, 1, 1)
        self.set_cash(100000)
 
        # Only interest in AAPL's insider trades information
        symbols = [Symbol.create("AAPL", SecurityType.EQUITY, Market.USA)]
        self.add_universe_selection(ManualUniverseSelectionModel(symbols))
        self.add_alpha(CorporateBuybacksAlphaModel())
        self.set_portfolio_construction(EqualWeightingPortfolioConstructionModel())


class CorporateBuybacksAlphaModel(AlphaModel):
    
    def update(self, algorithm: QCAlgorithm, slice: Slice) -> List[Insight]:
        # Buy Apple whenever we receive a buyback intention or transaction notification, given the insiders may have confidence in the future to buy more
        # This news may stimulate market popularity, so we hold for 3 days
        if slice.contains_key(self.smart_insider_intention) or slice.contains_key(self.smart_insider_transaction):
            return [Insight.price(self.aapl, timedelta(days=3), InsightDirection.UP)]
        return []
        
    def on_securities_changed(self, algorithm: QCAlgorithm, changes: SecurityChanges) -> None:
        for security in changes.added_securities:
            self.aapl = security.symbol
            
            # Requesting insider trade intention news and actual trades to estimate the return, since insiders may have better information of the future confidence
            self.smart_insider_intention = algorithm.add_data(SmartInsiderIntention, self.aapl).symbol
            self.smart_insider_transaction = algorithm.add_data(SmartInsiderTransaction, self.aapl).symbol
            
            # Historical data
            history = algorithm.history(self.smart_insider_intention, 365, Resolution.DAILY)
            algorithm.debug(f"We got {len(history)} items from our history request for intentions")
            
            history = algorithm.history(self.smart_insider_transaction, 365, Resolution.DAILY)
            algorithm.debug(f"We got {len(history)} items from our history request for transactions")
public class CorporateBuybacksDataAlgorithm : QCAlgorithm
{

    public override void Initialize()
    {
        SetStartDate(2016, 1, 1);
        SetEndDate(2021, 1, 1);
        SetCash(100000);
        
        // Only interest in AAPL's insider trades information
        var symbols = new[] {QuantConnect.Symbol.Create("AAPL", SecurityType.Equity, Market.USA)};
        AddUniverseSelection(new ManualUniverseSelectionModel(symbols));
        AddAlpha(new CorporateBuybacksAlphaModel());
        SetPortfolioConstruction(new EqualWeightingPortfolioConstructionModel());
    }

    public class CorporateBuybacksAlphaModel : AlphaModel
    {
        private Symbol _aapl;
        private Symbol _smartInsiderIntention;
        private Symbol _smartInsiderTransaction;

        public override IEnumerable<Insight> Update(QCAlgorithm algorithm, Slice slice)
        {
            var insights = new List<Insight>();
            
            // Buy Apple whenever we receive a buyback intention or transaction notification, given the insiders may have confidence in the future to buy more
            // This news may stimulate market popularity, so we hold for 3 days
            if (slice.ContainsKey(_smartInsiderIntention) || slice.ContainsKey(_smartInsiderTransaction))
            {
                insights.Add(Insight.Price(_aapl, TimeSpan.FromDays(3),  InsightDirection.Up));
            } 
            return insights;
        }

        public override void OnSecuritiesChanged(QCAlgorithm algorithm, SecurityChanges changes)
        {
            foreach (var security in changes.AddedSecurities)
            {
                _aapl = security.Symbol;
                
                // Requesting insider trade intention news and actual trades to estimate the return, since insiders may have better information of the future confidence
                _smartInsiderIntention = algorithm.AddData<SmartInsiderIntention>(_aapl).Symbol;
                _smartInsiderTransaction = algorithm.AddData<SmartInsiderTransaction>(_aapl).Symbol;
                
                // Historical data
                var intentionHistory = algorithm.History<SmartInsiderIntention>(_smartInsiderIntention, 365, Resolution.Daily);
                algorithm.Debug($"We got {intentionHistory.Count()} items from our history request for intentions");
                
                var transactionHistory = algorithm.History<SmartInsiderTransaction>(_smartInsiderTransaction, 365, Resolution.Daily);
                algorithm.Debug($"We got {transactionHistory.Count()} items from our history request for transactions");
            }
        }
    }
}

Research Example

The following example lists US Equities with the highest buyback amount.

Select Language:
#r "../QuantConnect.DataSource.SmartInsiderIntentionsTransactions.dll"
using QuantConnect.DataSource;

var qb = new QuantBook();

// Requesting data
var symbol = qb.AddEquity("AAPL").Symbol;
var intentionSymbol = qb.AddData<SmartInsiderIntention>(symbol).Symbol;
var transactionSymbol = qb.AddData<SmartInsiderTransaction>(symbol).Symbol;

// Historical data for SmartInsiderIntention
var intentionHistory = qb.History<SmartInsiderIntention>(symbol, 300, Resolution.Daily);
foreach (SmartInsiderIntention intention in intentionHistory)
{
    Console.WriteLine($"{intention.NoteText} at {intention.EndTime}");
}

// Historical data for SmartInsiderTransaction
var transactionHistory = qb.History<SmartInsiderTransaction>(symbol, 300, Resolution.Daily);
foreach (SmartInsiderTransaction transaction in transactionHistory)
{
    Console.WriteLine($"{transaction.NoteText} at {transaction.EndTime}");
}

// Add Universe Selection for SmartInsiderIntention
IEnumerable<Symbol> IntentionSelection(IEnumerable<BaseData> altCoarse)
{
    return (from d in altCoarse.OfType<SmartInsiderIntentionUniverse>()
        where d.AmountValue.HasValue
        orderby d.AmountValue descending select d.Symbol).Take(10);
}
var intentionUniverse = qb.AddUniverse<SmartInsiderIntentionUniverse>(IntentionSelection);

// Historical Universe data
var intentionUniverseHistory = qb.UniverseHistory(intentionUniverse, qb.Time.AddDays(-10), qb.Time);
foreach (var intentions in intentionUniverseHistory)
{
    foreach (SmartInsiderIntentionUniverse intention in intentions)
    {
        Console.WriteLine($"{intention.Symbol.Value} amount at {intention.EndTime}: {intention.AmountValue}");
    }
}

// Add Universe Selection for SmartInsiderTransaction
IEnumerable<Symbol> TransactionSelection(IEnumerable<BaseData> altCoarse)
{
    return (from d in altCoarse.OfType<SmartInsiderTransactionUniverse>()
        where d.Amount.HasValue
        orderby d.Amount descending select d.Symbol).Take(10);
}
var transactionUniverse = qb.AddUniverse<SmartInsiderTransactionUniverse>(TransactionSelection);

// Historical Universe data
var transactionHistory = qb.UniverseHistory(transactionUniverse, qb.Time.AddDays(-10), qb.Time);
foreach (var transactions in transactionHistory)
{
    foreach (SmartInsiderTransactionUniverse transaction in transactions)
    {
        Console.WriteLine($"{transaction.Symbol.Value} amount at {transaction.EndTime}: {transaction.Amount}");
    }
}
from math import isnan
qb = QuantBook()

# Requesting Data
symbol = qb.AddEquity("AAPL").Symbol
intention_symbol = qb.AddData(SmartInsiderIntention, symbol).Symbol
transaction_symbol = qb.AddData(SmartInsiderTransaction, symbol).Symbol

# Historical data
intention_history = qb.History(SmartInsiderIntention, intention_symbol, 300, Resolution.Daily)
for (symbol, time), row in intention_history.iterrows():
    if isnan(row['amountvalue']): continue
    print(f"{symbol} amount value at {time}: {row['amountvalue']}")

transaction_history = qb.History(SmartInsiderTransaction, transaction_symbol, 300, Resolution.Daily)
for (symbol, time), row in transaction_history.iterrows():
    if isnan(row['amount']): continue
    print(f"{symbol} amount at {time}: {row['amount']}")

# Add Universe Selection for SmartInsiderIntention
def IntentionSelection(alt_coarse: List[SmartInsiderIntentionUniverse]) -> List[Symbol]:
    return [d.Symbol for d in sorted([x for x in alt_coarse if x.AmountValue],
        key=lambda x: x.AmountValue, reverse=True)[:10]]

intention_universe  = qb.AddUniverse(SmartInsiderIntentionUniverse, IntentionSelection)

# Historical Universe data
intention_universe_history = qb.UniverseHistory(intention_universe, qb.Time-timedelta(10), qb.Time)
for (_, time), intentions in intention_universe_history.items():
    for intention in intentions:
        print(f"{intention.Symbol.Value} amount value at {intention.EndTime}: {intention.AmountValue}")

# Add Universe Selection for SmartInsiderTransaction
def IntentionSelection(alt_coarse: List[SmartInsiderTransactionUniverse]) -> List[Symbol]:
    return [d.Symbol for d in sorted([x for x in alt_coarse if x.Amount],
        key=lambda x: x.Amount, reverse=True)[:10]]

transaction_universe  = qb.AddUniverse(SmartInsiderTransactionUniverse, IntentionSelection)

# Historical Universe data
transaction_universe_history = qb.UniverseHistory(transaction_universe, qb.Time-timedelta(10), qb.Time)
for (_, time), transactions in transaction_universe_history.items():
    for transaction in transactions:
        print(f"{transaction.Symbol.Value} amount at {transaction.EndTime}: {transaction.Amount}")

 


Licensing Available

Cloud Usage

Cloud Usage

Corporate Buybacks is allowed to be used in the cloud for personal and commercial projects with a subscription. The data is permissioned for use within the licensed organization only

Subscription Required | License Now


About Lean CLI

LEAN CLI is a cross-platform wrapper on the QuantConnect algorithmic trading engine called LEAN. The CLI makes using LEAN incredibly easy, reducing most of the pain points of developing and managing an algorithmic trading strategy to a few lines of bash.

Using the CLI you can download the same data QuantConnect hosts in the cloud for a small fee. These fees are per file downloaded, and are paid for in QuantConnect-Credits (QCC). We recommend purchasing credits to enable downloading.

CLI Command Generator

The CLI command generator is a helpful tool to generate a copy-paste command to download this dataset from the form below.

Select OS:
lean data download \
	--dataset "Corporate Buybacks" \
	--data-type "intentions" \
	--ticker "AAPL, MSFT" 
lean data download `
	--dataset "Corporate Buybacks" `
	--data-type "intentions" `
	--ticker "AAPL, MSFT" 

Pricing | Provider offers 2 licensing options edit edit

Pending

Intentions Cloud Access edit edit

edit edit

Harness Corporate Buybacks Intentions data in the QuantConnect Cloud for your backtesting and live trading purposes.

  • Curated, clean data
  • Updated nightly at 4am
  • Mapped to US Equity data with full historical SIP feed
PRICE

$10/mo

Documentation Subscribe cli button LEAN CLI Contact Us
Pending

Transactions Cloud Access edit edit

edit edit

Harness Corporate Buybacks Transactions data in the QuantConnect Cloud for your backtesting and live trading purposes.

  • Curated, clean data
  • Updated nightly at 4am
  • Mapped to US Equity data with full historical SIP feed
PRICE

$10/mo

Documentation Subscribe cli button LEAN CLI Contact Us

User Reviews

What people are saying about this

No Reviews Yet

This product has not received any reviews yet, be the first to post one!

Write a Review

Rate the Module:

Hover over the stars to rate the module
Paste the media URL in the input.





Please sign in to post a review

Pricing

Provider offers 2 licensing options

View Pricing


Starting Date edit edit

  • May 2015

Coverage edit edit

  • 3,000 US Equities

Delivery Methods edit edit

  • Cloud

About the Provider

  • Website edit edit
  • Contact the Provider

Data Status

Explore free and paid datasets available on QuantConnect covering fundamentals, pricing, and alternative options.

search icon search icon

Dataset Status from to

No Runs

OK

Degraded

Failure

Admin

Explore free and paid datasets available on QuantConnect covering fundamentals, pricing, and alternative options.

  • Add Dataset
  • Data Upload
  • Point Processor

Lorem ipsum dolor sit amet conjectura lorem ipsum dolor sit amet conjectura lorem ipsum

Configuration Keys

Environment Variables

Lorem ipsum dolor sit amet conjectura lorem ipsum dolor sit amet conjectura lorem ipsum

File Link

Lorem ipsum dolor sit amet conjectura lorem ipsum dolor sit amet conjectura lorem ipsum

Lorem ipsum dolor sit amet conjectura lorem ipsum dolor sit amet conjectura lorem ipsum

Upload Dataset

Upload a manually created tar or zip file to all cloud data systems.

Add a link and click the Sync Dataset button to upload the dataset

Upload Destinations

About Dataset Sync

The dataset synchronizer is an internal tool for the QuantConnect team to upload data to the cloud data storage environments. It supports TAR files which are extracted in the root directory of the cloud data environments.
Take extreme care to carefully structure your data TAR package with the same folders as the LEAN data folder. Ensure all folders and file names are lowercase as Linux is case-sensitive.

Support

Tickets and Seats

  • create new ticket create new ticket Create New Ticket
  • organization ticket organization ticket Organization Tickets 0
  • spport seat spport seat Support Seats

Support

Begin Your QuantConnect Journey

Algorithm Lab is your playground for developing and refining trading algorithms with QuantConnect. Utilize advanced tools, historical data, and robust backtesting to enhance your trading strategies. Transform your ideas into actionable insights and optimize your trading approach with ease.

Sign Up for Free

Already have an account Log In.

close close

How would you rate your experience on QuantConnect?

â­‘

â­‘

â­‘

â­‘

â­‘

Hover and click over the stars to rate us.

It looks like you are not fully satisfied with your experience on QuantConnect, please take a moment to let us know how we can improve our services for you:

trustpilot trustpilot

We are glad you're enjoying QuantConnect!

If you have a minute to spare, please leave us a review on Trustpilot.
Stories like yours help others see the full potential of QuantConnect.

Rate us on Trustpilot

Loading User Profile...

Please select one purchase option

Session Expired

Your session has expired. Please log in again.

Log In

  close-icon
switch organization switch organization Switch Organization
Organization
Type
Owner
Members
Preferred
switch organization switch organizationCreate Organization
Organization Name

update billing address update billing address Update Billing Information

Upgrade to Team plan or higher to enable custom invoicing

select icon select icon


Changes will be applied to future invoices.

Close modal Close modal
invite sent invite sent

Invitations Sent

Users will be able to join by following the link in the invitation email.

You’ve been invited by Jared Broad to join his G-Force Organization.
Would you like to accept the invitation?

Assign Seat
Close Widget Close Widget

Rename Encryption Key

Close Widget Close Widget

Delete Encryption Key

Are you sure you want to delete the encryption key "undefined"?

warning Caution: We will not be able to decrypt encrypted projects without the original key.

Close Widget Close Widget

Add Encryption Key

upload file icon upload file icon

Drag & Drop or

Keys are added to the local storage in your web browser and not uploaded to QuantConnect. To use an encrypted project on another computer you will need to bring a copy of the key.

Close modal Close modal
Authorize Decryption Authorize Decryption

Authorize

This project is encrypted using the key .

Close modal Close modal
Authorize Decryption Authorize Decryption

Authorize

This project will be encrypted using the key .