Overall Statistics |
Total Trades 9 Average Win 0.04% Average Loss -0.02% Compounding Annual Return 0.920% Drawdown 0.100% Expectancy 0.167 Net Profit 0.020% Sharpe Ratio 0.921 Probabilistic Sharpe Ratio 49.455% Loss Rate 67% Win Rate 33% Profit-Loss Ratio 2.50 Alpha -0.004 Beta 0.022 Annual Standard Deviation 0.004 Annual Variance 0 Information Ratio -1.959 Tracking Error 0.159 Treynor Ratio 0.153 Total Fees $9.00 Estimated Strategy Capacity $630000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
class FocusedFluorescentOrangeDragonfly(QCAlgorithm): def Initialize(self): self.SetStartDate(2013, 10, 4) # Set Start Date self.SetEndDate(2013, 10, 11) # Set Start Date self.SetCash(1000000) # Set Strategy Cash self.UniverseSettings.Resolution = Resolution.Minute self.UniverseSettings.Leverage = 1 self.UniverseSettings.FillForward = True self.UniverseSettings.MinimumTimeInUniverse = timedelta(seconds=1) self.AddUniverseSelection(ScheduledUniverseSelectionModel( self.DateRules.EveryDay(), self.TimeRules.At(0, 15, TimeZones.NewYork), self.FuncTest # selection function in algorithm. )) self.i = 0 def FuncTest(self, dateTime): self.Log("*"*10) self.i += 1 self.Log("i:{}".format(self.i)) if self.i % 2 == 1: self.Log("Universe added SPY") return [Symbol.Create("SPY", SecurityType.Equity, Market.USA)] else: self.Log("Universe removed SPY") return [] def OnData(self, data): if not (data.Time.hour == 9 and data.Time.minute == 32): return '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' self.Log("Calling OnData") self.Log(self.Time) self.Log([k.ToString() for k in data.Keys]) self.Log([k.ToString() for k in self.ActiveSecurities.Keys]) if data.ContainsKey("SPY R735QTJ8XC9X"): self.Log(str(self.Securities["SPY R735QTJ8XC9X"].HasData)) ticket = self.LimitOrder("SPY R735QTJ8XC9X", 100, 370) self.Log(ticket.Status) else: self.Log("Spy not in data object") def OnSecuritiesChanged(self, changes): self.Log("added:{}".format([sec.Symbol.ToString() for sec in changes.AddedSecurities])) self.Log("removed:{}".format([sec.Symbol.ToString() for sec in changes.RemovedSecurities])) for c in changes.AddedSecurities: sym = c.Symbol ticket = self.LimitOrder(sym, 100, 370) self.Log(ticket.Status) for c in changes.RemovedSecurities: sym = c.Symbol if c.Invested: self.Liquidate(sym) self.Log("liquidated " + sym.ToString()) self.Log("Active Securities:{}".format([k.ToString() for k in self.ActiveSecurities.Keys]))