# adrian-1bos/radar-financeiro architecture

> Architecture diagram of the GitHub repository adrian-1bos/radar-financeiro, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/adrian-1bos/radar-financeiro
- Repository: https://github.com/adrian-1bos/radar-financeiro

## Overview

Radar Financeiro is a Streamlit app for exploring an asset’s news sentiment, price trend, and price history. The user selects an asset and period, then starts an analysis: the app loads asset and keyword data, fetches and filters news, computes sentiment and trend, and displays news findings and price views. The graph separates news acquisition, sentiment analysis, and price handling. Source excerpts show these calls and external integrations; the README is empty, so undocumented capabilities are not inferred.

Main entry points: [`app.py`](https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py) (Streamlit dashboard), [`core/dados.py`](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/dados.py) (Keyword dictionaries), [`core/news.py`](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/news.py) (News aggregator), [`core/analise.py`](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/analise.py) (Batch sentiment analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["User workflow"]
  node_dashboard["Streamlit dashboard<br/>[app.py]"]
  node_asset_catalog["Asset catalog<br/>[dados.py]"]
  node_asset_db[("Asset database<br/>[ativos.db]")]
  node_news_filter["Relevant-news filter<br/>[app.py]"]
  node_results_view["Analysis results view<br/>[app.py]"]
end

subgraph group_news["News acquisition"]
  node_news_aggregator["News aggregator<br/>[news.py]"]
  node_newsapi{{"NewsAPI"}}
  node_currents{{"Currents API"}}
end

subgraph group_sentiment["Sentiment analysis"]
  node_keyword_data["Keyword dictionaries<br/>[dados.py]"]
  node_general_dict["General keywords<br/>[chave.json]"]
  node_sector_dict["Sector keywords<br/>[chave_setor.json]"]
  node_sentiment_engine["Batch sentiment analysis<br/>[analise.py]"]
  node_finbert{{"FinBERT model"}}
end

subgraph group_market["Market data and views"]
  node_trend_analysis["Price trend analysis<br/>[analise.py]"]
  node_price_loader["Price history loader<br/>[grafico.py]"]
  node_yfinance{{"Yahoo Finance"}}
  node_price_views["Price metrics and charts<br/>[grafico.py]"]
end

node_user(("Investor"))

node_user -->|"selects and starts"| node_dashboard
node_dashboard -->|"loads assets"| node_asset_catalog
node_asset_catalog -->|"reads"| node_asset_db
node_dashboard -->|"loads dictionaries"| node_keyword_data
node_keyword_data -->|"reads"| node_general_dict
node_keyword_data -->|"reads"| node_sector_dict
node_dashboard -->|"fetches news"| node_news_aggregator
node_news_aggregator -->|"requests articles"| node_newsapi
node_news_aggregator -->|"requests articles"| node_currents
node_dashboard -->|"filters news"| node_news_filter
node_news_filter -->|"analyzes relevant news"| node_sentiment_engine
node_sentiment_engine -->|"scores text"| node_finbert
node_sentiment_engine -->|"uses keyword filters"| node_keyword_data
node_dashboard -->|"loads price history"| node_price_loader
node_price_loader -->|"downloads prices"| node_yfinance
node_dashboard -->|"analyzes trend"| node_trend_analysis
node_dashboard -->|"displays price views"| node_price_views
node_dashboard -->|"displays findings"| node_results_view

click node_dashboard "https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py"
click node_asset_catalog "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/dados.py"
click node_asset_db "https://github.com/adrian-1bos/radar-financeiro/blob/main/data/ativos.db"
click node_news_filter "https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py"
click node_results_view "https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py"
click node_news_aggregator "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/news.py"
click node_keyword_data "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/dados.py"
click node_general_dict "https://github.com/adrian-1bos/radar-financeiro/blob/main/data/chave.json"
click node_sector_dict "https://github.com/adrian-1bos/radar-financeiro/blob/main/data/chave_setor.json"
click node_sentiment_engine "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/analise.py"
click node_trend_analysis "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/analise.py"
click node_price_loader "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/grafico.py"
click node_price_views "https://github.com/adrian-1bos/radar-financeiro/blob/main/core/grafico.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_asset_catalog,node_asset_db,node_news_filter,node_results_view toneBlue
class node_news_aggregator,node_newsapi,node_currents toneAmber
class node_keyword_data,node_general_dict,node_sector_dict,node_sentiment_engine,node_finbert toneMint
class node_trend_analysis,node_price_loader,node_yfinance,node_price_views toneRose
class node_user toneIndigo
```

## Components

### User workflow

- [Streamlit dashboard](https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py): `app.py`
- [Asset catalog](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/dados.py): `core/dados.py`
- [Asset database](https://github.com/adrian-1bos/radar-financeiro/blob/main/data/ativos.db): `data/ativos.db`
- [Relevant-news filter](https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py): `app.py`
- [Analysis results view](https://github.com/adrian-1bos/radar-financeiro/blob/main/app.py): `app.py`

### News acquisition

- [News aggregator](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/news.py): `core/news.py`
- **NewsAPI**
- **Currents API**

### Sentiment analysis

- [Keyword dictionaries](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/dados.py): `core/dados.py`
- [General keywords](https://github.com/adrian-1bos/radar-financeiro/blob/main/data/chave.json): `data/chave.json`
- [Sector keywords](https://github.com/adrian-1bos/radar-financeiro/blob/main/data/chave_setor.json): `data/chave_setor.json`
- [Batch sentiment analysis](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/analise.py): `core/analise.py`
- **FinBERT model**

### Market data and views

- [Price trend analysis](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/analise.py): `core/analise.py`
- [Price history loader](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/grafico.py): `core/grafico.py`
- **Yahoo Finance**
- [Price metrics and charts](https://github.com/adrian-1bos/radar-financeiro/blob/main/core/grafico.py): `core/grafico.py`

### Other components

- **Investor**

## Connections

- Investor → Streamlit dashboard: selects and starts (evidence: `app.py`)
- Streamlit dashboard → Asset catalog: loads assets (evidence: `app.py`)
- Asset catalog → Asset database: reads (evidence: `core/dados.py`)
- Streamlit dashboard → Keyword dictionaries: loads dictionaries (evidence: `app.py`)
- Keyword dictionaries → General keywords: reads (evidence: `core/dados.py`)
- Keyword dictionaries → Sector keywords: reads (evidence: `core/dados.py`)
- Streamlit dashboard → News aggregator: fetches news (evidence: `app.py`)
- News aggregator → NewsAPI: requests articles (evidence: `core/news.py`)
- News aggregator → Currents API: requests articles (evidence: `core/news.py`)
- Streamlit dashboard → Relevant-news filter: filters news (evidence: `app.py`)
- Relevant-news filter → Batch sentiment analysis: analyzes relevant news (evidence: `app.py`)
- Batch sentiment analysis → FinBERT model: scores text (evidence: `core/analise.py`)
- Batch sentiment analysis → Keyword dictionaries: uses keyword filters (evidence: `core/analise.py`)
- Streamlit dashboard → Price history loader: loads price history (evidence: `app.py`)
- Price history loader → Yahoo Finance: downloads prices (evidence: `core/grafico.py`)
- Streamlit dashboard → Price trend analysis: analyzes trend (evidence: `app.py`)
- Streamlit dashboard → Price metrics and charts: displays price views (evidence: `app.py`)
- Streamlit dashboard → Analysis results view: displays findings (evidence: `app.py`)
