reference · Futures & contracts
Futures Month Codes: Decode the Contract Without Guessing Its Expiry
Futures month codes identify a contract's named month: F, G, H, J, K, M, N, Q, U, V, X and Z run from January through December. Combine the code with the product and full year, then check the actual contract calendar.

Key points
- The month letter is only one part of a complete instrument identifier.
- Year formats and symbol separators vary by platform and data vendor.
- A contract's named month, final trading date and settlement date can differ.
Futures month-code decoder
Loading the browser tool. The formulas, worked examples, sources and limitations remain available below.
Scope and assumptions
- The decoder accepts a declared ASCII alphanumeric root of 1–16 characters, one recognized month letter and exactly one, two or four year digits with no separators.
- One- and two-digit suffixes require a matching full-year context from 1000 through 9999. Four-digit suffixes supply their own full year. The current date is never used to infer a year.
- Outer whitespace in the symbol and declared root is trimmed and ASCII lowercase is normalized. Internal spaces, prefixes, punctuation, continuous-chart labels and spread expressions are outside this format.
- A successful parse validates neither product identity nor listing, expiry, broker acceptance or TradeCopier support. Examples describe format only.
The complete letter table
CME publishes the following contract month codes. Their sequence is not a set of calendar initials, so decoding a letter from memory is an avoidable source of mistakes.
| Month | Code | Month | Code |
|---|---|---|---|
| January | F | July | N |
| February | G | August | Q |
| March | H | September | U |
| April | J | October | V |
| May | K | November | X |
| June | M | December | Z |
The table identifies months, not the months available for every product. A contract can list monthly, quarterly or other cycles. Check the exchange's listing schedule for the precise product and year rather than assuming that all twelve letters correspond to active contracts.
Use the futures month-code decoder
The Futures month-code decoder separates a string written as ROOT + MONTH + YEAR, without separators. Enter the symbol, declare its product root separately, supply the full year when required, and choose Decode symbol. Reset example restores MESZ26, root MES and full-year context 2026. The result explains the string; it does not look up an exchange instrument.
This is one deliberately limited input format, not a universal vendor parser. CME's trading-code introduction explains the product/month/year components and warns that display conventions vary by platform. A brokerage system may use different roots, separators or instrument identifiers. Confirm its actual naming convention before translating anything.
The declared root may contain 1–16 ASCII letters or digits, including a digit at either end. For the symbol and declared root, the parser trims outer whitespace and treats ASCII lowercase letters as uppercase. Full-year context must contain exactly four digits, with no surrounding whitespace. It then requires that exact root, followed by one recognized month letter and a year suffix containing exactly one, two or four digits. Internal spaces, punctuation, exchange prefixes and three-digit year suffixes are outside this format.
Resolve the year instead of guessing a decade
A one-digit suffix needs a separately supplied four-digit year whose last digit matches. Thus MESZ6 with context 2026 resolves to December 2026; the same string with context 2036 resolves to December 2036. Neither interpretation is established by the final digit alone. The decoder does not choose the nearest year or use today's date.
A two-digit suffix works the same way using the last two digits. MESZ26 with context 2026 resolves to 2026, but 1926 and 2126 also end in 26. A context of 2027 conflicts and must be rejected. The full year is a declaration you must substantiate from the original record, instrument details or appropriate historical source.
A four-digit suffix is self-contained within this exercise: MESZ2026 supplies 2026 directly and does not require a context year. Accepted full years run from 1000 through 9999. That numerical range is a parsing boundary, not an exchange listing horizon. A syntactically valid year does not establish that the product existed then or will be offered in that year.
| Input symbol | Declared root | Full-year context | Named month and year |
|---|---|---|---|
| MESZ6 | MES | 2026 | December 2026; one-digit year matched |
| MESZ26 | MES | 2026 | December 2026; two-digit year matched |
| MESZ2026 | MES | Not required | December 2026; explicit four-digit year |
| SR3U26 | SR3 | 2026 | September 2026; root ends with a digit |
| 6EH26 | 6E | 2026 | March 2026; root starts with a digit |
| mesz26 | mes | 2026 | December 2026 after outer-space and case normalization |
The separate root field prevents a digit inside a product code from being casually treated as the year. It does not verify the root against a product directory. A made-up alphanumeric root can satisfy the grammar, so retain the exchange and product identity as separate evidence. The examples show parsing mechanics, not current orders or TradeCopier integration support.
Recognize strings this decoder cannot interpret
| Input or combination | Why it is not decoded |
|---|---|
| MESZ6 with no context | The full year remains unresolved. |
| MESZ26 with context 2027 | The supplied full year does not match the suffix. |
| MESZ26 with root ES | The symbol does not start with the declared exact root. |
| MESA26 with root MES | A is not a recognized month code. |
| MESZ026 with root MES | Three-digit year suffixes are not accepted. |
| CME:MESZ26 or MES Z26 | Exchange prefixes and internal spaces are outside the format. |
| ES1! or MESZ26-MESH27 | A continuous-chart label or multi-leg spread expression is not one root-month-year string. |
A rejection does not establish that a vendor's original instrument is invalid. It means that string is outside this teaching tool's contract. Do not silently remove punctuation from a spread or continuous label and assume the remainder identifies the same instrument. Consult the vendor's description and resolve each actual contract separately.
The named month is not an expiry formula
CME's Three-Month SOFR documentation gives a useful counterexample. Its named month identifies the start of the three-month reference period; the contract reaches final settlement after that period. In CME's September 2026 example, SR3U6 names the September contract even though the reference period continues into December. This explains why the decoder labels its output as the named month, not the expiry month. Reading the letter correctly therefore does not by itself identify the month in which trading ends.
Use the product calendar for last trade, notice and settlement dates. CME's calendar field definitions distinguish these events. The CME expiration calendar provides filters for products and different trading events. Check the exact contract and current broker deadline separately; this decoder retrieves neither. The companion notice and last-trade reference turns them into an operational worksheet.
Prevent a rollover mismatch
Suppose a source moves from its September contract to December while a destination still points at September. Both symbols can share the same market root, but they represent different prices, expiration rules and positions. Selling December does not simply close a September long; it can create a calendar spread.
A continuous chart adds another layer because it may splice several contracts and adjust historical prices. Do not use its label as proof of a current orderable instrument. Before a roll, reconcile open positions, pending orders and destination mappings using full identifiers. After the roll, verify actual fills and residual positions rather than inferring success from the chart's new month label.
For archived orders, preserve the original symbol string alongside its resolved fields. That makes later reconciliation possible if a vendor changes its naming format, or if the same abbreviated year is encountered in a dataset spanning multiple decades.
Keep a reproducible decoding record
Store the untouched original symbol, its vendor or broker namespace, your declared root, month letter, full resolved year and the evidence used to choose that year. Keep the result separate from the exchange calendar and broker instrument identifier. A later reviewer should be able to distinguish a format match from a verified listing and from an order accepted on a particular account.
If an archive supplies only an abbreviated year without reliable context, mark that record unresolved. Guessing a plausible decade may make the data look complete while joining unrelated contracts. Leave the unknown visible until a dated source or original instrument record resolves it.
Questions and answers
What are all twelve futures month codes?
January F, February G, March H, April J, May K, June M, July N, August Q, September U, October V, November X and December Z. These identify named months; the available contract months depend on the product.
What are the quarterly futures month codes?
March, June, September and December use H, M, U and Z. A product determines its own listing cycle, so these letters do not prove that a particular contract is currently listed.
How do I decode MESZ26?
For this decoder, declare root MES and supply a full-year context ending in 26, such as 2026. Z resolves to December and the supplied context resolves the year. The result does not verify an exchange listing, expiry date or orderable broker instrument.
Why do one-digit and two-digit years need full-year context?
They omit the decade or century. A suffix of 6 can match 2026 or 2036; a suffix of 26 can match 1926, 2026 or 2126. The tool requires a matching four-digit context and does not infer the year from today.
Can the product root contain numbers?
Yes. The declared root accepts 1–16 ASCII letters or digits. SR3 and 6E illustrate digit-ending and digit-leading roots. The decoder uses the root you declare; it does not verify that root against an exchange directory.
Does Z always mean the contract stops trading in December?
No. It identifies the named December month. Product rules determine last trading and settlement dates. CME Three-Month SOFR names the month at the start of its reference period, so decoding the letter does not provide an expiry date.
Does the decoder accept continuous symbols, prefixes or spreads?
No. It accepts only the declared root followed immediately by a recognized month letter and one, two or four year digits. Labels such as ES1!, CME:MESZ26 and MESZ26-MESH27 are outside this format and need their own vendor or product interpretation.
Does a successful result prove that I can trade or copy the contract?
No. It confirms only the specified format and year resolution. Verify the exchange, product, listing, broker identifier, account permissions and actual supported copier route separately. A four-digit year is self-contained but still does not prove orderability.
Sources and further checks
Use the current source for your exact instrument, account and platform. Referencing a general specification does not establish support for every TradeCopier workflow.
- CME: Contract Month Codes · Checked September 22, 2026
- CME: Understanding SOFR Futures · Checked September 22, 2026
- CME: Product Calendar Field Definitions · Checked September 22, 2026
- CME: Understanding Contract Trading Codes · Checked September 22, 2026
- CME: Expiration Calendar · Checked September 22, 2026
Found an error? Send a correction with this page's address and a primary source. See our editorial standards for how we handle examples, claims and revisions.



