Overall Statistics |
Total Trades 4334 Average Win 0.01% Average Loss -0.03% Compounding Annual Return 25.819% Drawdown 9.500% Expectancy 0.086 Net Profit 19.940% Sharpe Ratio 1.514 Loss Rate 18% Win Rate 82% Profit-Loss Ratio 0.32 Alpha 0.208 Beta -0.058 Annual Standard Deviation 0.13 Annual Variance 0.017 Information Ratio -0.044 Tracking Error 0.184 Treynor Ratio -3.355 Total Fees $4418.91 |
from Execution.ImmediateExecutionModel import ImmediateExecutionModel from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel class TransdimensionalResistanceAtmosphericScrubbers(QCAlgorithm): def Initialize(self): # Set Start Date so that backtest has 5+ years of data self.SetStartDate(2019, 1, 1) # No need to set End Date as the final submission will be tested # up until the review date # Set $1m Strategy Cash to trade significant AUM self.SetCash(1000000) # Add a relevant benchmark, with the default being SPY self.AddEquity('SPY', Resolution.Daily) self.SetBenchmark('SPY') # Use the Alpha Streams Brokerage Model, developed in conjunction with # funds to model their actual fees, costs, etc. # Please do not add any additional reality modelling, such as Slippage, Fees, Buying Power, etc. self.SetBrokerageModel(AlphaStreamsBrokerageModel()) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel()) self.SetUniverseSelection(TechnologyETFUniverse()) self.universe = { } self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 0), self.ResetTrades) def OnData(self, data): '''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 ''' def ResetTrades(self): for symbol, assetData in self.universe.items(): self.EmitInsights(Insight.Price(symbol, timedelta(1), InsightDirection.Up)) # Initializing ETF Universe Securities def OnSecuritiesChanged(self, changes): for s in changes.AddedSecurities: if s.Symbol not in self.universe: self.universe[s.Symbol] = s.Symbol