EquityMood is a real-time sentiment analysis dashboard for the Indonesian stock market (IDX/IHSG). It aggregates financial news from 14+ Indonesian media RSS feeds, runs NLP-based sentiment scoring, and overlays the results with live market data from Yahoo Finance — all in one interactive interface.
Built with Python, Streamlit, and Plotly. No subscriptions. No paid APIs. Just open data.
- Real-Time News Aggregation — Pulls articles from CNBC Indonesia, Kontan, Bisnis Indonesia, Detik Finance, Kompas, Tempo, Republika, and more.
- Dual Sentiment Engine — Lexicon-based analysis for speed; optional IndoBERT deep learning model for accuracy.
- Live Market Data — Real-time price, daily change, high/low, and volume via Yahoo Finance.
- Candlestick Chart — 5-day OHLCV candlestick visualization for the searched ticker.
- Multi-Ticker Comparison — Side-by-side candlestick charts and price cards for up to 4 stocks simultaneously.
- Sentiment Visualizations — Donut chart, gauge meter, word cloud, treemap, scatter plot, and historical trend.
- Auto-Refresh — Configurable auto-refresh timer (1, 2, 5, or 10 minutes) with a live countdown overlay.
- News Log & CSV Export — Full article table with sentiment badges, scores, and one-click CSV download.
| Layer | Tools |
|---|---|
| Interface | Streamlit |
| Charting | Plotly |
| NLP (Lexicon) | Custom Indonesian financial lexicon |
| NLP (Deep Learning) | IndoBERT via Transformers |
| Market Data | yfinance |
| Feed Parsing | feedparser + BeautifulSoup |
| Word Cloud | wordcloud |
equitymood/
├── app.py # Main Streamlit application
├── feed_parser.py # RSS feed aggregator (14 sources)
├── sentiment_analyzer.py # Lexicon + IndoBERT sentiment engine
├── market_data.py # Yahoo Finance real-time price wrapper
├── templates.py # HTML/SVG component templates
├── style.css # Global dark theme stylesheet
└── requirements.txt
1. Clone the repository
git clone https://github.com/yourusername/equitymood.git
cd equitymood2. Install dependencies
pip install -r requirements.txtFor IndoBERT support, PyTorch must be installed separately. See pytorch.org for platform-specific instructions.
3. Run the app
streamlit run app.pyThe dashboard will be available at http://localhost:8501.
- Enter a stock ticker (e.g.
BBRI,TLKM,GOTO) or the keywordIHSGin the sidebar. - Use the quick-select buttons at the top for common tickers.
- Switch between Dashboard, Perbandingan (Comparison), and Log Berita (News Log) from the sidebar.
- Toggle IndoBERT for higher-accuracy sentiment at the cost of slightly longer load times.
- Enable Auto-Refresh to keep the data current automatically.
| Portal | Category |
|---|---|
| CNBC Indonesia | Market, Investment, Economy |
| Kontan | News, Investment, Macro |
| Bisnis Indonesia | General Finance |
| Detik Finance | General Finance |
| Liputan6 Bisnis | Business News |
| Kompas Money | Economy |
| Okezone Finance | Finance |
| Sindonews Ekonomi | Economy |
| Republika Ekonomi | Economy |
| Tempo Bisnis | Business |
- All news data is sourced from publicly available RSS feeds.
- Market data is fetched via the unofficial Yahoo Finance API (
yfinance). Data may be delayed by 15 minutes. - IndoBERT inference runs locally on your machine — no external API calls are made for the NLP model.
- The lexicon-based analyzer is tuned for Indonesian financial text and runs without GPU requirements.
MIT License. See LICENSE for details.