fix: add EAD future-option expiry definition#9446
Merged
Romazes merged 1 commit intoQuantConnect:masterfrom Apr 30, 2026
Merged
fix: add EAD future-option expiry definition#9446Romazes merged 1 commit intoQuantConnect:masterfrom
Romazes merged 1 commit intoQuantConnect:masterfrom
Conversation
- map EAD (EUR/AUD) FOP to SecondFridayBeforeThirdWednesdayOfContractMonth - prior fallback to the EAD HMUZ-only future expiry collapsed serial-month FOPs (e.g. EADN6) into their underlying quarterly Symbol
Martin-Molinero
approved these changes
Apr 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds an
EAD(Euro/Australian Dollar Cross Rate) entry toFuturesOptionsExpiryFunctionsso the FOP expires per CME spec - the second Friday prior to the third Wednesday of the contract month - instead of falling back to the underlying future's quarterly (HMUZ) expiry.CME contract spec: https://www.cmegroup.com/markets/fx/cross-rates/euro-fx-australian-dollar.contractSpecs.options.html
Related PR(s)
N/A
Related Issue
N/A
Motivation and Context
Motivation and Context
CME lists EAD futures only on quarterly months (Mar/Jun/Sep/Dec), but lists EAD options on those quarters plus 3 serial months. Lean had no EAD entry in
_futuresOptionExpiryFunctions, so the FOP expiry fell back to the future's rule, which rolls any non-quarterly month forward to the next quarter. The serialEADN6(Jul) and the quarterlyEADU6(Sep) ended up with the same expiry and strike, so they became the same LeanSymbol.The AlgoSeek converter then failed when both tars were processed on the same trade date:
CME spec — Euro/Australian Dollar (EUR/AUD) Monthly Options:
Requires Documentation Change
No.
How Has This Been Tested?
Verified with two new
MapsCorrectlycases in Lean.DataSource.AlgoSeekFuturesAlgoSeekFuturesOptionsReaderTest:EADU6 P1640(Sep 2026, quarterly) -> FOP expiry 2026-09-04, underlying U6 future expires 2026-09-14.EADN6 P1640(Jul 2026, serial) -> FOP expiry 2026-07-02 (Jul 3 is observed Independence Day, shifted back one business day), underlying rolls to U6.Both resolve to distinct Lean Symbols, confirming the file clash is gone.
Types of changes
Checklist:
bug-<issue#>-<description>orfeature-<issue#>-<description>