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 a 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

VX Weekly Expirations

VX weekly futures use a different Report Symbol from the VX futures product. For these weekly contracts, CFE uses VX01 through VX53. The embedded suffix denotes the specific week of a calendar year during which a contract is settled.

Each VX weekly expiration has a corresponding parent contract.

Examples:

Asset
Maturity week
Maturity month
Maturity year
Symbol
VX
Week 1
January
2026
VX01/F6
VX
Week 12
March
2052
VX12/Z52

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

Flags normalization

The F_PUBLISHER_SPECIFIC flag provides no additional meaning in this dataset and can be safely ignored.