Support

Cboe Futures Exchange

Dataset ID: XCBF.PITCH

Cboe disseminates full depth-of-book data for their Cboe Futures Exchange (CFE) through their Multicast Depth of Book (PITCH) feed, which Databento receives over UDP multicast in our NY4 data center.

PDF specifications are available on Cboe's website for Multicast PITCH and Options on Futures Multicast PITCH.

Trading hours

CFE operates from Sunday through Friday on weekly schedule, with daily sessions.

Trading sessions vary by product, refer to the Cboe trading hours for up to date information.

  • Regular trading runs each day from Monday through Friday
  • There is extended trading both before and after each regular trading session.
  • At the end of the post-session extended trading all orders are canceled
  • There is a pause between 4:00 PM and 5:00 PM CT
Description Hours
Regular Trading Hours 8:30 AM to 3:00 PM (CT)
Extended Trading Hours (pre-session) 5:00 PM (previous day) to 08:30 AM (CT)
Extended Trading Hours (post-session) 3:00 PM to 4:00 PM (CT)
Daily pause 4:00 PM to 5:00 PM (CT)

Note: Not all products have extended trading.

The trading hours for some commonly traded products are:

  • VX and VXM] futures: Sunday 5:00 PM – Friday 4:00 PM CT (extended trading hours + regular trading hours), with a daily trading halt from 4:00 PM to 5:00 PM CT.
  • UX (Options on VX futures): Monday–Friday, 8:30 AM – 3:00 PM CT (regular trading hours).

Timestamps

Cboe messages received by Databento will generally include one timestamp with nanosecond precision. As with all of our datasets, we also collect a ts_recv timestamp when the packet was received by our capture server.

As this protocol does not have a Sending Time field, the field ts_in_delta is set to 0 and should be ignored.

Databento Field Pitch Field Description
ts_recv N/A The capture-server-received timestamp.
ts_event EpochTime + TimeOffset The matching-engine-received timestamp.

More details about our timestamps are available in our timestamping guide.

MBO normalization

Order lifecycle messages

There are seven message types in CFE PITCH that change the state of the order book. Databento normalizes these messages to MBO records as follows:

CFE Message Databento Message(s) Description
Add Order (long) Add
Add Order (short) Add
Order Executed Trade, Fill, Cancel
Reduce Size (long) Cancel The size field indicates the number of contracts to remove from the display size
Reduce Size (short) Cancel The size field indicates the number of contracts to remove from the display size
Modify (long) Modify The price and size fields indicate the new order price and quantity
Modify (short) Modify The price and size fields indicate the new order price and quantity
Delete Cancel The size field indicates the remaining display size of the deleted order

Trade records normalized from Order Executed will have order_id set to 0, as Cboe does not provide information about the aggressor's order. Trade records normalized from Order Executed will have side set to the opposite side of the matched resting order.

Trade messages

CFE Multicast PITCH also has a Trade message for providing execution details for match events that occur off the CFE book, such as ECRP or Block trades.

Databento normalizes this Trade message as a single MBO Trade record with side None and publisher set to XCBF.PITCH.XOFF.

Cboe sends Trade messages with an obfuscated Order Id, this is passed through in the normalized Trade record.

Statistics normalization

For the XCBF.PITCH dataset, statistics records are normalized from the following CFE messages.

CFE Message StatType(s)
Price Limits UPPER_PRICE_LIMIT and LOWER_PRICE_LIMIT
Settlement SETTLEMENT_PRICE
Open Interest OPEN_INTEREST
End of Day Summary HIGHEST_BID, TRADING_SESSION_HIGH_PRICE, LOWEST_OFFER, TRADING_SESSION_LOW_PRICE, OPENING_PRICE, CLOSE_PRICE, CLEARED_VOLUME, BLOCK_VOLUME, VENUE_SPECIFIC_VOLUME_1

Note: Fields Accrued Day Variance, Num Final Returns, and Num Elapsed Returns from the Futures Variance Symbol Mapping Message are not currently normalized.

Fields from these messages are normalized into records in the statistics schema with appropriate StatType.

Price Limits

CFE publishes Upper Price Limit and Lower Price Limit in a Price Limits Message.

These fields are normalized into statistics records with StatTypes UPPER_PRICE_LIMIT and LOWER_PRICE_LIMIT respectively, as prices.

Settlement

CFE publishes Settlement Price in a Settlement Message.

This field is normalized into a statistics record with StatType SETTLEMENT_PRICE, as a price.

Open Interest

CFE publishes Open Interest in an Open Interest Message.

This field is normalized into a statistics record with StatType OPEN_INTEREST, as a quantity.

End of Day Summary

The End of Day Summary message is sent after trading ends for a symbol.

Quantity Fields

Total Volume represents the total number of contracts traded for the day including Block and ECRP trades. Block Volume represents the total number of Block and Derived contracts traded for the day. ECRP Volume represents the total number of ECRP contracts traded for the day.

These fields are normalized as statistics records as quantities, with the following StatTypes:

CFE Field StatType
Total Volume CLEARED_VOLUME
Block Volume BLOCK_VOLUME
ECRP Volume VENUE_SPECIFIC_VOLUME_1

Price Fields

High Price is the higher of highest bid and highest trade price for the day.

Low Price is the lower of lowest offer and lowest trade price for the day.

Open Price is set by the first trade of the day (in any session).

Close Price is set by the last trade of the day (in any session).

Block and ECRP trades do not affect these price fields.

CFE Field StatType
High Price (if from bid) HIGHEST_BID
High Price (if from trade) TRADING_SESSION_HIGH_PRICE
Low Price (if from offer) LOWEST_OFFER
Low Price (if from trade) TRADING_SESSION_LOW_PRICE
Open Price OPENING_PRICE
Close Price CLOSE_PRICE

Status normalization

Trading Status messages are normalized into records in the status schema.

CFE Trading Status action is_trading is_quoting
Suspended SUSPEND No No
Queuing PRE_OPEN No Yes
Trading TRADING Yes Yes
Halted HALT No No

Definition normalization

Definition records are sourced from Futures Instrument Definition and OOF Symbol Mapping messages. The Complex Instrument Definition Expanded message which defines Complex Options on Futures symbols is not currently normalized and records for these symbols are not published.

The current lists of CFE products can be downloaded from the CFE Contract Listings and Product Level System Parameters on the Cboe page.

Simple Futures Variance Futures Complex Futures Options on Futures Complex Options on Futures

Instrument IDs

CFE publishes instrument IDs as a six character base-62 ASCII value. Databento normalizes this to instrument ID by converting from base62 to decimal base 10.

For example:

CFE Symbol instrument_id
"000000"b62 0
"000001"b62 1
"00000z"b62 61
"000100"b62 3844 (62*62)

Complex Options on Futures symbols start at values "z00000"b62, which is 55884102752. The maximum base-10 value that can be represented by a six-char base62 string is "zzzzzz" which is 56800235583. The Databento instrument_id field is 32-bit unsigned, which has a maximum value of 4294967295.

Because of this, values above 4000000000 are reserved for future normalization of Complex Option on Futures symbols. Values of "z00000"b62 will be mapped to 4000000000.

CFE Symbol instrument_id
"z00000"b62 4000000000
"z00001"b62 4000000001
"z0000z"b62 4000000061

Futures Instrument Definition Message

CFE Field Databento Field Description
Symbol instrument_id Converted from base62
Unit Timestamp ts_event Used only if non-zero, otherwise populated from TimeOffset
Report Symbol asset
Futures Flags not normalized Always zero
Expiration Date expiration
Contract Size original_contract_size
Listing State not normalized
Price Increment min_price_increment
Leg Count leg_count
Leg Offset not normalized
Contract Date maturity_year, maturity_month, maturity_day Zero for spread instruments
Leg Ratio leg_ratio_qty_numerator, leg_ratio_qty_denominator
Leg Symbol leg_instrument_id Converted from base62

The raw_symbol for Simple Futures attempts to match the Cboe "Product". This field is not published in the Futures Instrument Definition message.

Instead it is constructed from the Report Symbol and Contract Date fields.

The format is [asset]/[maturity_month_code][maturity_year_code]. Where these fields are derived from:

Month Codes:

Month Code
January F
February G
March H
April J
May K
June M
July N
August Q
September U
October V
November X
December Z

Maturity year uses the last digit of the year for maturities before 2030. Two digits are used for maturities from 2030 onward.

Examples:

Asset Maturity Month Maturity Year raw_symbol
VX January 2026 VX/F6
PBT December 2035 PBT/Z35

The raw symbol for future spreads is determined by the legs. The format is: LegSymbol:Ratio:Side - LegSymbol:Ratio:Side. For example:

    Spread with ratio 1:1:
    Leg1:    'VX/J6'
    Leg2:    'VX/H6'
    Symbol:  'VX/H6:1:S - VX/J6:1:B'

OOF Symbol Mapping Message

CFE Field Databento Field Description
Time Offset ts_event
Feed Symbol instrument_id Converted from base62
Futures Product group The underlying futures product root (e.g. VX)
Futures Expiration not normalized
Futures Symbol underlying_id Converted from base62
Strike Price strike_price
Call Put Indicator instrument_class
Options Expiration expiration
Options on Futures Name raw_symbol
Symbol Condition not normalized

The asset field is derived from the raw_symbol by extracting the root up to the first / character. The security_type field is set to OOF.

The raw_symbol comes from the Options on Futures Name field, which follows Cboe US Symbology definition. See section CFE Options on Futures Symbology of the Cboe US Symbology Reference.