Overall Statistics |
Total Trades 570 Average Win 1.43% Average Loss -1.30% Compounding Annual Return 3.502% Drawdown 28.800% Expectancy 0.049 Net Profit 13.900% Sharpe Ratio 0.264 Loss Rate 50% Win Rate 50% Profit-Loss Ratio 1.11 Alpha 0.035 Beta 0.057 Annual Standard Deviation 0.148 Annual Variance 0.022 Information Ratio -0.196 Tracking Error 0.182 Treynor Ratio 0.687 Total Fees $12363.39 |
# # QuantConnect Basic Template: # Fundamentals to using a QuantConnect algorithm. # # You can view the QCAlgorithm base class on Github: # https://github.com/QuantConnect/Lean/tree/master/Algorithm # import numpy as np class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.uso = self.AddEquity('UCO', Resolution.Minute) #United States Oil Fund (USO) etf, data from 2006-04-10 # Set the cash we'd like to use for our backtest #Proshares Ultra Bloomber Crude Oil (UCO) etf, data from 2008-11-25 # This is ignored in live trading self.SetCash(100000) self.SetStartDate(2013,11,27) #start one day after launch as we need one day of history #2008,11,26 self.SetEndDate(2017,9,1) #2013,11,26 #schedule opening function every day 15 minutes before market close self.Schedule.On(self.DateRules.EveryDay('UCO'), self.TimeRules.BeforeMarketClose('UCO', 165), Action(self.trade_fn)) def trade_fn(self): uso_hist = self.History('UCO', 1, Resolution.Daily) for slice in uso_hist: self.close = slice.Close y_close = self.close price = self.Securities['UCO'].Price dec_change = (price - y_close) / y_close if dec_change >= 0.035: self.SetHoldings('UCO', 1) holdings = self.Portfolio['UCO'].Quantity if holdings != 0: self.MarketOnCloseOrder('UCO', -holdings) if dec_change <= -0.035: self.SetHoldings('UCO', -1) holdings = self.Portfolio['UCO'].Quantity if holdings != 0: self.MarketOnCloseOrder('UCO', -holdings) def OnData(self, slice): pass