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
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.csvline 275 setsminimum_price_variation = 0.025forGF: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 = 100correctly 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.MinimumPriceVariationonGFlands 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; onlyGFis off.Reproducing the Behavior
Suggested Fix
Change line 275 from
0.025to0.00025:This brings
GFin line withLE/HEand with the official CME spec ($0.00025/lb, $12.50/tick).System Information
master(commita2537513b).masterof QuantConnect/Lean.Checklist
master.