# ICE Energy Contract Decomposition Reference Table

_Generated from specs — 107 contracts, 108 atomic factors._

Sign convention: a **long** position carries the listed signed coefficients. `S2F` = swap-to-future style financial contract. `code_verified=false` means the ICE clearing symbol still needs confirmation against ICE's product master.


## Coal

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `API2_API4_ARB` | ATWR | inter_benchmark_spread | USD/mt | 1000 mt | +1·COAL.API2 `[ATW]`<br>-1·COAL.API4 `[ATR]` |
| `API2_COAL_FUT` | ATW | futures | USD/mt | 1000 mt | +1·COAL.API2 `[ATW]` |
| `API4_COAL_FUT` | ATR | futures | USD/mt | 1000 mt | +1·COAL.API4 `[ATR]` |

## Crude

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `BAKKEN_DIFF` | BAK | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.BAKKEN `[BAK]` |
| `BRENT_CFD_W1` | CFD1 | cfd | USD/bbl | 1000 bbl | +1·CL.CFD.BRENT.W1 `[CFD1]` |
| `BRENT_CFD_W2` | CFD2 | cfd | USD/bbl | 1000 bbl | +1·CL.CFD.BRENT.W2 `[CFD2]` |
| `BRENT_CFD_W3` | CFD3 | cfd | USD/bbl | 1000 bbl | +1·CL.CFD.BRENT.W3 `[CFD3]` |
| `BRENT_CFD_W4` | CFD4 | cfd | USD/bbl | 1000 bbl | +1·CL.CFD.BRENT.W4 `[CFD4]` |
| `BRENT_DFL_M1` | DFL | dated_futures_diff | USD/bbl | 1000 bbl | +1·CL.DTD.BRENT `[BRN-DTD]`<br>-1·CL.FUT.BRENT `[B]` |
| `BRENT_EFS` | EFS | efs | USD/bbl | 1000 bbl | +1·CL.DTD.BRENT `[BRN-DTD]`<br>-1·CL.FUT.BRENT `[B]` |
| `BRENT_ICE_FUT` | B | futures | USD/bbl | 1000 bbl | +1·CL.FUT.BRENT `[B]` |
| `BRENT_WTI_ARB` | BWA | inter_benchmark_spread | USD/bbl | 1000 bbl | +1·CL.FUT.BRENT `[B]`<br>-1·CL.FUT.WTI `[CL]` |
| `DATED_BRENT_SWAP` | BRN-DTD | physical_swap | USD/bbl | 1000 bbl | +1·CL.DTD.BRENT `[BRN-DTD]` |
| `DUBAI_FUT` | DUB | futures | USD/bbl | 1000 bbl | +1·CL.FUT.DUBAI `[DUB]` |
| `LLS_DIFF` | LLS | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.LLS `[LLS]` |
| `MARS_DIFF` | MRS | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.MARS `[MRS]` |
| `URALS_DIFF` | URD | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.URALS `[URD]` |
| `URALS_FIXED` | URL | fixed_price | USD/bbl | 1000 bbl | +1·CL.DTD.BRENT `[BRN-DTD]`<br>+1·CL.LOC.URALS `[URD]` |
| `WCS_DIFF` | WCC | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.WCS `[WCC]` |
| `WTI_HOUSTON_DIFF` | HCL | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.HOUSTON_WTI `[HCL]` |
| `WTI_ICE_FUT` | T | futures | USD/bbl | 1000 bbl | +1·CL.FUT.WTI `[CL]` |
| `WTI_MIDLAND_DIFF` | FF | locational_diff | USD/bbl | 1000 bbl | +1·CL.LOC.MIDLAND_WTI `[FF]` |
| `WTI_MIDLAND_FIXED` | MEH | fixed_price | USD/bbl | 1000 bbl | +1·CL.FUT.WTI `[CL]`<br>+1·CL.LOC.MIDLAND_WTI `[FF]` |
| `WTI_NYMEX_FUT` | CL | futures | USD/bbl | 1000 bbl | +1·CL.FUT.WTI `[CL]` |

## Emissions

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `CCA_FUT` | CCA | futures | USD/tCO2e | 1000 tCO2e | +1·EM.CCA `[CCA]` |
| `EUA_FUT` | EUA | futures | EUR/tCO2e | 1000 tCO2e | +1·EM.EUA `[EUA]` |
| `EUA_UKA_SPREAD` | EUK | scheme_spread | EUR/tCO2e | 1000 tCO2e | +1·EM.EUA `[EUA]`<br>-1·EM.UKA `[UKA]` |
| `RGGI_FUT` | RGI | futures | USD/tCO2e | 1000 tCO2e | +1·EM.RGGI `[RGI]` |
| `UKA_FUT` | UKA | futures | GBP/tCO2e | 1000 tCO2e | +1·EM.UKA `[UKA]` |

## Natural Gas

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `ALGONQUIN_BASIS` | ALG | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.ALGONQUIN `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `CHICAGO_BASIS` | CHB | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.CHICAGO `[CHBI]`<br>-1·NG.FUT.HH `[NG]` |
| `CHICAGO_INDEX` | CHBI | index_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.CHICAGO `[CHBI]` |
| `CHICAGO_SWING` | CHBS | swing_swap | USD/MMBtu | 2500 MMBtu | +1·NG.GDD.CHICAGO `[CHBS]` |
| `DOMINION_SOUTH_BASIS` | DOM | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.DOMINION_SOUTH `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `HH_IFERC_IDX` | IN | index_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.HH `[IN]` |
| `HH_LD1_FIN` | H | fixed_price | USD/MMBtu | 2500 MMBtu | +1·NG.FUT.HH `[NG]` |
| `HH_NYMEX_FUT` | NG | futures | USD/MMBtu | 10000 MMBtu | +1·NG.FUT.HH `[NG]` |
| `HH_PEN_FIN` | HP | fixed_price | USD/MMBtu | 2500 MMBtu | +1·NG.FUT.HH `[NG]` |
| `HH_SWING` | HSW | swing_swap | USD/MMBtu | 2500 MMBtu | +1·NG.GDD.HH `[HSW]` |
| `HSC_BASIS` | HSC | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.HSC `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `MALIN_BASIS` | MAL | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.MALIN `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `NBP_FUT` (S2F) | M | futures | GBp/therm | 1000 therm/day | +1·NG.FUT.NBP `[M]` |
| `OPAL_BASIS` | OPL | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.OPAL `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `PEG_FUT` | PEG | futures | EUR/MWh | 1 MW | +1·NG.FUT.PEG `[PEG]` |
| `PEG_TTF_BASIS` | PEGTTF | basis_swap | EUR/MWh | 1 MW | +1·NG.FUT.PEG `[PEG]`<br>-1·NG.FUT.TTF `[TFM]` |
| `PSV_FUT` | PSV | futures | EUR/MWh | 1 MW | +1·NG.FUT.PSV `[PSV]` |
| `SOCAL_BORDER_BASIS` | SCB | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.SOCAL_BORDER `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `TETCO_M2_BASIS` | TM2 | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TETCO_M2 `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `TETCO_M3_BASIS` | TM3 | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TETCO_M3 `[TM3I]`<br>-1·NG.FUT.HH `[NG]` |
| `TETCO_M3_FIXED` | TM3F | fixed_price | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TETCO_M3 `[TM3I]` |
| `TETCO_M3_INDEX` | TM3I | index_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TETCO_M3 `[TM3I]` |
| `TETCO_M3_SWING` | TM3S | swing_swap | USD/MMBtu | 2500 MMBtu | +1·NG.GDD.TETCO_M3 `[TM3S]` |
| `THE_FUT` (S2F) | THE | futures | EUR/MWh | 1 MW | +1·NG.FUT.THE `[THE]` |
| `THE_TTF_BASIS` | THETTF | basis_swap | EUR/MWh | 1 MW | +1·NG.FUT.THE `[THE]`<br>-1·NG.FUT.TTF `[TFM]` |
| `TRANSCO_Z5_BASIS` | Z5 | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TRANSCO_Z5 `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `TRANSCO_Z6_NONNY_BASIS` | Z6N | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TRANSCO_Z6_NONNY `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `TRANSCO_Z6_NY_BASIS` | TZ6N | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.TRANSCO_Z6_NY `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `TTF_DA_INDEX` (S2F) | TFD | index_swap | EUR/MWh | 1 MW | +1·NG.IDX.TTF_DA `[TFD]` |
| `TTF_FUT` (S2F) | TFM | futures | EUR/MWh | 1 MW | +1·NG.FUT.TTF `[TFM]` |
| `TTF_NBP_BASIS` | TTFNBP | basis_swap | EUR/MWh | 1 MW | +1·NG.FUT.TTF `[TFM]`<br>-1·NG.FUT.NBP `[M]` |
| `WAHA_BASIS` | WAH | basis_swap | USD/MMBtu | 2500 MMBtu | +1·NG.IDX.WAHA `[?]`<br>-1·NG.FUT.HH `[NG]` |
| `WAHA_SWING` | WAHS | swing_swap | USD/MMBtu | 2500 MMBtu | +1·NG.GDD.WAHA `[WAHS]` |
| `ZTP_FUT` | ZTP | futures | EUR/MWh | 1 MW | +1·NG.FUT.ZTP `[ZTP]` |

## Ngls

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `ETHANE_MB` | C0 | physical_swap | USD/gal | 42000 gal | +1·NGL.ETHANE.MB `[C0]` |
| `I_BUTANE_MB` | E0 | physical_swap | USD/gal | 42000 gal | +1·NGL.ISO_BUTANE.MB `[E0]` |
| `NAT_GASOLINE_MB` | F0 | physical_swap | USD/gal | 42000 gal | +1·NGL.NATURAL_GASOLINE.MB `[F0]` |
| `N_BUTANE_MB` | D0 | physical_swap | USD/gal | 42000 gal | +1·NGL.NORMAL_BUTANE.MB `[D0]` |
| `PROPANE_CONWAY` | B1 | physical_swap | USD/gal | 42000 gal | +1·NGL.PROPANE.CONWAY `[B1]` |
| `PROPANE_MB` | B0 | physical_swap | USD/gal | 42000 gal | +1·NGL.PROPANE.MB `[B0]` |
| `PROPANE_MB_CON_SPREAD` | BCS | locational_diff | USD/gal | 42000 gal | +1·NGL.PROPANE.MB `[B0]`<br>-1·NGL.PROPANE.CONWAY `[B1]` |

## Power

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `CAISO_NP15_PEAK_FUT` | NP15 | power_block_future | USD/MWh | 5 MW | +1·PWR.CAISO.NP15.PEAK `[NP15]` |
| `CAISO_SP15_PEAK_FUT` | SP15 | power_block_future | USD/MWh | 5 MW | +1·PWR.CAISO.SP15.PEAK `[SP15]` |
| `DE_BASE_FUT` (S2F) | DEB | power_block_future | EUR/MWh | 1 MW | +1·PWR.DE.BASE `[DEB]` |
| `DE_PEAK_FUT` (S2F) | DEP | power_block_future | EUR/MWh | 1 MW | +1·PWR.DE.PEAK `[DEP]` |
| `DE_PEAK_OFFPEAK_SPREAD` | DEPO | power_spread | EUR/MWh | 1 MW | +1·PWR.DE.PEAK `[DEP]`<br>-1·PWR.DE.BASE `[DEB]` |
| `ERCOT_HOUSTON_NORTH_SPREAD` | EHN | power_spread | USD/MWh | 5 MW | +1·PWR.ERCOT.HOUSTON.PEAK `[EHH]`<br>-1·PWR.ERCOT.NORTH.PEAK `[ENH]` |
| `ERCOT_HOUSTON_PEAK_FUT` | EHH | power_block_future | USD/MWh | 5 MW | +1·PWR.ERCOT.HOUSTON.PEAK `[EHH]` |
| `ERCOT_NORTH_OFFPEAK_FUT` | ENL | power_block_future | USD/MWh | 2.5 MW | +1·PWR.ERCOT.NORTH.OFFPEAK `[ENL]` |
| `ERCOT_NORTH_PEAK_FUT` | ENH | power_block_future | USD/MWh | 5 MW | +1·PWR.ERCOT.NORTH.PEAK `[ENH]` |
| `ES_BASE_FUT` | ESB | power_block_future | EUR/MWh | 1 MW | +1·PWR.ES.BASE `[ESB]` |
| `FR_BASE_FUT` | FRB | power_block_future | EUR/MWh | 1 MW | +1·PWR.FR.BASE `[FRB]` |
| `FR_DE_BASE_SPREAD` | FRDE | power_spread | EUR/MWh | 1 MW | +1·PWR.FR.BASE `[FRB]`<br>-1·PWR.DE.BASE `[DEB]` |
| `ISONE_MASS_PEAK_FUT` | NEM | power_block_future | USD/MWh | 5 MW | +1·PWR.ISONE.MASS.PEAK `[NEM]` |
| `IT_BASE_FUT` | ITB | power_block_future | EUR/MWh | 1 MW | +1·PWR.IT.BASE `[ITB]` |
| `NYISO_J_PEAK_FUT` | JJP | power_block_future | USD/MWh | 5 MW | +1·PWR.NYISO.ZONEJ.PEAK `[JJP]` |
| `PJM_AD_PEAK_FUT` | PJMAD | power_block_future | USD/MWh | 5 MW | +1·PWR.PJM.AD.PEAK `[PJMAD]` |
| `PJM_NI_PEAK_FUT` | PJMNI | power_block_future | USD/MWh | 5 MW | +1·PWR.PJM.NI.PEAK `[PJMNI]` |
| `PJM_WEST_OFFPEAK_FUT` | M3 | power_block_future | USD/MWh | 2.5 MW | +1·PWR.PJM.WEST.OFFPEAK `[M3]` |
| `PJM_WEST_PEAK_FUT` | M2 | power_block_future | USD/MWh | 5 MW | +1·PWR.PJM.WEST.PEAK `[M2]` |
| `UK_BASE_FUT` | UKB | power_block_future | GBP/MWh | 1 MW | +1·PWR.UK.BASE `[UKB]` |

## Refined

| Spec key | ICE code | Type | Unit | Lot | Decomposition (legs w/ ICE codes) |
|---|---|---|---|---|---|
| `CRACK_321_WTI` | CRK321 | crack_spread | USD/bbl | 1000 bbl | +0.666667·RP.FUT.RBOB `[RB]`<br>+0.333333·RP.FUT.ULSD `[HO]`<br>-1·CL.FUT.WTI `[CL]` |
| `FUELOIL_35_BARGE` | FO35 | physical_swap | USD/mt | 1000 mt | +1·RP.FUT.FUELOIL_35 `[FO35]` |
| `GASOIL_BRENT_CRACK` | GBC | crack_spread | USD/bbl | 1000 bbl | +1·RP.FUT.GASOIL `[G]`<br>-1·CL.FUT.BRENT `[B]` |
| `GASOIL_FUT` | G | futures | USD/mt | 100 mt | +1·RP.FUT.GASOIL `[G]` |
| `HI5_SPREAD` | HI5 | quality_spread | USD/mt | 1000 mt | +1·RP.FUT.VLSFO `[VLS]`<br>-1·RP.FUT.FUELOIL_35 `[FO35]` |
| `JET_NWE_SWAP` | JTN | physical_swap | USD/mt | 100 mt | +1·RP.FUT.JET_NWE_BARGE `[JTN]` |
| `JET_USGC_SWAP` | JTG | physical_swap | USD/gal | 42000 gal | +1·RP.FUT.JET_USGC `[JTG]` |
| `NAPHTHA_BRENT_CRACK` | NBC | crack_spread | USD/bbl | 1000 bbl | +1·RP.FUT.NAPHTHA_NWE `[NAP]`<br>-1·CL.FUT.BRENT `[B]` |
| `NAPHTHA_NWE_SWAP` | NAP | physical_swap | USD/mt | 1000 mt | +1·RP.FUT.NAPHTHA_NWE `[NAP]` |
| `RBOB_BRENT_CRACK` | RBC | crack_spread | USD/bbl | 1000 bbl | +1·RP.FUT.RBOB `[RB]`<br>-1·CL.FUT.BRENT `[B]` |
| `RBOB_FUT` | RB | futures | USD/gal | 42000 gal | +1·RP.FUT.RBOB `[RB]` |
| `SING_GASOIL_DIFF` | SGO | locational_diff | USD/mt | 100 mt | +1·RP.LOC.GASOIL_SING `[SGO]` |
| `ULSD_BRENT_CRACK` | HBC | crack_spread | USD/bbl | 1000 bbl | +1·RP.FUT.ULSD `[HO]`<br>-1·CL.FUT.BRENT `[B]` |
| `ULSD_FUT` | HO | futures | USD/gal | 42000 gal | +1·RP.FUT.ULSD `[HO]` |
| `USGC_RBOB_DIFF` | GRB | locational_diff | USD/gal | 42000 gal | +1·RP.LOC.RBOB_USGC `[GRB]` |
| `USGC_ULSD_DIFF` | GHO | locational_diff | USD/gal | 42000 gal | +1·RP.LOC.ULSD_USGC `[GHO]` |
| `VLSFO_BARGE` | VLS | physical_swap | USD/mt | 1000 mt | +1·RP.FUT.VLSFO `[VLS]` |

## Structural Decomposition Patterns

These are applied at the **position** level (CSV columns), not as separate contracts — any contract above can carry them:

| Structure | CSV fields | Expands to |
|---|---|---|
| **Outright** | `tenor` | Single delivery month (factor legs at that month). |
| **Strip** | `tenor=CAL27` / `2026Q3` / `WIN26` | Equal position in each constituent month (e.g. CAL27 → 12 monthly legs). |
| **Calendar spread** | `structure=CAL_SPREAD`, `tenor`(front), `back_tenor` | +1 contract @ front month, −1 @ back month. |
| **Bullet option** | `structure=OPTION`, `opt_type`, `strike`, `vol`, `expiry_days`, `fwd` (or `delta_override`) | Δ × underlying monthly future (Black-76 delta). |
| **Calendar-spread option (CSO)** | `structure=CSO`, `tenor`(front), `back_tenor`, option fields | Δ × (+front − back). |


### Worked structural examples

- **TTF CAL-27 strip** → 12 legs of `NG.FUT.TTF` (Jan–Dec 2027), each scaled by that month's hours (744h Jan, 672h Feb, …).
- **Brent Dec26/Dec27 cal spread** → `+1000 bbl CL.FUT.BRENT @2026Dec`, `−1000 bbl CL.FUT.BRENT @2027Dec`.
- **TTF Mar-26 25-delta call** → Δ≈0.25 × `NG.FUT.TTF @2026Mar` (MWh × delta).
- **API2 Q1-26/Q2-26 CSO** → Δ × (`+COAL.API2 @Q1` − `COAL.API2 @Q2`).
- **TETCO M-3 basis** → `+NG.IDX.TETCO_M3 [TM3]`, `−NG.FUT.HH [NG]` — each leg with its own ICE code.
