| 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 -1.825 Tracking Error 0.113 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports
from AlgorithmImports import *
# endregion
class SleepyBrownChicken(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2024, 9, 1)
# self.SetEndDate(2020, 1, 1)
self.SetCash(100000)
self.SetBenchmark("SPY")
self.SetWarmUp(1)
self.UniverseSettings.Resolution = Resolution.Daily
# self.UniverseSettings.Resolution = Resolution.Monthly
self.AddUniverse(self.CoarseSelectionFunction, self.SelectFine)
self.SetBrokerageModel(InteractiveBrokersBrokerageModel())
self.SetExecution(ImmediateExecutionModel())
# self.settings.daily_precise_end_time = False
self.SPY = self.AddEquity("SPY",Resolution.Hour).Symbol
self.rebalence_flag = 0
self.first_month_trade_flag = 1
self.Schedule.On(self.DateRules.MonthEnd("SPY", 2), self.TimeRules.At(1, 0), Action(self.monthly_rebalance))
def monthly_rebalance(self):
self.rebalence_flag = 1
def CoarseSelectionFunction(self, coarse):
if not (self.rebalence_flag or self.first_month_trade_flag):
return Universe.Unchanged
coarse = [x for x in coarse]
self.Log("coarse size: " + str(len(coarse)))
coarse = [x for x in coarse if x.HasFundamentalData]
self.Log("coarse with fundamental size: " + str(len(coarse)))
sortedByDollarVolume = sorted([x for x in coarse if x.HasFundamentalData and x.DollarVolume > 3000000 and x.Price >0],
key = lambda x: x.DollarVolume, reverse=True)[:200]
return [x.Symbol for x in sortedByDollarVolume]
def SelectFine(self, fine):
if not (self.rebalence_flag or self.first_month_trade_flag):
return Universe.Unchanged
# self.rebalence_flag = 0
# self.first_month_trade_flag = 0
return [x.Symbol for x in fine]
def on_data(self, data: Slice):
return
#pass