| Overall Statistics |
|
Total Trades 13 Average Win 3.29% Average Loss -1.90% Compounding Annual Return 2148.311% Drawdown 6.400% Expectancy -0.090 Net Profit 16.592% Sharpe Ratio 3.626 Probabilistic Sharpe Ratio 83.279% Loss Rate 67% Win Rate 33% Profit-Loss Ratio 1.73 Alpha 2.476 Beta 0.322 Annual Standard Deviation 0.687 Annual Variance 0.472 Information Ratio 3.55 Tracking Error 0.688 Treynor Ratio 7.736 Total Fees $0.00 |
class ParticleVerticalAtmosphericScrubbers(QCAlgorithm):
def Initialize(self):
self.tickerOne = "AMD"
self.tickerTwo = "SPY"
self.SetStartDate(2017, 1, 16) # Set Start Date
self.SetEndDate(2017, 2, 2) # Set End Date
self.SetCash(1000) # Set Strategy Cash
self.AddEquity("AMD", Resolution.Minute, extendedMarketHours = True)
self.Securities[self.tickerOne].FeeModel = ConstantFeeModel(0)
#self.SetDataNormalizationMode(DataNormalizationMode.Raw)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(15, 59), Action(self.purchase))
def OnData(self, data):
if self.Portfolio.Invested and self.Securities[self.tickerOne].Price <= self.sellPrice:
self.LimitOrder(self.tickerOne, -self.Portfolio[self.tickerOne].Quantity, self.Securities[self.tickerOne].Price*.5)
def purchase(self):
self.sellPrice = self.Securities[self.tickerOne].Price * 0.991
self.dailyClose = self.Securities[self.tickerOne].Price
if not self.Portfolio.Invested:
self.SetHoldings(self.tickerOne, 1)
def OnOrderEvent(self, fill):
if fill.Status == 3:
if fill.Direction == 0:
direction = "Buy"
self.Debug(str(direction) + " " + str(fill.FillQuantity) + " @ " + str(fill.FillPrice))
else:
direction = "Sell"
self.Debug(str(direction) + " " + str(fill.FillQuantity) + " @ " +str(fill.FillPrice) + " Loss: " +
str( (fill.FillPrice-self.dailyClose)/self.dailyClose ))