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