Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
-99.919%
Drawdown
53.000%
Expectancy
0
Net Profit
-29.584%
Sharpe Ratio
-2.699
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-3.979
Beta
0.778
Annual Standard Deviation
1.509
Annual Variance
2.278
Information Ratio
-2.62
Tracking Error
1.509
Treynor Ratio
-5.238
Total Fees
$4.25
class DynamicOptimizedThrustAssembly(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2019, 2, 19)  # Set Start Date
        self.SetEndDate(2019, 3, 10) 
        self.SetCash(100000)  # Set Strategy Cash
        self.option = self.AddOption("GOOG")
        self.option_symbol = self.option.Symbol
        self.test_val=0

        # set our strike/expiry filter for this option chain
        self.option.SetFilter(-2, +2, timedelta(0), timedelta(180))


    def OnData(self, data):
        chain =data.OptionChains.GetValue(self.option_symbol)
        if chain is None:
            return

        # we sort the contracts to find at the money (ATM) contract with farthest expiration
        contracts = sorted(sorted(sorted(chain, \
            key = lambda x: abs(chain.Underlying.Price - x.Strike)), \
            key = lambda x: x.Expiry, reverse=True), \
            key = lambda x: x.Right, reverse=True)

        # if found, trade it
        if len(contracts) == 0: return
        if self.test_val==0:
            symbol1 = contracts[0].Symbol
            symbol2 = contracts[1].Symbol
            self.SetHoldings(symbol1,1)
            self.SetHoldings(symbol2,-1)
            self.test_val=self.test_val+1