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

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions