Overall Statistics |
Total Trades 27 Average Win 0.08% Average Loss -0.02% Compounding Annual Return 10.704% Drawdown 0.600% Expectancy 3.097 Net Profit 0.830% Sharpe Ratio 4.282 Loss Rate 31% Win Rate 69% Profit-Loss Ratio 4.92 Alpha 0.04 Beta 0.28 Annual Standard Deviation 0.024 Annual Variance 0.001 Information Ratio -2.558 Tracking Error 0.049 Treynor Ratio 0.374 Total Fees $27.32 |
import numpy as np class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): # Set the cash we'd like to use for our backtest # This is ignored in live trading self.SetCash(100000) # Start and end dates for the backtest. # These are ignored in live trading. self.SetStartDate(2017,1,1) self.SetEndDate(2017,1,30) # Add securities you'd like to see self.securities = ["SPY","QQQ"] # Get the data from tickers self.SMA1 = [] self.SMA5 = [] for security in self.securities: self.AddEquity(security, Resolution.Minute) self.SMA1.append(self.SMA(security, 1, Resolution.Daily)) self.SMA5.append(self.SMA(security, 5, Resolution.Daily)) self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 30), Action(self.Rebalance)) def OnData(self, slice): pass def Rebalance(self): for i in range(2): self.Debug("{0} : sma1: {1} : sma5: {2}".format(self.securities[i], self.SMA1[i].Current.Value,self.SMA5[i].Current.Value)) if self.SMA1[i].Current.Value > self.SMA5[i].Current.Value: self.SetHoldings(self.securities[i], 0.25) elif self.Portfolio.Invested: self.Liquidate()