Article URL: https://github.com/ats4321/walsh Comments URL: https://news.ycombinator.com/item?id=49139865 Points: 4 # Comments: 0

Walsh is a multi-agent stock research system that routes each ticker through four specialized agents in parallel — Fundamental, Technical, Sentiment, and Macro — aggregates their theses via a confidence-weighted Portfolio Manager, then gates the final call through a Rule-Based Risk Manager that can veto or downgrade before any trade is executed. Backtest run: AAPL · MSFT · NVDA, Jan 2023 – Dec 2023, $100k initial capital, rule-based signal agents, strict no-lookahead enforcement. Walsh underperformed buy-and-hold on this bull-market period. In Oct 2023, the pipeline exited all positions when momentum signals broke down and held cash for the entire month, missing a subsequent NVDA recovery rally. This is the intended behavior of the risk gate — it correctly identified a high-uncertainty period — but reveals the cost of a conservative threshold in trending markets. Per-agent accuracy / confidence calibration: pending. The eval/agent_attribution.py module is ready; results require ≥50 completed pipeline runs with follow-up price data to produce meaningful calibration curves. Cost and latency per run: pending. The eval/cost_latency.py PipelineTracker is instrumented; numbers will be populated once the LLM-backed agents replace the current rule-based stubs. Adversarial robustness: 18 test cases across three agent types; 5 flagged for overconfidence (see Known limitations). Fundamental Analyst fetches valuation metrics (PE ratio, revenue growth, profit margin, debt-to-equity) and scores them against thresholds. A PE below 15 adds a bullish vote; above 30 adds a bearish one. Revenue growth above 15% or profit margins above 20% each add a bullish vote. The raw score maps to a STRONG_BUY / BUY / HOLD / SELL / STRONG_SELL signal with confidence proportional to conviction strength. Technical Analyst evaluates SMA crossovers (20d and 50d), MACD histogram direction, and optionally a golden-cross flag. Each indicator votes +1 or −1, with a dead band to suppress spurious signals on flat prices. In the backtest harness, the rule-based TechnicalSignalAgent uses realized momentum over 20d and 50d rolling windows against yfinance price data.