Overall Statistics
Total Orders
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Start Equity
100000
End Equity
100000
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
-0.417
Tracking Error
0.159
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
Portfolio Turnover
0%
from AlgorithmImports import *

class PensiveFluorescentYellowParrot(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2000, 1, 1)  # Set Start Date
        self.years = 0.5
        self.log(f'years={self.years}')
        self.set_warm_up(int(252*self.years), Resolution.DAILY)
        self.universe_settings.schedule.on(self.date_rules.week_start())
        self.add_universe(self._select)

    def _select(self, fundamentals: List[Fundamental]) -> List[Symbol]:        
        selected = sorted([x for x in fundamentals if x.company_profile.market_cap > 0],
            key=lambda f: f.company_profile.market_cap, reverse=True)

        if not selected:
            return Universe.UNCHANGED

        limit = 3000
        if len(selected) > limit:
            selected = selected[:limit]

        last = selected[-1]   # Log details of the selected symbols after sorting by market cap
        if self.time.year > 2023 and self.time.month > 11:
            self.debug(f"{self.years} :: {self.time} >> Fundamental Selection (#{len(selected)}). Lowest Market Cap: {last.symbol} ({last.symbol.value}): {last.market_cap}")
            self.plot('Market Cap', 'Lowest', last.market_cap)

        return Universe.UNCHANGED