Methodology
Margins as of Calendar as of FX as of How we source this
This site publishes reference data about futures contracts. Every value comes from a named source, carries a date, and is either verified against that source or marked as not verified. Nothing here is a forecast, a rating or a recommendation.
Contract specifications
Contract terms (contract unit, tick size, tick value, months, settlement, hours) are kept in one file per contract and change only when an exchange amends a contract. Each file lists its sources and the date they were checked. Status levels:
- Verified: read from the exchange's own specification page (Eurex, ICE).
- Cross-checked: the exchange page is linked as the primary reference, and the values were matched against an independent secondary source. CME Group's website blocks automated reading, so CME, CBOT, NYMEX and COMEX contracts are in this group.
- Partially verified: one or more fields could not be confirmed or the sources disagreed. The field and the reason are shown on the contract's page.
Contracts with unconfirmed fields: ZT, SR3, MCL, MGC, SIL, HG, M6E, BTC, MBT.
Tick value is checked to equal tick size multiplied by the contract multiplier for every contract on every build.
Margins
Margins are the clearing house's minimum performance bond for one outright contract in the front month, fetched daily:
- CME, CBOT, NYMEX, COMEX: CME publishes maintenance margin per product and contract month. We take the row covering the front contract. Initial margin is maintenance × 1.10, CME's ratio for speculative accounts (hedge and member accounts have initial equal to maintenance).
- Eurex (FDAX, FGBL): Eurex Clearing's indicative Prisma margin file gives the initial margin for a one-lot front-month position, long and short. Prisma has no maintenance level; we show the larger of long and short for both.
- ICE Futures Europe (FTSE 100): ICE Clear Europe's SPAN scanning range per contract, which is the outright margin; initial and maintenance are the same.
CME's public margin export omits its largest products. For those (none currently) values are maintained by hand from the CME margin page, and the daily data job stops with an error if any hand-entered value is more than seven days old. A value from a secondary source is labelled “unverified” on its page until it has been confirmed on the exchange's site.
Brokers set their own margins, usually above exchange minimums, and set intraday margins independently. Those are not shown.
Change detection
Each run compares new margins with the previous run. Any difference in initial or maintenance margin is written to a permanent log with the old and new value and the time detected. A page shows the previous value for seven days after a change. The changes page lists them.
Expiry and roll dates
Last trading and first notice days are calculated from each product's exchange rule, applied to the exchange's holiday calendar. The rules used:
| Rule | Definition | Status |
|---|---|---|
equity_index_quarterly | Last trade: 3rd Friday of the contract month (09:30 ET, special opening quotation). Cash settled, no notice day. | From exchange rule text |
treasury_long | Last trade: 7th business day before the last business day of the contract month. First notice: last business day of the month before. | From exchange rule text |
treasury_short | Last trade: last business day of the contract month. First notice: last business day of the month before. | From exchange rule text |
sofr_3m | Last trade: business day before the 3rd Wednesday of the month three months after the contract month (end of the reference quarter). Cash settled. | Modelled; check against the exchange calendar |
crude_oil | Last trade: 3 business days before the 25th calendar day of the month before the contract month (4 if the 25th is not a business day). First notice: the business day after last trade. | From exchange rule text |
micro_crude_oil | Last trade: modelled as one business day before CL's last trade. Cash settled. | Modelled; check against the exchange calendar |
natural_gas | Last trade: 3 business days before the first calendar day of the contract month. First notice: the business day after last trade. | From exchange rule text |
refined_products | Last trade: last business day of the month before the contract month. First notice: the business day after last trade. | Modelled; check against the exchange calendar |
metals | Last trade: 3rd last business day of the contract month. First notice: last business day of the month before. | From exchange rule text |
grains | Last trade: business day before the 15th calendar day of the contract month. First notice: last business day of the month before. | From exchange rule text |
fx | Last trade: 2 business days before the 3rd Wednesday of the contract month (09:16 CT). | From exchange rule text |
fx_cad | Last trade: 1 business day before the 3rd Wednesday of the contract month (09:16 CT). | From exchange rule text |
bitcoin | Last trade: last Friday of the contract month (16:00 London); previous business day if that Friday is a holiday. Cash settled. | Modelled; check against the exchange calendar |
eurex_index | Last trade: 3rd Friday of the contract month (13:00 CET), or the exchange day before if a holiday. Cash settled. | From exchange rule text |
eurex_bund | Delivery day: 10th calendar day of the contract month (next exchange day if not one). Last trade: 2 exchange days before delivery (12:30 CET). | From exchange rule text |
ice_ftse | Last trade: 3rd Friday of the contract month (shortly after 10:15 London), or the business day before. Cash settled. | From exchange rule text |
Roll dates are conventions, not exchange rules:
- CME roll date: 8 calendar days before last trade (the Thursday of the week before expiry).
- Suggested roll: 2 business days before the earlier of first notice day and last trade. A convention, not an exchange rule; brokers may require earlier exit.
- Suggested roll: 5 business days before last trade. A convention, not an exchange rule.
Holiday calendars come from the open-source holidays library (CME, Xetra as a proxy for Eurex, ICE Futures Europe). Unscheduled closures are not captured. The exchange's published calendar is the authority.
Trading hours
Sessions are stored in the exchange's own time zone, because the schedule is fixed in local time and its UTC equivalent moves with daylight saving. UTC times are calculated for the current week when the site is built; your local time is calculated in your browser. Holiday schedules are not shown.
Currency conversion
Calculators that convert between USD, GBP and EUR use the European Central Bank's euro reference rates, published once per business day (current: 27 Oct 2026). Your broker's conversion rate will differ.
Prop firm data
Prop firm rules are copied from each firm's own website and help pages, with the source of every value. Values found only on third-party sites, or where a firm's own pages disagree, are listed as not verified. Firms are listed alphabetically. We do not rate, rank or recommend firms.
Corrections
If a value is wrong, the exchange or firm is right. Corrections are made in the data files, and the change is visible in the repository history.