How nichsedge/idx-bei works
IDX-BEI is a data-collection and quantitative-analysis toolkit for Indonesian equities, with command-line, REST/WebSocket, dashboard, and MCP interfaces. Its main workflow collects IDX market and company data, ingests and stores it as time series and Parquet exports, then serves analysis such as screening, signals, backtests, dividends, and ownership graphs. The React dashboard presents those capabilities and can trigger ingestion. The README documents additional screens and interfaces not visible in sampled implementation excerpts; their exact wiring is therefore represented only where documented, not as speculative internal call chains.
Main entry points: cli.py CLI Commands · query.py DuckDB Query Layer · api.py REST & WebSocket API · ingestion.py Ingestion & Backfill
Components 24
Collection & Ingestion
- IDX Scrapers
python/src/idx/scrapers - IDX HTTP Client
python/src/idx/core/client.py - Ingestion & Backfill
python/src/idx/ingestion.py - Daily Pipeline
python/src/idx/pipelines/daily.py
Storage & Query
- Parquet Export
python/src/idx/pipelines/parquet.py - Time-Series Store
python/src/idx/core/timeseries.py - DuckDB Query Layer
python/src/idx/core/query.py
Quantitative Analysis
- Strategy Backtester
python/src/idx/backtest.py - Decision Signals
python/src/idx/signals.py - Dividend Analysis
python/src/idx/dividend.py - Compounder Screener
python/src/idx/compounder.py - Ownership Graph
python/src/idx/graph.py
User Interfaces
- CLI Commands
python/src/idx/cli.py - REST & WebSocket API
python/src/idx/api.py - React Dashboard
frontend/src/App.tsx - Frontend API Client
frontend/src/services/api.ts - Live Stream Client
frontend/src/services/websocket.ts - Ingestion Controls
frontend/src/components/IngestionTab.tsx - MCP Tool Server
python/src/idx/mcp/server.py
External Integrations
- Notification Webhooks
- Neo4j Graph Database
Other components
- Investor / Analyst
- IDX Data Services
- AI Assistant
Connections 37
- Investor / Analyst → CLI Commands: runs commands
- CLI Commands → Ingestion & Backfill: dispatches jobs
- CLI Commands → Strategy Backtester: runs strategies
- CLI Commands → Decision Signals: builds briefings
- CLI Commands → Dividend Analysis: analyzes dividends
- CLI Commands → Compounder Screener: screens companies
- CLI Commands → Ownership Graph: runs graph analysis
- IDX Scrapers → IDX HTTP Client: requests IDX data
- IDX HTTP Client → IDX Data Services: fetches data
- Ingestion & Backfill → Daily Pipeline: runs daily jobs
- Daily Pipeline → IDX Scrapers: collects market data
- Ingestion & Backfill → Parquet Export: exports backfills
- Parquet Export → Time-Series Store: writes partitions
- Ingestion & Backfill → Time-Series Store: checks coverage
- DuckDB Query Layer → Time-Series Store: reads partitions
- Strategy Backtester → DuckDB Query Layer: queries history
- Decision Signals → DuckDB Query Layer: queries market data
- Dividend Analysis → DuckDB Query Layer: queries market data
- Compounder Screener → DuckDB Query Layer: queries fundamentals
- Ownership Graph → Neo4j Graph Database: analyzes network
- Investor / Analyst → React Dashboard: uses dashboard
- React Dashboard → Frontend API Client: loads data
- Frontend API Client → REST & WebSocket API: calls REST endpoints
- React Dashboard → Live Stream Client: subscribes to stream
- Live Stream Client → REST & WebSocket API: opens WebSocket
- REST & WebSocket API → DuckDB Query Layer: queries datasets
- REST & WebSocket API → Decision Signals: serves analysis
- REST & WebSocket API → Dividend Analysis: serves analysis
- React Dashboard → Ingestion Controls: shows ingestion controls
- Ingestion Controls → Frontend API Client: requests job status
- Ingestion Controls → Frontend API Client: triggers jobs
- REST & WebSocket API → Ingestion & Backfill: starts background jobs
- AI Assistant → MCP Tool Server: invokes tools
- MCP Tool Server → DuckDB Query Layer: queries time series
- MCP Tool Server → Decision Signals: builds briefing
- MCP Tool Server → Ownership Graph: queries holdings
- Decision Signals → Notification Webhooks: broadcasts summary