US Futures Trade Only Guide                                                                                      


US Futures Trade Only Guide

version 2.2 (Jul 2021)

CONTACT US

We are here to help you do great things with our market and reference data. For questions, feedback, and other concerns, you may reach our team of experts using the following contact information:

algoseek customer support

support@algoseek.com

(+1) 646 583 1832

algoseek sales

sales@algoseek.com

(+1) 646 583 1832

TABLE OF CONTENTS

INTRODUCTION        5

DATA ORGANIZATION AND FILE FORMAT        5

TIMESTAMP AND MAINTENANCE PERIODS        9

APPENDIX A. TYPEMASK COLUMN        10

APPENDIX B. FREQUENTLY ASKED QUESTIONS        12


INTRODUCTION

algoseek’s Futures, Spreads, and Future Options Trade Only datasets contain high-quality intraday trade data for all securities listed on US exchanges.

The contract specifications such as underlying asset, the quantity of the asset or contract size, expiration months, delivery location, and the delivery date upon execution can be found on the US futures products list, which is available on the following link: http://www.cmegroup.com/trading/products/.

DATA ORGANIZATION AND FILE FORMAT

algoseek provides Futures market data in plain-text CSV files. The first row of the CSV file is a fixed header, and then rows of data corresponding to individual events (see Table 1). By default, data is organized into one file per symbol per trading day. For example, all events for ticker ESH0 on Jan 28, 2020, are stored in one CSV file.

Due to the large data size, CSV files are gzip-compressed (having a csv.gz extension) with a compression ratio of about 8:1.

Table 1:  Sample Trade Only Data

LocalDate

LocalTime

Ticker

Type

Mask

Type

Price

Quantity

Orders

Flags

20200127

180000580

ESH0

162

TRADE AGRESSOR ON BUY

3247.2500

1

2

0

20200127

180000735

ESH0

162

TRADE AGRESSOR ON BUY

3247.2500

1

2

0

20200127

180001204

ESH0

98

TRADE AGRESSOR ON SELL

3247.0000

1

2

0

20200127

180002525

ESH0

162

TRADE AGRESSOR ON BUY

3247.2500

1

2

0

20200127

180003091

ESH0

162

TRADE AGRESSOR ON BUY

3247.2500

1

2

0

Note: Columns UTCDate, UTCTime and SecurityID are not shown.

Table 2 (below) provides the name, description, and data type for each data field (column) in a Futures Trade Only data file.

Table 2: CSV File Fields Schema

Field

Type (Format)

Description

UTCDate

string (yyyymmdd)

Trading date in yyyymmdd format (UTC time)

UTCTime

string (HH:MM:SS.mmm or HH:MM:SS.mmmiiinnn)

Event timestamp in nanoseconds (milliseconds before 2016)

 LocalDate

string (yyyymmdd)

Trading date in yyyymmdd format (CT time)

 LocalTime

string (HH:MM:SS.mmm or HH:MM:SS.mmmiiinnn)

Event timestamp in nanoseconds (milliseconds before 2016)

Ticker

string

Instrument name

CallPut

string

Option type (Call or Put) displayed as "C" or "P".

Note: available only in Future Options dataset

Strike

integer

A fixed price for buying or selling underlying outright future contract.

Note: available only in Future Options dataset

Month

string

A code for the expiration month for the option contract (as a single letter).

Note: available only in Future Options dataset

ExpirationYear

integer

The expiration year of the option contract.

Note: available only in Future Options dataset

SecurityID

integer

internal security ID used by algoseek

TypeMask

integer

Not in use

Type

string

The type of event

Price

decimal

The opening, trade, and settlement price depending on the type of event

Quantity

integer

The total number of contracts traded at this price

Orders

integer

The number of customer orders at the price level

Flags

integer

Conditions applicable to the trade

Ticker

Ticker represents the name of the instrument with a maximum of 20 characters. It is a combination of the product code and an expiration month and year code. It may also include a code for spread type, call or put code and its corresponding strike price for option on futures.

The general symbology scheme for Futures/Futures Options is ZZZMY/ZZZMY.SXXXX, where ZZZ is the base symbol, M is the expiration month code and Y is the last digit of the expiration year, S is the type of the option contract (Call/Put), XXXX is the option contract’s strike price.

Some sample tickers:

Use the link below to match the expiration month code with the corresponding month https://www.cmegroup.com/month-codes.html. The expiration year code corresponds to the last digit of the year.    

Event Types

Table 3 and Table 4 contain names and descriptions of event types which can be found in TAQ data files.

Table 3: Trade Event Types

Type

Description

TRADE AGGRESSOR ON BUY

Refers to the trade with the initiator on the buy-side

TRADE AGGRESSOR ON SELL

Refers to the trade with the initiator on the sell-side

TRADE

Refers to the trade with the initiator unknown (side cannot be determined)

Table 4: Statistics Event Types

Type

Description

OPENING PRICE

Indicates the first trade for the opening or re-opening of the instrument

FIXING PRICE

A volume-weighted average price for the nearby (front month) contract

TRADE VOLUME

Represents the number of contracts traded for the given instrument for the trading session

SETTLEMENT PRICE

An official price established for the instrument at a given point in the trading day

OPEN INTEREST

The total number of contracts per instrument that are not yet offset or fulfilled for the previous trading day. It is sent before the start of the trading session

FINAL EMPTY BOOK

Indicates that there is no current bid or ask. It is used during regular trading hours when there is a reset in the feed, and during maintenance or halt periods when stopping and starting the feed

Implied Events. Each event type present in the table above can have an implied indicator. For instance, an implied trading volume is IMPLIED TRADE VOLUME, implied Bid quote is IMPLIED QUOTE BID, etc. An implied event represents a quantity not derived from any fundamental market information

Multiple settlement prices. There are multiple settlement prices because exchanges  publish settlement prices several times during the day. For the SETTLEMENT PRICE event type, the field “Quantity” represents the trade date (yyyymmdd format) that the settlement price references. For further details, please refer to the link below: http://www.cmegroup.com/market-data/settlements/settlements-details.html

Empty Book. This is used by exchanges to indicate that there is no current bid or ask. It is used during regular trading hours when there is a reset in the feed, and during maintenance or halt periods when stopping and starting the feed. An EMPTY BOOK event may also be displayed as EMPTY BOOK BID, EMPTY BOOK FINAL EMPTY BOOK BID FINAL.

Orders

For trade events, this field is zero before Nov 22, 2015. Starting Nov 22, 2015. the exchanges moved from FAST/FIX  to MDP protocol. That is when this field started to get populated. But it still needs to be ignored as per specs for trades.

Flags

Some events have a flag set for extra information about the event message.  Table 5 summarizes flag values.

Table 5: Flags Used in the Dataset

Flag Value

Flag Name

0

Regular

1

Implied

2

SHFlag

4

SLFlag

8

CalculatedPrice

16

Opening

SHFlag and SLFlag refer to the session’s high and low prices.

Note: When backtesting or building trade bars, do not include trades with Flag 8. This indicates that no actual contracts are being bought/sold as these are calculated prices without any quantity.

TIMESTAMP AND MAINTENANCE PERIODS

Daily File

Each symbol has one file per contract on each trading day containing quotes,  trades, open interest, settlement prices, etc. A trading day means UTC time from 00:00 to 24:00.

UTC Timestamps

The field “UTCTime'' contains timestamps based on a 24-hour system and follows an HHMMSSZZZ format wherein HHMMSS represents 2-digit values for hours, minutes, and seconds, while ZZZ indicates a 3-digit millisecond value.

Local Timestamps

The field “LocalTime” reflects the current time in Chicago (CST). During winter, the local timestamp is adjusted to UTC –6 and is changed to UTC –5 during daylight saving time (DST). For example, an algoseek Futures timestamp of 181514415 is 18:15:14.415 UTC. During daylight saving time, this converts to 13:15:14.415 CST.

Maintenance and Halt Periods

Futures contracts have different maintenance and trading halt periods based on each specification. For example, Gold’s (GC) daily maintenance period is specifically set from 4 pm to 5 pm CST. Please refer to https://www.cmegroup.com/trading-hours.html for the comprehensive list of trading hours and maintenance periods for all US exchanges-traded instruments.


APPENDIX A. TYPEMASK COLUMN

The Typemask Column is an event type in an 8-bit mask format.

Note: the bit position 0 corresponds to the rightmost bit and 7 is the leftmost bit.

Table 7: TypeMask Flags

Bit Position

Description

0-4

Message type (integer 5-bit value). See Message Type Table

5

Final flag (1 if the transaction is complete; 0 if there is another transaction following this one)

6

Aggressor on the sell-side (trades) or offer (quotes). This is only valid only for quotes or trades

7

Aggressor on the buy-side (trades) or bid (quotes). This is only valid for quotes or trades

Table 8 lists integer codes for message type bits.

Table 8: Message Type (Bits 0-4)

Value

Message

Value

 Message

0

Heartbeat

13

Insert

1

Quote

14

Update

2

Trade

15

Delete

3

SessionEnd

16

SecurityStatus

4

Prior

17

ElectronicVolume

5

OpeningPrice

18

ThresholdLimits

6

ClosingPrice

19

BandingHighLimitPriceAdd

7

SettlementPrice

20

BandingLowLimitPriceAdd

8

FixingPrice

21

BandingMaxPriceVariationAdd

9

CashNote

22

BandingHighLimitPriceRemove

10

TradeVolume

23

BandingLowLimitPriceRemove

11

OpenInterest

24

BandingMaxPriceVariationRemove

12

EmptyBook

Event Type Examples

Example 1. SETTLEMENT PRICE: Type 39 = 0010 0111

Message Type (Bits 0-4) = 7, Settlement Price

Bit 5, Transaction Complete

Example 2. TRADE VOLUME: Type 42 = 0010 1010

Message Type (Bits 0-4) = 10, Trade Volume

Bit 5, Transaction Complete

Example 3. OPEN INTEREST: Type 43 = 0010 1011

Message Type (Bits 0-4) = 11, Open Interest

Bit 5, Transaction Complete

Example 4. EMPTY BOOK: Type 108 = 0110 1100

Message Type (Bits 0-4) = 12, EmptyBook

Bit 5, TransactionComplete; Bit 6, Ignore for EmptyBook

Example 7. TRADE AGRESSOR ON SELL: Type 98 = 0110 0010

Message Type (Bits 0-4) = 2, Trade

Bit 5, Transaction Complete; Bit 6, Aggressor on Sell

Example 8. TRADE AGRESSOR ON BUY: Type 162 = 1010 0010

Message Type (Bits 0-4) = 2, Trade

Bit 5, Transaction Complete Bit; 7, Aggressor on Buy


APPENDIX B. FREQUENTLY ASKED QUESTIONS

Why do I see incorrect timestamps while importing data into Excel or data frame?

The data columns UTCTime and LocalTime should be imported as text and then just split according to the following scheme      

HHMMSSZZZ should be HH:MM:SS.ZZZ