Skip to content

Incorrect Monthly FOP in Currency Futures #9074

@AlexCatarino

Description

@AlexCatarino

Expected Behavior

Only quarterly contracts (Mar, Jun, Sep, Dec) has FOP

Actual Behavior

We are FOP for non-quarterly contracts:
2019-01-02 09:31:00 : | 6A14F19 :: 20190104
2019-01-02 09:31:00 : | 6A15G19 :: 20190208
2019-01-02 09:31:00 : | 6A18H19 :: 20190308
FOP expiring on 20190104, 20190208 and 20190308 refers to 6A18H19, not F19 and G19.

See https://www.cmegroup.com/markets/fx/g10/euro-fx.contractSpecs.options.html

Potential Solution

Reproducing the Problem

class CurrencyFutureAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        self.set_start_date(2019,1, 1)
        self.set_end_date(2019,1, 15)
        self._future = self.add_future("6A")
        self._future.set_filter(0,92)
        self.add_future_option(self._future, option_filter=lambda x: x.calls_only().strikes(0,1))
        self._day = 0

    def on_data(self, slice: Slice) -> None:
        if self.time.day == self._day:
            return
        for symbol, chain in slice.option_chains.items():
            self.log(f'{symbol.underlying.value} :: {",".join(sorted(set([f"""{x.expiry:%Y%m%d}""" for x in chain])))}')
            self._day = self.time.day

Checklist

  • I have completely filled out this template
  • I have confirmed that this issue exists on the current master branch
  • I have confirmed that this is not a duplicate issue by searching issues
  • I have provided detailed steps to reproduce the issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions