Skip to content

Feeder Cattle (GF) futures tick size is 100x too large in symbol-properties-database #9492

@AlexCatarino

Description

@AlexCatarino

Expected Behavior

The CME Feeder Cattle (GF) futures contract should have a minimum price fluctuation of $0.00025 per pound (= $12.50 per tick on a 50,000 lb contract), matching the official CME contract specs and matching its peer livestock contracts Live Cattle (LE) and Lean Hogs (HE), which are quoted on the same per-pound dollar scale.

Actual Behavior

Data/symbol-properties/symbol-properties-database.csv line 275 sets minimum_price_variation = 0.025 for GF:

cme,GF,future,Feeder Cattle Futures,USD,50000.0,0.025,1.0,,1,100
cme,HE,future,Lean Hog Futures,USD,40000.0,0.00025,1.0,,1,100
cme,LE,future,Live Cattle Futures,USD,40000.0,0.00025,1.0,,1,100

That value is the tick expressed in cents per pound (0.025¢/lb), not the dollars-per-pound convention used by every other livestock entry. With price_magnifier = 100 correctly set, the per-contract tick value would resolve to 0.025 × 50,000 = $1,250, vs. the actual exchange tick value of $12.50 — off by a factor of 100.

Impact

Any algorithm that rounds target / stop / limit prices to Symbol.Properties.MinimumPriceVariation on GF lands on a price grid 100× coarser than the exchange grid. Orders end up at unreachable prices or get rejected by the broker. Discovered while running TradeStation live with a stop/target plugin — LE, HE, JPY futures, etc. all behave correctly; only GF is off.

Reproducing the Behavior

from QuantConnect import *
from QuantConnect.Securities.Future import Futures

algo = QCAlgorithm()
gf = algo.add_future(Futures.Meats.FEEDER_CATTLE).symbol
le = algo.add_future(Futures.Meats.LIVE_CATTLE).symbol
he = algo.add_future(Futures.Meats.LEAN_HOGS).symbol

for s in (gf, le, he):
    props = algo.securities[s].symbol_properties
    print(s.id.symbol, "tick=", props.minimum_price_variation,
          "tick_value=", props.minimum_price_variation * props.contract_multiplier)
# GF tick= 0.025  tick_value= 1250.00   <-- wrong
# LE tick= 0.00025 tick_value= 10.00
# HE tick= 0.00025 tick_value= 10.00

Suggested Fix

Change line 275 from 0.025 to 0.00025:

-cme,GF,future,Feeder Cattle Futures,USD,50000.0,0.025,1.0,,1,100
+cme,GF,future,Feeder Cattle Futures,USD,50000.0,0.00025,1.0,,1,100

This brings GF in line with LE / HE and with the official CME spec ($0.00025/lb, $12.50/tick).

System Information

  • Discovered against master (commit a2537513b).
  • Same row is present in current master of QuantConnect/Lean.

Checklist

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions