| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 1000000 End Equity 1000000 Net Profit 0% Sharpe Ratio 0 Sortino 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 -2.216 Tracking Error 0.101 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
from AlgorithmImports import *
class LiquidUniverseSelection(QCAlgorithm):
filteredByPrice = None
hasPrintedTopStocks = False # Variable to control printing once
def Initialize(self):
self.SetStartDate(2023, 12, 1)
self.SetEndDate(2024, 12, 1)
self.SetCash(1000_000)
# Adding universe using the FineSelectionFunction
self.AddUniverse(self.FineSelectionFunction)
self.UniverseSettings.Resolution = Resolution.Daily
self.SetSecurityInitializer(lambda x: x.SetDataNormalizationMode(DataNormalizationMode.Raw))
# Set leverage to 2
self.UniverseSettings.Leverage = 2
self.Liquidate()
self.counter = 0
self.Debug("Start time " + str(type(self.StartDate)))
def FineSelectionFunction(self, fine):
# Filter stocks by Energy sector and sort by MarketCap
fine1 = [x for x in fine if x.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.TECHNOLOGY]
sortedByMarketCap = sorted(fine1, key=lambda c: c.MarketCap, reverse=True)
filteredFine = [i.Symbol for i in sortedByMarketCap]
# Filter top 5 stocks
self.filter_fine = filteredFine[:3]
return self.filter_fine
def OnSecuritiesChanged(self, changes):
# Process added securities
for security in changes.AddedSecurities:
self.Debug(f"Security Added: {security.Symbol}")
# You can set holdings or perform other actions here
# Process removed securities
for security in changes.RemovedSecurities:
self.Debug(f"Security Removed: {security.Symbol}")
if security.Invested:
self.Liquidate(security.Symbol)
def OnData(self, data):
# Ensure stocks are printed only once
if not self.hasPrintedTopStocks:
for ticker in self.filter_fine:
string = "- " + str(ticker)
self.Debug(string) # Print to the console
self.hasPrintedTopStocks = True # Flag to print only once