| 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']))