Two bugs fixed: 1. Portfolio Manager uses wrong state key (critical): portfolio_manager.py read state['investment_plan'] (Research Manager's raw output) instead of state['trader_investment_plan'] (Trader's memory-refined output). This silently bypassed the Trader agent's entire contribution — including lessons learned from past trades — in the final risk assessment and trading decision. The Trader agent applies FinancialSituationMemory to refine the Research Manager's plan with insights from similar past situations. By reading the pre-refinement plan, the Portfolio Manager made its final decision without this critical context, effectively making the Trader node a no-op in the decision pipeline. 2. _get_stock_stats_bulk() missing pandas import: y_finance.py uses pd.isna() in _get_stock_stats_bulk() but never imports pandas as pd, causing NameError on every call. The fallback in get_stock_stats_indicators_window() catches this silently, but it defeats the bulk optimization — falling back to O(n) individual API calls per date instead of O(1) bulk calculation. Added 7 tests covering both fixes. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| alpha_vantage.py | ||
| alpha_vantage_common.py | ||
| alpha_vantage_fundamentals.py | ||
| alpha_vantage_indicator.py | ||
| alpha_vantage_news.py | ||
| alpha_vantage_stock.py | ||
| config.py | ||
| interface.py | ||
| stockstats_utils.py | ||
| utils.py | ||
| y_finance.py | ||
| yfinance_news.py | ||