Skip to main content
Get real-time stock prices, company fundamentals, and historical trends with a single Agent — no financial-data API glue code required.
from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="Analyze stocks and return an investor-friendly summary.",
    tools=[get_stock_price, get_stock_info, get_historical_data],
)

agent.start("Compare AAPL and MSFT year-to-date.")

Quick Start

1

Simple Usage

Give an Agent the finance tools and ask a question.
from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="You are a financial analyst. Analyze stocks and provide insights.",
    tools=[get_stock_price, get_stock_info, get_historical_data],
)

agent.start("Analyze Apple (AAPL) - current price and 6-month trend")
2

With Configuration

Add memory to track a portfolio across sessions.
from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="Track a portfolio and compare positions over time.",
    tools=[get_stock_price, get_stock_info, get_historical_data],
    memory=True,
)

agent.start("Compare AAPL and GOOGL, then remember my preference for tech stocks.")

How It Works

A user asks a financial question, the Agent calls the finance tools to pull live data, then returns an investor-friendly summary.

Configuration Options

The finance tools take no configuration — pass them to any Agent. For the underlying tool signatures see the tools reference.

yfinance Tools

Stock price, company info, and historical data tool signatures.

Agent Reference

Full Agent parameters and options.

Simple

Agents: 1 — Single agent with finance tools for comprehensive stock analysis.

Workflow

  1. Receive stock query
  2. Fetch real-time price data
  3. Retrieve company information
  4. Analyze historical trends

Setup

pip install praisonaiagents praisonai yfinance
export OPENAI_API_KEY="${OPENAI_API_KEY:?Set OPENAI_API_KEY in your shell}"

Run — Python

from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="You are a financial analyst. Analyze stocks and provide insights.",
    tools=[get_stock_price, get_stock_info, get_historical_data]
)

result = agent.start("Analyze Apple (AAPL) stock - current price and 6-month trend")
print(result)

Run — CLI

praisonai "Analyze Tesla stock performance" --tools yfinance

Run — agents.yaml

framework: praisonai
topic: Stock Analysis
roles:
  finance_analyst:
    role: Financial Analyst
    goal: Analyze stocks and provide investment insights
    backstory: You are an expert financial analyst
    tools:
      - get_stock_price
      - get_stock_info
      - get_historical_data
    tasks:
      analyze_stock:
        description: Analyze Apple (AAPL) stock - current price and 6-month trend
        expected_output: A comprehensive stock analysis
praisonai agents.yaml

Serve API

from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="You are a financial analyst.",
    tools=[get_stock_price, get_stock_info, get_historical_data]
)

agent.launch(port=8080)
curl -X POST http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Compare AAPL and GOOGL stocks"}'

Advanced Workflow (All Features)

Agents: 1 — Single agent with memory, persistence, structured output, and session resumability.

Workflow

  1. Initialize session for portfolio tracking
  2. Configure SQLite persistence for analysis history
  3. Execute multi-tool analysis with structured output
  4. Store results in memory for trend comparison
  5. Resume session for ongoing portfolio monitoring

Setup

pip install praisonaiagents praisonai yfinance pydantic
export OPENAI_API_KEY="${OPENAI_API_KEY:?Set OPENAI_API_KEY in your shell}"

Run — Python

from praisonaiagents import Agent, Task, AgentTeam, Session
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data
from pydantic import BaseModel

# Structured output schema
class StockAnalysis(BaseModel):
    symbol: str
    current_price: float
    recommendation: str
    key_metrics: list[str]
    risk_factors: list[str]

# Create session for portfolio tracking
session = Session(session_id="portfolio-001", user_id="user-1")

# Agent with memory and tools
agent = Agent(
    name="FinanceAnalyst",
    instructions="Analyze stocks and return structured investment reports.",
    tools=[get_stock_price, get_stock_info, get_historical_data],
    memory=True
)

# Task with structured output
task = Task(
    description="Analyze Apple (AAPL) stock with buy/sell recommendation",
    expected_output="Structured stock analysis",
    agent=agent,
    output_pydantic=StockAnalysis
)

# Run with SQLite persistence
agents = AgentTeam(
    agents=[agent],
    tasks=[task],
    memory=True
)

result = agents.start()
print(result)

# Resume later for portfolio review
session2 = Session(session_id="portfolio-001", user_id="user-1")
history = session2.search_memory("AAPL")

Run — CLI

praisonai "Analyze AAPL stock" --tools yfinance --memory --verbose

Run — agents.yaml

framework: praisonai
topic: Stock Analysis
memory: true
memory_config:
  provider: sqlite
  db_path: finance.db
roles:
  finance_analyst:
    role: Financial Analyst
    goal: Analyze stocks with structured output
    backstory: You are an expert financial analyst
    tools:
      - get_stock_price
      - get_stock_info
      - get_historical_data
    memory: true
    tasks:
      analyze_stock:
        description: Analyze Apple (AAPL) stock with buy/sell recommendation
        expected_output: Structured stock analysis
        output_json:
          symbol: string
          current_price: number
          recommendation: string
          key_metrics: array
          risk_factors: array
praisonai agents.yaml --verbose

Serve API

from praisonaiagents import Agent
from praisonai_tools import get_stock_price, get_stock_info, get_historical_data

agent = Agent(
    name="FinanceAnalyst",
    instructions="Analyze stocks and return structured reports.",
    tools=[get_stock_price, get_stock_info, get_historical_data],
    memory=True
)

agent.launch(port=8080)
curl -X POST http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Analyze TSLA", "session_id": "portfolio-001"}'

Monitor / Verify

praisonai "test finance" --tools yfinance --verbose

Cleanup

rm -f finance.db

Features Demonstrated

FeatureImplementation
WorkflowMulti-tool stock analysis
DB PersistenceSQLite via memory_config
Observability--verbose flag
Toolsyfinance (price, info, history)
ResumabilitySession with session_id
Structured OutputPydantic StockAnalysis model

Best Practices

The finance tools call live market APIs, so each extra tool adds latency and cost. Pass get_stock_price alone for quote lookups, and add get_historical_data only when the question needs trends.
Set memory=True when the user asks follow-up questions about the same tickers. The agent then compares new quotes against prior turns instead of starting from scratch.
Instruct the agent to cite the figures it fetched. This keeps summaries verifiable and prevents the model from inventing prices when a tool call fails.
For document-heavy market research, pair this Agent with the Research Agent; for CSV/Excel portfolios, hand off to the Data Analyst Agent.

Data Analyst

Analyze CSV/Excel portfolios and generate insights.

Research Agent

Conduct market research across the web.