Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0.328 Tracking Error 0.187 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
#region imports from AlgorithmImports import * #endregion from Execution.ImmediateExecutionModel import ImmediateExecutionModel from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel class NadionTransdimensionalAutosequencers(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 9, 29) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel()) self.UniverseSettings.Resolution=Resolution.Daily self.SetUniverseSelection( QC500UniverseSelectionModel() ) self.SetAlpha(MyAlpha()) class MyAlpha(AlphaModel): securities = [] symbol_data_by_symbol = {} def Update(self, algorithm, data): return [] def OnSecuritiesChanged(self, algorithm, changes): algorithm.Log("Called") algorithm.Log(len(changes.RemovedSecurities)) algorithm.Log(len(changes.AddedSecurities)) for security in changes.AddedSecurities: self.symbol_data_by_symbol[security.Symbol] = SymbolData(algorithm, security.Symbol) #algorithm.Log(f"{algorithm.Time}: Added {security.Symbol}") for security in changes.RemovedSecurities: if security.Symbol in self.symbol_data_by_symbol: symbol_data = self.symbol_data_by_symbol.pop(security.Symbol, None) if symbol_data: symbol_data.dispose() #algorithm.Log(f"{algorithm.Time}: Removed {security.Symbol}") if security in self.securities: self.securities.remove(security) if security.Invested: self.Liquidate(security.Symbol, "Removed from Universe") self.securities.extend(changes.AddedSecurities) algorithm.Log(len(self.securities)) algorithm.Log(len(algorithm.ActiveSecurities)) class SymbolData: def __init__(self, algorithm, symbol): self.algorithm = algorithm self.symbol = symbol self.indicator = SimpleMovingAverage(20) self.consolidator = TradeBarConsolidator(1) algorithm.SubscriptionManager.AddConsolidator(symbol, self.consolidator) algorithm.RegisterIndicator(symbol, self.indicator, self.consolidator) algorithm.WarmUpIndicator(self.symbol, self.indicator) def dispose(self): self.algorithm.SubscriptionManager.RemoveConsolidator(self.symbol, self.consolidator)