Contract specifications, front month and expiry rules

A table of 53 CME, CBOT, NYMEX and COMEX futures gives each root its tick size, multiplier, tick value, valid delivery months and expiry rule. From it the app computes the front-month contract, keeps the expiring contract listed during the roll window, and refreshes an expired saved symbol on open.

Senzoukria · Documentation · Updated September 2026


Where to find it

Where
Symbol picker (Rithmic): front month per root, plus the expiring contract while the roll window is open; SIM trading P&L; Automatic backtest "Point value ($)"
Roll buffer
8 days before the last trading day for third-Friday contracts (indices), 4 days for every other rule
Symbol format
Root + month code + last digit of the year, e.g. MNQZ6; month codes F G H J K M N Q U V X Z
Unknown root
Falls back to tick 0.25, multiplier 1, third-Friday rule, no valid months

What it does

Each specification carries root, name, category (indices, treasuries, currencies, metals, energy, grains, livestock, crypto), exchange, tick size, multiplier, tick value (= tick size × multiplier), valid months and an expiry rule. Examples: ES 0.25 × 50 = $12.50, MNQ 0.25 × 2 = $0.50, CL 0.01 × 1,000 = $10, GC 0.1 × 100 = $10, ZN 0.015625 × 1,000 = $15.625, 6E 0.00005 × 125,000 = $6.25, MBT 5 × 0.1 = $0.50.

The front month is the first valid delivery month whose last trading day minus the roll buffer is still in the future, scanning up to 36 months ahead. During the buffer the previous contract stays in the list, carrying its contract-month label and an "exp DD/MM" badge whose tooltip reads "Last trading day {date}"; it drops out the day after that date. Simulated P&L is (price difference) × multiplier × quantity.

When a saved symbol (last symbol in the footprint, heatmap preference, preflight probe symbol, journal-to-replay link) is past its last trading day, refreshIfExpired replaces it by the current front month of the same root. The year digit is resolved to the closest decade, so a 6 read in 2026 means 2026, not 2036.

Expiry rules

The 13 expiry rules and the date the app computes (business days are Monday to Friday, no holiday calendar). For treasuries and COMEX metals that date is the first-notice roll, not the exchange's official last trading day
RuleContractsDate computed
third-fridayES, MES, NQ, MNQ, RTY, M2K, YM, MYMThird Friday of the delivery month; roll buffer 8 days
fx-third-wednesday6E, 6B, 6J, 6A, 6C, 6S, 6N, M6E, M6BTwo business days before the third Wednesday
treasury-first-noticeZB, UB, TN, ZN, ZF, ZTLast business day of the month before delivery (first notice day, earlier than the official LTD)
crude-25thCL, MCL, QMThree business days before the 25th of the month preceding delivery (25th snapped back to a business day)
natgas-month-startNG, MNGThree business days before the first day of the delivery month
refined-month-endRB, HOLast business day of the month before delivery
brent-2mBZLast business day two months before delivery
comex-metalGC, MGC, SI, SIL, HG, MHG, PL, PATwo business days before the last business day of the month preceding delivery (first-notice roll, earlier than the official LTD)
grain-15thZC, ZS, ZW, ZL, ZM, ZO, ZRBusiness day before the 15th of the delivery month
cattle-month-end / hogs-10th-bd / feeder-last-thursdayLE / HE / GFLast business day of the month / 10th business day / last Thursday
crypto-last-fridayBTC, MBT, ETH, METLast Friday of the delivery month

How to use it

  • Pick the front month from the symbol picker; during the roll window both contracts are listed so you can stay on the one still carrying volume.
  • In the Automatic backtest, "Point value ($)" defaults to 2 (MNQ); set it to the multiplier of the contract you test (ES 50, NQ 20, CL 1,000).
  • Contract-month labels such as "Dec 2026" come from the same computation as the symbol; if a label looks wrong, the root's valid months or rule is the place to check.

Limits and pitfalls

  • Expiry rules approximate exchange calendars with weekday arithmetic; exchange holidays are not modelled, so a computed date can be off by one around holidays. For treasuries and COMEX metals the date is deliberately the first-notice roll, which is earlier than the official last trading day: past first notice a metal contract is deliverable and liquidity collapses.
  • The roll buffer is a display choice (8 or 4 days), not the volume roll; check the actual traded volume before switching.
  • Roots absent from the table get generic defaults (tick 0.25, multiplier 1); P&L and point value are then wrong until the spec is added.
  • Contract details are used for simulation and display; broker-side contract definitions and margins are not read from here.

This page in other languages

Frequently asked questions

Why does the picker show two ES contracts in March?
From 8 days before the third Friday through that Friday itself, the expiring contract stays listed next to the new front month, with an "exp DD/MM" badge. It drops out the day after its last trading day.
What happens to my last symbol after expiry?
On the next open it is replaced by the current front month of the same root and saved again; the preflight probe and journal replay links do the same.
Where does the point value in the backtest come from?
It is a field you set, defaulting to 2 for MNQ; the contract table gives the multiplier to enter for other roots.

Keep reading