Support

CFE

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.

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.

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).

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, 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 the 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 a StatType of 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 a StatType of 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 a StatType of 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, OOF Symbol Mapping, and Complex Instrument Definition Expanded messages.

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

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 used for normalization of Complex Option on Futures symbols. Values of "z00000"b62 and above are mapped to offset 4000000000.

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

Futures Instrument Definition Message

Databento Field CFE Field Description
instrument_id Symbol The mapped value from base62
raw_instrument_id Symbol The original decoded base62 value
ts_event Unit Timestamp Used only if non-zero, otherwise populated from TimeOffset
asset Report Symbol
expiration Expiration Date
original_contract_size Contract Size
min_price_increment Price Increment
leg_count Leg Count
maturity_year Contract Date Zero for spread instruments
maturity_month Contract Date Zero for spread instruments
maturity_day Contract Date Zero for spread instruments
leg_ratio_qty_numerator Leg Ratio Absolute value of the leg ratio
leg_ratio_qty_denominator Leg Ratio Always 1
leg_side Leg Ratio Positive ratio=BID, negative ratio=ASK
leg_instrument_id Leg Symbol Converted from base62

The following fields are not normalized: Futures Flags, Listing State, Leg Offset.

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 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, for a spread with ratio 1:1, with legs VX/J6 and VX/H6 the resulting spread raw_symbol will be VX/H6:1:S - VX/J6:1:B

OOF Symbol Mapping Message

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

The following fields are not normalized: Futures Expiration, Symbol Condition.

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 the Cboe US Symbology definition. See section CFE Options on Futures Symbology of the Cboe US Symbology Reference.

Complex Instrument Definition Expanded Message

Databento Field CFE Field Description
ts_event Time Offset
instrument_id Complex Instrument Id The mapped value from base62
raw_instrument_id Complex Instrument Id The original decoded base62 value
group Complex Instrument Underlying The underlying futures product root (e.g. VX)
leg_count Leg Count
leg_instrument_id Leg Symbol Converted from base62
leg_ratio_qty_numerator Leg Ratio Absolute value of the leg ratio
leg_ratio_qty_denominator Leg Ratio Always 1
leg_side Leg Ratio Positive ratio=BID, negative ratio=ASK

The following fields are not normalized: Complex Instrument Type.

The instrument_class is set to OPTION_SPREAD and security_type is set to OOF.

The asset field is determined from the leg definitions.

The raw_symbol for complex options is determined by the legs, using the same format as complex futures: LegSymbol:Ratio:Side - LegSymbol:Ratio:Side. For example, for an option spread with ratio 1:1 and legs UX4E/J6 C3000 and UX4E/J6 C4000, where both sides are BID, the resulting raw_symbol would be UX4E/J6 C3000:1:B - UX4E/J6 C4000:1:B