What are the best practices for implementing a news monitoring strategy in QuantConnect with the following requirements:

1. Universe Loading & Filtering:
◦ Load a large number of stocks (800+ symbols)
◦ Apply fundamental filters (price range, market cap, shares outstanding)
◦ Store the filtered universe for reuse
2. Data Management:
◦ Save the filtered universe to ObjectStore for persistence
◦ Load the universe immediately on algorithm startup (fast initialization)
◦ Update the universe weekly to account for new listings/delistings
3. News Monitoring:
◦ Subscribe to BenzingaNews for the filtered universe
◦ Monitor news in real-time for all 800+ symbols
◦ Send immediate alerts when news breaks for any monitored symbol
4. News Processing:
◦ Avoid processing duplicate/old news items
◦ Filter news by age (e.g., ignore news older than 5 minutes)
◦ Handle high-frequency news efficiently without performance issues
5. Performance & Reliability:
◦ Minimize algorithm startup time by loading pre-filtered universe
◦ Handle large universe sizes without hitting memory/performance limits
◦ Ensure reliable news detection and alert delivery

Specific technical questions:

• Should I use `UniverseSelectionModel` or manual `AddEquity()` for 800+ symbols?
• What’s the best way to structure ObjectStore for weekly universe updates?
• How should I handle `OnSecuritiesChanged` with large universe additions?
• Are there any QuantConnect limits I should be aware of for 800+ symbols with news data?
• What’s the most efficient way to match news items to specific symbols in the universe?

Current approach concerns:

• Will subscribing to BenzingaNews for 800+ symbols cause performance issues?
• Should I implement any batching or throttling for news processing?
• How can I ensure the algorithm starts quickly by loading the cached universe first?