| 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.906 Tracking Error 0.21 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% Drawdown Recovery 0 |
# region imports
from AlgorithmImports import *
# endregion
class WellDressedSkyBlueChimpanzee(QCAlgorithm):
def initialize(self):
self.set_start_date(2019, 1, 1)
self.set_end_date(2021, 1, 1)
self.set_cash(100000)
self.rebalance_time = datetime.min # since we want the bot to start trading immediately
self.active_stocks = set()
self.add_universe(self.CoarseFilter, self.FineFilter)
self.universe_settings.resolution = Resolution.HOUR
self.portfolio_targets = []
def CoarseFilter(self, coarse):
if self.time <= self.rebalance_time:
return self.universe.unchanged
self.rebalance_time = self.time + timedelta(30)
sorted_by_dollar_volume = sorted(coarse, key=lambda x: x.dollar_volume, reverse=True)
return [x.symbol for x in sorted_by_dollar_volume if x.price > 10 and x.has_fundamental_data][:200]
# Note that the choice of 200 securities is quite arbitrary ^
def FineFilter(self, fine):
sorted_by_PE = sorted(fine, key=lambda x: x.market_cap)
return [x.symbol for x in sorted_by_PE if x.market_cap > 0][:10]
def on_securities_changed(self, changes):
for x in changes.removed_securities:
self.liquidate(x.symbol)
self.active_stocks.remove(x.symbol)
for x in changes.added_securities:
self.active_stocks.add(x.symbol)
self.portfolio_targets = [PortfolioTarget(symbol, 1 / len(self.active_stocks))
for symbol in self.active_stocks]
def on_data(self, data: Slice):
if not self.portfolio_targets:
return
for symbol in self.active_stocks:
if symbol in self.active_stocks:
return
self.set_holdings(self.portfolio_targets)
self.portfolio_targets = []