← All posts

Why your futures alert fired on the wrong contract

If you've automated a futures strategy and had an order land on a contract you weren't expecting, there's a good chance the cause is a continuous symbol — something like MNQ1! or ES1! — rather than an explicit contract month.

What a continuous symbol actually is

Charting platforms stitch a sequence of individual contracts into one continuous line so you get an uninterrupted chart across expirations. It's genuinely useful for looking at history. The problem is that "which underlying contract is this symbol pointing at right now" is a judgment call, and different platforms make that call differently — some roll on volume, some on a fixed number of days before expiry.

Why that matters for automation

A chart alert doesn't send "the December contract" — it sends whatever symbol the platform currently maps the continuous ticker to. If your charting platform and your execution venue resolve that mapping on different schedules, they can briefly disagree about which contract is front-month, particularly in the days right around expiration. An order can land on the contract that's about to expire instead of the one you meant.

The fix is boring and reliable

Use the explicit contract symbol — MNQZ2026 rather than MNQ1! — in the alert itself. It's slightly more maintenance, since you update the symbol yourself a few times a year, but it removes the ambiguity entirely. You always know exactly which contract an order was meant for, because you wrote it down.

A rollover habit worth having

Put contract expirations on a calendar. A few days out, decide explicitly whether you're closing the position, rolling it manually to the new contract, or letting a scheduled alert handle it. Automation doesn't roll a contract for you — that decision stays yours either way, so it might as well be a deliberate one.