Overall Statistics |
Total Trades 21 Average Win 0.16% Average Loss -0.07% Compounding Annual Return -16.530% Drawdown 1.200% Expectancy -0.714 Net Profit -0.527% Sharpe Ratio -4.111 Loss Rate 92% Win Rate 8% Profit-Loss Ratio 2.43 Alpha -0.005 Beta -9.298 Annual Standard Deviation 0.036 Annual Variance 0.001 Information Ratio -4.523 Tracking Error 0.036 Treynor Ratio 0.016 Total Fees $28.06 |
import numpy as np from datetime import timedelta class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2018,7, 10) #Set Start Date self.SetEndDate(2018,7,20) #Set End Date self.SetCash(100000) #Set Strategy Cash self.AddEquity("SPY", Resolution.Minute) consolidator = TradeBarConsolidator(15) consolidator2 = TradeBarConsolidator(60) self._sma = SimpleMovingAverage(60) self._ema = ExponentialMovingAverage(15) self.RegisterIndicator("SPY", self._sma, consolidator) self.RegisterIndicator("SPY", self._ema, consolidator2) self.SubscriptionManager.AddConsolidator("SPY", consolidator) self.SubscriptionManager.AddConsolidator("SPY", consolidator2) self.Schedule.On(self.DateRules.EveryDay(),self.TimeRules.Every(timedelta(minutes=15)), self.Trade) def Trade(self): if self._ema.IsReady and self._sma.IsReady: if self._ema.Current.Value > self._sma.Current.Value: self if(self.Portfolio["SPY"].IsShort == True): self.Liquidate() self.SetHoldings("SPY",1) elif self._ema.Current.Value < self._sma.Current.Value: self.Log("short") if(self.Portfolio["SPY"].IsLong == True): self.Liquidate() self.SetHoldings("SPY",-1) def OnData(self, data): pass