FinnewsHunter Financial Intelligence

A self-hosted system that turns financial news into searchable sentiment analysis and investment research signals.

Stars
★ 1.5k
Last updated
1d ago
License
Apache-2.0
Primary language
Python

At a glance

How it runs
Self-hosted serviceWeb app
Works with
Portable with changesOpenAI API
Cost
Free software; you pay for model usage
Setup effort
High · needs real infrastructure
You'll need
Python 3.11+DockerDocker ComposeNode.js 18+AgenticXPostgreSQLRedisMilvusShell / CLINetwork accessLocal filesystem
Typical use
A quantitative research team needs to ingest recent finance news from sources such as Sina Finance, Tencent Finance, and East Money into one searchable database.
Not a fit if
  • Individuals wanting one-command use without running PostgreSQL, Redis, and Milvus
  • Developers unwilling to depend on AgenticX and a local editable install

What does this agent do, and when should you use it?

FinnewsHunter is a self-hosted financial-news analysis platform built on AgenticX for Chinese market research workflows. Its FastAPI backend exposes news, analysis, model-configuration, and stock-data APIs, while a React and TypeScript frontend provides news browsing, search, batch actions, and K-line charts. Celery Beat schedules crawling and Celery workers process the jobs; PostgreSQL stores application records, Redis supports caching, and Milvus stores embeddings. The NewsAnalyst agent analyzes news with a configured model provider and sends embedding work to the background. The repository also documents a bull-bear investment debate workflow involving BullResearcher, BearResearcher, SearchAnalyst, and InvestmentManager.

The application crawls financial news from 10 configured sources, deduplicates by URL, retains news within 24 hours, and applies stock-keyword filtering. It stores news in PostgreSQL and exposes it through endpoints including /api/v1/news/latest and /api/v1/news/sources; the UI searches titles, content, stock codes, and sources and supports batch deletion and analysis. POST /api/v1/analysis/news/{id} invokes NewsAnalyst to produce sentiment, sentiment score, confidence, and an analysis result. EmbeddingService uses BailianEmbeddingProvider to embed text, while VectorStorage uses MilvusStorage for vector persistence and similarity search. Stock views retrieve AkShare data for daily and 60m, 30m, 15m, 5m, and 1m K-lines, and the debate workflow can request data from AkShare, BochaAI, browser search, or the knowledge base before InvestmentManager produces an investment-rating report.

  1. A quantitative research team needs to ingest recent finance news from sources such as Sina Finance, Tencent Finance, and East Money into one searchable database.
  2. An equity analyst wants to run a chosen configured model on one article or a selected batch and review sentiment, confidence, and market-impact analysis.
  3. An A-share researcher needs fuzzy stock lookup across more than 5,000 preloaded records and wants to inspect multi-period K-line data.
  4. An investment team wants a structured bull-versus-bear discussion for a stock, with on-demand requests for financial metrics, fund flows, or current news.
  5. A self-hosting team needs a Docker Compose-operated stack for PostgreSQL, Redis, Milvus, and Celery while running the API and frontend as development services.

How do you install or deploy this agent?

Prerequisites are Python 3.11+, Docker, and Docker Compose; frontend development also requires Node.js 18+. Install AgenticX first:

cd /Users/damon/myWork/AgenticX

pip install -e .

Install backend dependencies and prepare configuration:

cd FinnewsHunter/backend
pip install -r requirements.txt
cp env.example .env

Configure at least one model-provider key. For example, Bailian:

DASHSCOPE_API_KEY=sk-your-dashscope-key
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
BAILIAN_MODELS=qwen-plus,qwen-max,qwen-turbo

Start infrastructure and initialize the database:

cd FinnewsHunter
docker compose -f deploy/docker-compose.dev.yml up -d postgres redis milvus-etcd milvus-minio milvus-standalone
cd backend
python init_db.py

Optionally load stock data:

python -m app.scripts.init_stocks

Start the API:

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

In separate terminals, start the scheduler and frontend:

cd FinnewsHunter
docker compose -f deploy/docker-compose.dev.yml up -d celery-worker celery-beat
cd frontend
npm install
npm run dev

How do you use this agent?

After startup, the frontend is at http://localhost:3000 and API documentation is at http://localhost:8000/docs. A first crawl invocation for Sina Finance is:

curl -X POST http://localhost:8000/api/v1/news/crawl -H "Content-Type: application/json" -d '{"source": "sina", "start_page": 1, "end_page": 1}'

Retrieve news:

curl "http://localhost:8000/api/v1/news/latest?limit=200"

Analyze news record 1:

curl -X POST http://localhost:8000/api/v1/analysis/news/1

Run batch analysis with a selected model:

curl -X POST "http://localhost:8000/api/v1/analysis/batch" -H "Content-Type: application/json" -d '{"news_ids": [1, 2, 3], "provider": "bailian", "model": "qwen-plus"}'

Request stock K-line data:

curl "http://localhost:8000/api/v1/stocks/SH600519/kline?period=daily&limit=180"

What are this agent's strengths and limitations?

Pros
  • It documents an end-to-end self-hosted workflow spanning crawling, scheduling, analysis, vector storage, APIs, and a React interface.
  • It supports five listed model-provider families—Bailian, OpenAI, DeepSeek, Kimi, and Zhipu—with frontend model switching.
  • Celery Beat and Celery workers automate crawling across 10 finance-news sources, with documented URL deduplication, time filtering, and operational checks.
  • The product combines news sentiment analysis, Milvus-backed embeddings, stock K-lines, and a data-seeking bull-bear debate flow.
  • Both the user interface and API document batch selection, deletion, and analysis of news items.
Limitations
  • It depends on AgenticX; the installation instructions require an editable install from a specific local path and do not provide a standalone AgenticX versioning procedure.
  • A full deployment carries a substantial operational footprint: PostgreSQL, Redis, Milvus, Docker Compose, Celery, Python, and Node.js.
  • News ingestion depends on third-party websites; the documentation notes that changed site URLs can cause 404 failures and require crawler configuration edits.
  • At least one external model-provider API key is required, and model availability and access conditions remain provider-dependent.
  • WebSocket live updates and agent execution-trace visualization are still marked in progress; knowledge graphs, agent memory, and self-evolution features are planned rather than delivered.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
FinnewsHunter Financial Intelligence This agent 29 · Major gaps Self-hosted serviceFree + model costs ★ 1.5k 1d ago Python OpenAI API
Agentic Company Researcher Insufficient evidence Self-hosted serviceFree + model costs ★ 2.3k 10d ago Python OpenAI API
Vibe-Research: Personal AI Investment Research Dashboard 59 · Major gaps Self-hosted serviceFree + model costs ★ 3.5k 8d ago TypeScript Codex · Claude Code · OpenAI API · Claude API
MindSearch Deep Search 42 · Major gaps Self-hosted serviceFree + model costs ★ 6.9k 1y ago JavaScript —

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
29/ 100 5-point scale 1.5 / 5
Trust 0/29
Reliability 5/14
Adaptability 8/18
Convention 8/18
Effectiveness 7/13
Verifiability 1/8
Why each dimension lost points
Trust0 / 29 · 0.0/5

Evidence shows: the repository provides no permission model, user confirmation mechanism, data flow transparency, sensitive data handling policy, dependency security audit, external impact assessment, rollback mechanism, or source attribution. All trust criteria lack evidence, hence all 0.

Reliability5 / 14 · 1.8/5

Evidence shows: README describes system architecture and features, but no verifiable test results or runtime evidence. Self-consistency: features described align with code structure, but test coverage is missing. Dependency availability: dependencies listed but no version pinning or mirrors. Failure messages: log viewing commands provided, but no error handling documentation. Hence each scored 1.

Adaptability8 / 18 · 2.2/5

Evidence shows: README identifies target users (quantitative traders) and use cases (financial news analysis), but capability boundaries are not explicit. Trigger precision: API and frontend operations described, but precise trigger conditions not defined. Environment fit: Docker Compose deployment provided, but configuration differences across environments not explained. Hence each scored 1-2.

Convention8 / 18 · 2.2/5

Evidence shows: README provides detailed project structure, installation steps, usage guide, but lacks known limitations and version changelog. License is Apache-2.0, but maintenance responsibility not stated. Hence each scored 0-2.

Effectiveness7 / 13 · 2.7/5

Evidence shows: README describes outputs as analysis reports and K-line charts, but no actual output examples or user feedback. Marginal value: emphasizes multi-agent collaboration and real-time analysis, but no comparison with existing solutions. Cost-benefit: no performance or cost data. Hence each scored 1-2.

Verifiability1 / 8 · 0.6/5

Evidence shows: feature claims in README lack verifiable test results or independent validation. Cross-source corroboration: no external references. Fact-inference separation: no distinction between facts and inferences. Hence each scored 0-1.

Risks and how to mitigate them
  • Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
  • Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
  • Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
  • Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
  • The repository provides no security audit or permission control documentation; assess risks before deployment.
  • Feature claims in README lack test evidence; verify actual behavior yourself.
  • Dependencies are not version-pinned, posing supply chain risks.
  • No known limitations or changelog provided, raising maintenance concerns.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision eb13a7fdf36a New commits since this review; the score may not cover them
See the full review method →

FAQ

Do I have to use a particular model provider?
No. The repository lists Bailian, OpenAI, DeepSeek, Kimi, and Zhipu. At least one API key must be configured, and the frontend can switch among configured providers and models.
Does it collect news automatically?
Yes. The documentation says Celery Beat schedules crawl tasks for 10 sources every minute and Celery workers execute them. You can also trigger crawling through /api/v1/news/refresh or /api/v1/news/crawl.
Where is the data stored?
News, task, and analysis records are stored in PostgreSQL. Redis is used for caching, and text vectors are stored in Milvus through AgenticX MilvusStorage.
What should I check if no news arrives or analysis fails?
Check celery-beat and celery-worker logs, Redis connectivity, and crawl_tasks records. For analysis failures, verify that .env has at least one provider API key and, when using Bailian, a DASHSCOPE_BASE_URL value.
View on GitHub ↗ Install ↓

Related agents