mirror of
https://github.com/TauricResearch/TradingAgents.git
synced 2026-11-04 16:42:57 +02:00
fix(agents): give a past run the company's current name only, as an identifier
- the vendor profile describes the company today, so a run dated earlier is given its name marked as the current one and no sector, industry or exchange
This commit is contained in:
@@ -93,19 +93,20 @@ def test_trade_date_is_injected_not_model_visible(tool):
|
||||
# --- the instrument's identity -------------------------------------------------
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_a_historical_run_is_told_the_identity_is_current(monkeypatch):
|
||||
"""The company name, sector and industry come from today's vendor profile.
|
||||
They are usually right for a past date, but a company that renamed or was
|
||||
reclassified since would read wrong, and every agent is told to anchor to
|
||||
this identity, so the run has to know which date it describes."""
|
||||
def test_a_historical_run_gets_the_current_name_only_as_an_identifier(monkeypatch):
|
||||
"""The profile is today's. The name still tells the company apart from others
|
||||
(#814), so a past run keeps it, marked as today's; a sector, industry or
|
||||
exchange that may not have held on the run's date is not given."""
|
||||
from tradingagents.agents.context import build_instrument_context
|
||||
|
||||
identity = {"company_name": "Example Corp", "sector": "Technology",
|
||||
"industry": "Software", "exchange": "NMS"}
|
||||
|
||||
historical = build_instrument_context("EXMP", "stock", identity, trade_date="2024-03-14")
|
||||
assert "Example Corp" in historical
|
||||
assert "2024-03-14" in historical and "today" in historical.lower()
|
||||
assert "Example Corp" in historical and "current name" in historical
|
||||
assert "2024-03-14" in historical
|
||||
for later in ("Technology", "Software", "NMS"):
|
||||
assert later not in historical
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
@@ -116,7 +117,7 @@ def test_a_current_run_is_not_cluttered_with_a_vintage_note(monkeypatch):
|
||||
today = build_instrument_context("EXMP", "stock", {"company_name": "Example Corp"},
|
||||
trade_date=get_current_date())
|
||||
assert "Example Corp" in today
|
||||
assert "resolved today" not in today.lower()
|
||||
assert "current name" not in today
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
@@ -119,9 +119,10 @@ def build_instrument_context(
|
||||
than pattern-matching the price chart to a wrong one (#814).
|
||||
|
||||
That profile carries no historical vintage: it describes the company today.
|
||||
For a run dated earlier, the context says so, since a company that has since
|
||||
renamed or been reclassified would otherwise anchor the whole graph to an
|
||||
identity it did not have on the analysis date.
|
||||
A run dated earlier gets the current name alone, as a way to tell the
|
||||
company apart from others rather than as what it was called then; a sector,
|
||||
industry or exchange it holds today is not given, since it may not have held
|
||||
on the analysis date.
|
||||
"""
|
||||
is_crypto = asset_type == "crypto"
|
||||
instrument_label = "asset" if is_crypto else "instrument"
|
||||
@@ -131,11 +132,19 @@ def build_instrument_context(
|
||||
"preserving any exchange suffix (e.g. `.TO`, `.L`, `.HK`, `.T`, `-USD`)."
|
||||
)
|
||||
|
||||
identity = identity or {}
|
||||
name = identity.get("company_name") or identity.get("name")
|
||||
label = "Name" if is_crypto else "Company"
|
||||
details = []
|
||||
if identity:
|
||||
name = identity.get("company_name") or identity.get("name")
|
||||
if trade_date and str(trade_date) < get_current_date():
|
||||
if name:
|
||||
details.append(f"{'Name' if is_crypto else 'Company'}: {name}")
|
||||
details.append(
|
||||
f"{label}: {name} (its current name, given only to identify it; "
|
||||
f"on {trade_date} it may have been named differently)"
|
||||
)
|
||||
else:
|
||||
if name:
|
||||
details.append(f"{label}: {name}")
|
||||
sector, industry = identity.get("sector"), identity.get("industry")
|
||||
if sector and industry:
|
||||
details.append(f"Business classification: {sector} / {industry}")
|
||||
@@ -152,13 +161,6 @@ def build_instrument_context(
|
||||
"Do not substitute a different company or ticker unless a tool "
|
||||
"result explicitly disproves this resolved identity."
|
||||
)
|
||||
today = get_current_date()
|
||||
if trade_date and str(trade_date) < today:
|
||||
context += (
|
||||
f" This identity is how the vendor describes the instrument today, "
|
||||
f"not necessarily on {trade_date}: a name or classification changed "
|
||||
f"since then would read as the current one."
|
||||
)
|
||||
|
||||
if is_crypto:
|
||||
context += (
|
||||
|
||||
Reference in New Issue
Block a user