| 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.327 Tracking Error 0.186 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
#region imports
from AlgorithmImports import *
#endregion
class NadionTransdimensionalAutosequencers(QCAlgorithm):
symbol_data_by_symbol = {}
def Initialize(self):
self.SetStartDate(2021, 9, 29) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
self.UniverseSettings.MinimumTimeInUniverse = timedelta(minutes=1)
self.UniverseSettings.Resolution=Resolution.Daily
self.SetUniverseSelection( QC500UniverseSelectionModel() )
self.cohr = self.Symbol("COHR R735QTJ8XC9X")
self.dre = self.Symbol("DRE R735QTJ8XC9X")
def OnData(self, data):
for kvp in data.Delistings:
if kvp.Value.Type == DelistingType.Warning:
continue
symbol = kvp.Key
if symbol in [self.cohr, self.dre]:
self.Debug(f"Delisted {symbol} at {self.Time}")
def OnSecuritiesChanged(self, changes):
for security in changes.AddedSecurities:
self.symbol_data_by_symbol[security.Symbol] = 1
if security.Symbol in [self.cohr, self.dre]:
self.Debug(f"Added: {security.Symbol}")
for security in changes.RemovedSecurities:
symbol_data = self.symbol_data_by_symbol.pop(security.Symbol, None)
if symbol_data is None:
self.Debug(f"Popped None")
if security.Symbol in [self.cohr, self.dre]:
self.Debug(f"Removed: {security.Symbol}")
self.Debug(f"ActiveSecurities: {len(self.ActiveSecurities)}; symbol_data_by_symbol {len(self.symbol_data_by_symbol)}")
if len(self.symbol_data_by_symbol) != len(self.ActiveSecurities):
a = set(list(self.symbol_data_by_symbol.keys()))
b = set([s for s in self.ActiveSecurities.Keys])
for symbol in list(a.difference(b)):
self.Debug(f"{self.Time} - {symbol} is in symbol_data_by_symbol but not ActiveSecurities")