Claim this agent
Agent DossierGITHUB OPENCLEWSafety 66/100

Xpersona Agent

agentic-finance-explorer

Multi agent financial analysis system using CrewAI, FastAPI, and GPT-4o-mini. Features technical analysis and adversarial risk auditing. πŸ›οΈ Multi-Agent Financial Intelligence Committee (NSE/BSE) $1 $1 $1 $1 An autonomous investment-research assistant for Indian (NSE/BSE) stocks. A crew of three specialized AI agents performs technical and news-driven analysis, a Chief Risk Officer agent audits their findings, and the result is scored by an automated evaluation layer and traced in Langfuse. A Streamlit dashboard presents live prices, fundamentals, an

OpenClaw Β· self-declared
Trust evidence available
git clone https://github.com/merchantkevin/agentic-finance-explorer.git

Overall rank

#37

Adoption

No public adoption signal

Trust

Unknown

Freshness

May 31, 2026

Freshness

Last checked May 31, 2026

Best For

agentic-finance-explorer is best for crewai, multi-agent workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Overview

Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.

Verifiededitorial-content

Overview

Executive Summary

Multi agent financial analysis system using CrewAI, FastAPI, and GPT-4o-mini. Features technical analysis and adversarial risk auditing. πŸ›οΈ Multi-Agent Financial Intelligence Committee (NSE/BSE) $1 $1 $1 $1 An autonomous investment-research assistant for Indian (NSE/BSE) stocks. A crew of three specialized AI agents performs technical and news-driven analysis, a Chief Risk Officer agent audits their findings, and the result is scored by an automated evaluation layer and traced in Langfuse. A Streamlit dashboard presents live prices, fundamentals, an Capability contract not published. No trust telemetry is available yet. Last updated 5/31/2026.

No verified compatibility signals

Trust score

Unknown

Compatibility

OpenClaw

Freshness

May 31, 2026

Vendor

Merchantkevin

Artifacts

0

Benchmarks

0

Last release

Unpublished

Install & run

Setup Snapshot

git clone https://github.com/merchantkevin/agentic-finance-explorer.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence & Timeline

Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.

Verifiededitorial-content

Public facts

Evidence Ledger

Vendor (1)

Vendor

Merchantkevin

profilemedium
Observed May 23, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed May 23, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance

Events

Release & Crawl Timeline

Artifacts & Docs

Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.

Self-declaredGITHUB OPENCLEW

Captured outputs

Artifacts Archive

Extracted files

0

Examples

4

Snippets

0

Languages

python

Executable Examples

bash

git clone https://github.com/merchantkevin/agentic-finance-explorer.git
cd agentic-finance-explorer
uv sync

bash

# Required
OPENAI_API_KEY=sk-...
SERPER_API_KEY=...

# Optional β€” Langfuse observability (tracing/scoring still runs without keys but won't be persisted)
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
LANGFUSE_HOST=https://cloud.langfuse.com

# Optional β€” restrict CORS to your frontend (comma-separated)
ALLOWED_ORIGINS=http://localhost:8501

bash

uv run uvicorn app:app --reload --port 8000

bash

uv run streamlit run frontend.py

Editorial read

Docs & README

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Multi agent financial analysis system using CrewAI, FastAPI, and GPT-4o-mini. Features technical analysis and adversarial risk auditing. πŸ›οΈ Multi-Agent Financial Intelligence Committee (NSE/BSE) $1 $1 $1 $1 An autonomous investment-research assistant for Indian (NSE/BSE) stocks. A crew of three specialized AI agents performs technical and news-driven analysis, a Chief Risk Officer agent audits their findings, and the result is scored by an automated evaluation layer and traced in Langfuse. A Streamlit dashboard presents live prices, fundamentals, an

Full README

πŸ›οΈ Multi-Agent Financial Intelligence Committee (NSE/BSE)

FastAPI CrewAI Python 3.12 Cloud-Native

An autonomous investment-research assistant for Indian (NSE/BSE) stocks. A crew of three specialized AI agents performs technical and news-driven analysis, a Chief Risk Officer agent audits their findings, and the result is scored by an automated evaluation layer and traced in Langfuse. A Streamlit dashboard presents live prices, fundamentals, an interactive chart, and the committee's verdict.

πŸ”— Live Dashboard | πŸ“– API Documentation


πŸš€ Architecture

The system uses a decoupled pattern that separates the reasoning engine from the presentation layer:

  • Reasoning Engine (app.py): A FastAPI server that orchestrates the CrewAI agents in a background task, caches results in SQLite, exposes fundamentals, and traces every run in Langfuse.
  • Agent Crew (main.py): Three CrewAI agents wired with deterministic and search tools, producing a Pydantic-validated JSON report.
  • Evaluation Layer (evaluator.py): A rule-based consistency check plus an LLM-as-judge that scores each report; scores are pushed to Langfuse.
  • Frontend (frontend.py): A Streamlit dashboard with a multi-source live-price engine, fundamentals snapshot, and interactive Plotly chart.
  • Deterministic Tool (tools.py): A CrewAI tool that computes RSI and the 20-day moving average from yfinance data.

Request flow

  1. The Streamlit frontend POSTs a ticker to /analyze.
  2. The backend fetches a live price and checks the SQLite cache. If the price has moved less than 0.5% and the last run was within 1 hour, the cached report is returned immediately.
  3. Otherwise a background task kicks off the CrewAI crew; the frontend polls /status/{job_id} (up to 25 times, every 5s).
  4. When the crew finishes, the report is saved to SQLite, scored by the evaluator, and the full run (timing + scores) is logged to Langfuse.

🧠 The "Committee" (Agents)

Defined in main.py, all running on openai/gpt-4o-mini (temperature 0):

  1. Senior Quant Researcher β€” Calls the stock_price_analyzer tool (tools.py) to fetch price, RSI(14), and MA20 from yfinance + pandas_ta. Deterministic, not LLM guesswork.
  2. Financial News Correspondent β€” Uses SerperDevTool (Serper Google-search API) to gather recent news and sentiment. (Its prompt directs it toward Moneycontrol / Economic Times / LiveMint, but search is performed via Serper, not direct scraping.)
  3. Chief Risk Officer (adversarial) β€” Audits the Quant and News findings to surface concrete risks (regulatory, promoter, macro), assigns a sentiment score (0–10), and emits the final structured JSON.

The final report conforms to the FinancialAnalysisOutput Pydantic schema:

| Field | Type | Meaning | | :--- | :--- | :--- | | ticker | str | Ticker analyzed | | technical_signal | str | Bullish / Bearish / Neutral | | sentiment_score | float | 1.0 (extreme fear) – 10.0 (extreme greed) | | key_catalysts | list[str] | 3 bullets of upside drivers | | risk_summary | list[str] | 3 bullets of critical risks |

πŸ“Š Evaluation Layer

After each analysis (evaluator.py), two evaluators score the report and the results are attached to the Langfuse trace:

  • Signal consistency (rule-based, 0.0/1.0): Checks that technical_signal and sentiment_score agree (e.g. a Bullish call should have a score > 5.5). No LLM, no cost.
  • LLM-as-judge (gpt-4o-mini): Scores risk_specificity (1–5), catalyst_specificity (1–5), and overall_quality (1–10), penalizing generic boilerplate. Falls back to neutral scores on failure so it never blocks the user's result.

πŸ”Œ API Endpoints

| Method | Path | Description | | :--- | :--- | :--- | | GET | / | Health check ({"status": "AI Agents Online", "version": "2.0"}) | | GET | /fundamentals/{ticker} | Market cap, P/E, 52w high/low, EPS, book value, dividend yield, ROCE, ROE, D/E — derived in 3 layers from yfinance fast_info, get_info(), and financial statements, with NSE→BSE fallback | | POST | /analyze | Body {"ticker": "..."}. Returns cached result or {"job_id", "status": "started"} | | GET | /status/{job_id} | Poll job status: pending / completed / failed / not_found |

πŸ–₯️ Frontend Features

  • Live-price engine (get_current_price): Tries Groww's live-price API first, then scrapes Google Finance, then falls back to yfinance history. Auto-routes NSE vs BSE based on the ticker suffix.
  • Fundamental Snapshot: Pulls the backend /fundamentals endpoint (cached 30 min) into a collapsible panel.
  • Interactive chart: Plotly line/candlestick toggle across 1D / 1M / 3M / 6M timeframes.
  • Committee verdict: Technical signal, sentiment score, color-coded catalysts and risk audit.

πŸ› οΈ Tech Stack

| Layer | Technology | | :--- | :--- | | Agent Framework | CrewAI + crewai-tools (SerperDevTool) | | LLM | GPT-4o-mini (OpenAI), used by both the crew and the judge | | Backend | FastAPI + Uvicorn | | Frontend | Streamlit + Plotly | | Data | yfinance, pandas, pandas-ta, BeautifulSoup | | Validation | Pydantic | | Observability | Langfuse | | Persistence | SQLite (market_data.db) | | Cloud | Render (API), Streamlit Cloud (UI) |

🌟 Engineering Notes

  • Defensive parsing: If the crew's output lacks a valid json_dict, the backend builds a fallback report instead of crashing (app.py).
  • Async background tasks: FastAPI BackgroundTasks run the long (~45s+) agentic loop without blocking the request.
  • Smart caching: SQLite-backed; a cached report is reused only if price moved < 0.5% and the last run was < 1 hour ago.
  • Restricted CORS: Origins come from the ALLOWED_ORIGINS env var (default: the Streamlit app URL), limited to GET/POST and the Content-Type header. To allow another frontend, set ALLOWED_ORIGINS to a comma-separated list.

βš™οΈ Local Setup

1. Clone & install (using uv)

git clone https://github.com/merchantkevin/agentic-finance-explorer.git
cd agentic-finance-explorer
uv sync

2. Environment variables

Create a .env file in the project root:

# Required
OPENAI_API_KEY=sk-...
SERPER_API_KEY=...

# Optional β€” Langfuse observability (tracing/scoring still runs without keys but won't be persisted)
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
LANGFUSE_HOST=https://cloud.langfuse.com

# Optional β€” restrict CORS to your frontend (comma-separated)
ALLOWED_ORIGINS=http://localhost:8501

3. Run the backend (FastAPI)

uv run uvicorn app:app --reload --port 8000

API docs are then available at http://localhost:8000/docs.

4. Run the frontend (Streamlit)

uv run streamlit run frontend.py

Note: frontend.py currently points its backend_url at the hosted Render API (https://agentic-finance-explorer.onrender.com). To use your local backend, update those URLs in frontend.py.


☁️ Deployment

  • Backend: Deployed on Render via render.yml (uvicorn app:app). It declares OPENAI_API_KEY and SERPER_API_KEY; add the Langfuse keys in the Render dashboard if you want tracing in production. The build command expects a requirements.txt β€” generate one with uv export --no-hashes -o requirements.txt (the repo ships pyproject.toml / uv.lock).
  • Frontend: Deployed on Streamlit Cloud from frontend.py.

Disclaimer: This application uses Large Language Models to synthesize public financial data for informational purposes only. It is not financial advice.

API & Reliability

Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Machine interfaces

Contract & API

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/trust"

Operational fit

Reliability & Benchmarks

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Machine Appendix

Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.

MissingGITHUB OPENCLEW

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-08T22:21:03.519Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    },
    {
      "key": "crewai",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "multi-agent",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}

Facts JSON

[
  {
    "factKey": "vendor",
    "label": "Vendor",
    "value": "Merchantkevin",
    "category": "vendor",
    "href": "https://github.com/merchantkevin/agentic-finance-explorer",
    "sourceUrl": "https://github.com/merchantkevin/agentic-finance-explorer",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-05-23T06:54:10.925Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "protocols",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "category": "compatibility",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-05-23T06:54:10.925Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "handshake_status",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "category": "security",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-merchantkevin-agentic-finance-explorer/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true,
    "metadata": {}
  }
]

Change Events JSON

[]

Sponsored

Ads related to agentic-finance-explorer and adjacent AI workflows.