OCC symbol guide

OCC Option Symbol Format: Root, Date, Type, and Strike

OCC and OSI option tickers use a predictable 21-character structure: root symbol, YYMMDD expiration date, call or put flag, and strike price stored in thousandths. This guide is the parser-focused companion to the interactive decoder, with explicit GLDM, SPY, QQQ, and SPXW examples.

SPY 260417C00500000
Root: SPYExpiration: 2026-04-17Type: CallStrike: $500.00
QQQ 260618P00480000
Root: QQQExpiration: 2026-06-18Type: PutStrike: $480.00
GLDM 260618C00065000
Root: GLDMExpiration: 2026-06-18Type: CallStrike: $65.00
SPXW 260417P06000000
Root: SPXWExpiration: 2026-04-17Type: PutStrike: $6,000.00

OCC symbol format at a glance

Use this table when you need the exact parser rule before opening the interactive decoder or contracts API.

ComponentExampleMeaning
RootGLDM Six-character root field; trim right-side padding after slicing.
Expiration260618YYMMDD date, so this example means 2026-06-18.
Call / putCContract type. C is call; P is put.
Strike00065000Eight digits stored in thousandths, so this example means 65.00.

OCC / OSI field breakdown

For parser implementation, split the string by fixed positions before trimming or converting field values. This avoids root-padding and strike-scaling errors.

FieldPositionExampleParser rule
Root1-6SPY Read six characters, then trim right-side padding spaces. Do not assume every root has three letters.
Expiration7-12260417Parse as YYMMDD, then convert to a full date such as 2026-04-17.
Call / put13CAccept C for calls and P for puts. Reject other values instead of guessing.
Strike14-2100500000Convert the final eight digits to a number and divide by 1,000, so 00500000 becomes 500.00.

GLDM example

How to decode a GLDM OCC option symbol

For a GLDM option, keep the same fixed-width logic and do not special-case the four-letter root. In the padded example GLDM 260618C00065000, the root field is GLDM with two trailing spaces, the date block is June 18, 2026, the side is a call, and the strike is 65.00 after dividing the final eight digits by 1,000.

In a compact API identifier such as O:GLDM260618C00065000, remove the optional prefix, locate the YYMMDD block, then parse the side and strike fields. The output should be the same contract identity as the padded version.

Fixed-width layout

OCC option symbol format: root, YYMMDD, C/P, strike

The standard OSI layout is fixed-width even when display systems show a compact version. Positions 1 through 6 hold the root field, positions 7 through 12 hold the expiration date in YYMMDD form, position 13 holds C or P, and positions 14 through 21 hold the strike price in thousandths. That final conversion is the parser step most likely to create incorrect strikes if it is skipped.

SPY   260417C00500000
QQQ   260618P00480000
GLDM  260618C00065000
SPXW  260417P06000000

root  = characters 1-6, trimmed after parsing
date  = YYMMDD
type  = C or P
strike = final 8 digits / 1000

How to split an OCC option symbol

Root

1 to 6 characters, often padded with spaces

Expiration

YYMMDD, for example 260417 means 2026-04-17

Type

C for call, P for put

Strike

Eight digits in thousandths, so 00500000 means 500.00

Common OCC parser mistakes

These mistakes are common when a parser is written from display examples instead of the fixed-width OSI contract.

MistakeFailure modeCorrect handling
Assuming the root is always three lettersGLDM, SPXW, adjusted roots, and padded roots are parsed incorrectly.Slice six root characters first, then trim right-side padding spaces.
Splitting on spaces before slicingCompact and padded symbols produce different field boundaries.Normalize optional prefixes, then parse fixed-width or compact forms with explicit date/type/strike positions.
Using the final eight digits as dollars00500000 becomes 500000 instead of 500.00.Convert to a number and divide by 1,000 before formatting.
Treating SPX and SPXW as equivalentSettlement and expiration workflows can be mislabeled.Preserve the root exactly and link SPXW symbols to SPXW expiration logic.

OCC symbol to API lookup mapping

After parsing the symbol, keep the compact OCC ticker as the stable identifier for contracts, snapshots, quotes, trades, and aggregates.

WorkflowInput from symbolAPI path pattern
Single contract lookupCompact OCC ticker such as O:SPY260417C00500000/v1/options/contracts/{occ_ticker}/
Latest contract stateUnderlying root plus compact OCC ticker/v1/options/snapshot/{root}/{occ_ticker}/
Chain by expirationRoot and parsed expiration date/v1/options/chain/{root}/?expiration_date=YYYY-MM-DD
Historical barsCompact OCC ticker and date window/v1/options/aggs/{occ_ticker}/1/day/...

OCC option symbol FAQ

What is the OCC option symbol format?

The OCC format is root symbol, YYMMDD expiration, C or P, then an eight digit strike price stored in thousandths.

How long is an OCC option symbol?

The fixed-width OSI form is 21 characters: a six-character root field, six date digits, one C or P flag, and eight strike digits. Compact display forms may remove root padding spaces.

Is OCC the same as OSI?

For most practical parsing work, yes. OSI is the standardized option symbology format used for OCC-style contract identifiers.

Why does GLDM have spaces in OCC examples?

The root field can be padded to six characters. Many systems display or accept the compact form, but parsers should handle optional spaces.

Operational usage

How to use OCC Option Symbol Format: Root, Date, Type, and Strike in a real workflow

Treat this page as a decision boundary for the surrounding API workflow. Before a value from OCC Option Symbol Format: Root, Date, Type, and Strikeenters a scanner, dashboard, calendar, backtest, or support answer, store the source route, request parameters, relevant timestamp, freshness label, and the reason the value is suitable for the next step.

The important implementation habit is to keep display labels separate from stable identifiers. Dates should remain tied to the calendar rule or listed-expiration source that produced them. Option rows should keep the OCC symbol, expiration, strike, side, quote state, and pagination context that created the row. Provider or product answers should keep the entitlement, licensing, and support assumptions visible.

When the workflow changes, rerun the page against one concrete example instead of trusting a general claim. Pick the ticker, date window, endpoint family, and expected output artifact. Then verify that the same terminology appears in the API request, UI label, log entry, and review checklist.

Related pages