About US Future Options

The US Future Options dataset by AlgoSeek provides Option data on US Future contracts, including prices, strikes, expires, implied volatility, and Greeks. The data covers 15 Monthly Future contracts, starts in January 2012, and is delivered on a minute frequency. This dataset is created by monitoring the trading activity on the CME, CBOT, NYMEX, and COMEX markets.


About AlgoSeek

AlgoSeek is a leading historical intraday US market data provider offering the most comprehensive and detailed market data and analytics products in the financial industry covering equities, futures, options, cash forex, and cryptocurrencies. AlgoSeek data is built for quantitative trading and machine learning. For more information about AlgoSeek, visit algoseek.com.


About QuantConnect

QuantConnect was founded in 2012 to serve quants everywhere with the best possible algorithmic trading technology. Seeking to disrupt a notoriously closed-source industry, QuantConnect takes a radically open-source approach to algorithmic trading. Through the QuantConnect web platform, more than 50,000 quants are served every month.


Algorithm Example

class FutureOptionDataAlgorithm(QCAlgorithm):
    
    option_contract_by_underlying_future_contract = {}
    
    def Initialize(self) -> None:
        self.SetStartDate(2020, 1, 28)
        self.SetEndDate(2020, 6, 1)
        self.SetCash(100000)

        # Requesting data
        gold_futures = self.AddFuture(Futures.Metals.Gold, Resolution.Minute)
        gold_futures.SetFilter(0, 90)
        self.AddFutureOption(gold_futures.Symbol, lambda universe: universe.Strikes(-5, +5)
                                                                           .CallsOnly()
                                                                           .BackMonth()
                                                                           .OnlyApplyFilterAtMarketOpen())
        
    def OnData(self, slice: Slice) -> None:
        for kvp in slice.OptionChains:
            # Liquidate underlying Future contract after Option assignment
            underlying_future_contract = kvp.Key.Underlying
            if self.Portfolio[underlying_future_contract].Invested:
                self.Liquidate(underlying_future_contract)
                self.option_contract_by_underlying_future_contract.pop(underlying_future_contract)
            
            chain = kvp.Value
            chain = [contract for contract in chain if self.Securities[contract.Symbol].IsTradable]
            
            # Continue if chain is empty or already invested in an Option on this Futures contract
            if not chain or underlying_future_contract in self.option_contract_by_underlying_future_contract:
                continue

            # Select the Option contract with the lowest strike price
            contract = sorted(chain, key = lambda x: x.Strike)[0]
            
            self.MarketOrder(contract.Symbol, 1)
            self.option_contract_by_underlying_future_contract[kvp.Key.Underlying] = contract
        
        
    def OnSecuritiesChanged(self, changes: SecurityChanges) -> None:
        for security in changes.AddedSecurities:
            if security.Type == SecurityType.FutureOption:
                # Historical data
                history = self.History(security.Symbol, 10, Resolution.Minute)
                self.Debug(f"We got {len(history)} from our history request for {security.Symbol}")

Example Applications

The US Future Options dataset enables you to accurately design Future Option strategies. Examples include the following strategies: