Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Probabilistic Sharpe Ratio
0%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset

class BasicTemplateOptionsHistoryAlgorithm(QCAlgorithm):
    
    def Initialize(self):
        self.SetStartDate(2015, 12, 24)
        self.SetEndDate(2015, 12, 24)
        self.SetCash(1000000)
        equity = self.AddEquity("GOOG", Resolution.Daily)
        option = self.AddOption("GOOG", Resolution.Daily)
        equity.SetDataNormalizationMode(DataNormalizationMode.Raw)
        option.PriceModel = OptionPriceModels.CrankNicolsonFD()
        option.SetFilter(-2,2, timedelta(0), timedelta(180))
        self.SetBenchmark(equity.Symbol)
        self.SetWarmUp(30, Resolution.Daily)
        

    def OnData(self,slice):
        if self.IsWarmingUp: return
        
        if not self.Portfolio.Invested:
            for chain in slice.OptionChains:
                underlying = self.Securities[chain.Key.Underlying]
                for contract in chain.Value:
                    self.Log("{0},Bid={1} Ask={2} Last={3} OI={4} sigma={5:3f} NPV={6:3f} \
                              delta={7:3f} gamma={8:3f} vega={9:3f} beta={10:2f} theta={11:2f} IV={12:2f}".format(
                    contract.Symbol.Value,
                    contract.BidPrice,
                    contract.AskPrice,
                    contract.LastPrice,
                    contract.OpenInterest,
                    underlying.VolatilityModel.Volatility,
                    contract.TheoreticalPrice,
                    contract.Greeks.Delta,
                    contract.Greeks.Gamma,
                    contract.Greeks.Vega,
                    contract.Greeks.Rho,
                    contract.Greeks.Theta / 365,
                    contract.ImpliedVolatility))
                    

    def OnOrderEvent(self, orderEvent):
        self.Log(str(orderEvent))
        

    def OnSecuritiesChanged(self, changes):
        for change in changes.AddedSecurities:
            history = self.History(change.Symbol, 10, Resolution.Hour).sort_index(level='time', ascending=False)[:3]

            for i in range(len(history)):
                self.Log("History: " + str(history.iloc[i].name[0]) + ": " + str(history.iloc[i].name[1]) + " > " + str(history.iloc[i]['close']))