Skip to content

Memory

FinancialSituationMemory

FinancialSituationMemory(name: str, config: dict | None = None)

Memory system for storing and retrieving financial situations using BM25.

Parameters:

Name Type Description Default

name

str

Name identifier for this memory instance.

required

config

dict | None

Configuration dict kept for API compatibility. BM25 memory does not use it. Defaults to None.

None

Methods:

Name Description
add_situations

Add financial situations and their corresponding advice.

get_memories

Find matching recommendations using BM25 similarity.

clear

Clear all stored memories.

Source code in src/tradingagents/agents/utils/memory.py
def __init__(self, name: str, config: dict | None = None):
    """Initialize the memory system.

    Args:
        name (str): Name identifier for this memory instance.
        config (dict | None, optional): Configuration dict kept for API
            compatibility. BM25 memory does not use it. Defaults to None.
    """
    self.name = name
    self.documents: list[str] = []
    self.recommendations: list[str] = []
    self.bm25 = None

name

name = name

documents

documents: list[str] = []

recommendations

recommendations: list[str] = []

bm25

bm25 = None

add_situations

add_situations(situations_and_advice: list[tuple[str, str]]) -> None

Add financial situations and their corresponding advice.

Parameters:

Name Type Description Default

situations_and_advice

list[tuple[str, str]]

Situation and recommendation pairs to store.

required
Source code in src/tradingagents/agents/utils/memory.py
def add_situations(self, situations_and_advice: list[tuple[str, str]]) -> None:
    """Add financial situations and their corresponding advice.

    Args:
        situations_and_advice (list[tuple[str, str]]): Situation and
            recommendation pairs to store.
    """
    for situation, recommendation in situations_and_advice:
        self.documents.append(situation)
        self.recommendations.append(recommendation)

    # Rebuild BM25 index with new documents
    self._rebuild_index()

get_memories

get_memories(current_situation: str, n_matches: int = 1) -> list[dict]

Find matching recommendations using BM25 similarity.

Parameters:

Name Type Description Default

current_situation

str

The current financial situation to match against.

required

n_matches

int

Number of top matches to return. Defaults to 1.

1

Returns:

Type Description
list[dict]

list[dict]: Dictionaries containing matched_situation, recommendation, and normalized similarity_score.

Source code in src/tradingagents/agents/utils/memory.py
def get_memories(self, current_situation: str, n_matches: int = 1) -> list[dict]:
    """Find matching recommendations using BM25 similarity.

    Args:
        current_situation (str): The current financial situation to match against.
        n_matches (int, optional): Number of top matches to return.
            Defaults to 1.

    Returns:
        list[dict]: Dictionaries containing `matched_situation`,
            `recommendation`, and normalized `similarity_score`.
    """
    if not self.documents or self.bm25 is None:
        return []

    # Tokenize query
    query_tokens = self._tokenize(current_situation)

    # Get BM25 scores for all documents
    scores = self.bm25.get_scores(query_tokens)

    # Get top-n indices sorted by score (descending)
    top_indices = sorted(range(len(scores)), key=lambda i: scores[i], reverse=True)[:n_matches]

    # Build results
    results = []
    max_score = max(scores) if max(scores) > 0 else 1  # Normalize scores

    for idx in top_indices:
        # Normalize score to 0-1 range for consistency
        normalized_score = scores[idx] / max_score if max_score > 0 else 0
        results.append({
            "matched_situation": self.documents[idx],
            "recommendation": self.recommendations[idx],
            "similarity_score": normalized_score,
        })

    return results

clear

clear() -> None

Clear all stored memories.

Source code in src/tradingagents/agents/utils/memory.py
def clear(self) -> None:
    """Clear all stored memories."""
    self.documents = []
    self.recommendations = []
    self.bm25 = None