Data & Analysis financial-newssentiment-analysisquant-financefastapimilvusceleryaksharereact

FinnewsHunter Financial Intelligence

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

FollowAgents review · FARS-2.0
Not yet reviewed
See the full review method →

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.

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 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"

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.

Related agents