1. # region imports
  2. from AlgorithmImports import *
  3. from QuantConnect.DataSource import *# endregion
  4. class HipsterFluorescentYellowOwl(QCAlgorithm):
  5. def Initialize(self):
  6. self.SetStartDate(2023, 8, 15)
  7. self.SetStartDate(2023, 8, 17)
  8. # Requesting data
  9. self.AddUniverse(self.SelectCoarse, self.SelectFine)
  10. self.UniverseSettings.Resolution = Resolution.Daily
  11. # Coarse filter: get list of symbols with biggest dollar volume
  12. def SelectCoarse(self, coarse):
  13. selected = [c for c in coarse if c.HasFundamentalData]
  14. sorted_by_dollar_volume = sorted(selected, key=lambda c: c.DollarVolume, reverse=True)
  15. return [ c.Symbol for c in sorted_by_dollar_volume[:10000] ]
  16. # Fine filter: filter to only 10 regional banks via MorningstarIndustryCode
  17. def SelectFine(self, fine):
  18. filtered_by_class = [f for f in fine if f.AssetClassification.MorningstarIndustryCode == MorningstarIndustryCode.BanksRegional]
  19. return [ f.Symbol for f in filtered_by_class[:self.10] ]
  20. # DATA EVENT HANDLER
  21. def OnData(self, data: Slice):
  22. for security in self._changes.AddedSecurities:
  23. #self.Plot(???) # here I have no clue how to get the fundamental data from morningstar
  24. #Event fired each time the we add/remove securities from the data feed
  25. def OnSecuritiesChanged(self, changes):
  26. self._changes = changes
+ Expand

Author

Paulduring

August 2023