Skip to content

brianabdl/reksadana-radar

Repository files navigation

Reksadana Radar

An AI agent that monitors every Indonesian equity mutual fund (reksadana saham), tracks which stocks the fund managers hold most and which ones they're accumulating / trimming month over month — then pushes the report to Telegram.

Reksadana Radar pulls each fund's monthly Fund Fact Sheet holdings (via the Pasardana API), computes a consensus of where the "big money" is positioned, and detects allocation shifts month-over-month. The goal: help retail investors position their portfolio alongside the stocks the manager consensus considers "safe".

What it reports

  1. Consensus — most widely held stocks, measured by total Rupiah exposure (fund AUM × weight%) and the share of funds holding them.
  2. MoM accumulation — stocks whose exposure rose versus last month (including brand-new positions).
  3. MoM distribution — stocks being trimmed or fully exited.
  4. AI summary — a short Bahasa-Indonesia narrative (optional, via Claude).

Beyond the monthly push report, an interactive Telegram bot lets you browse historical data through / commands (/consensus, /movers, /stock, etc.).

Quick start

git clone https://github.com/brianabdl/reksadana-radar.git && cd reksadana-radar
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env          # fill in Telegram token (+ optional ANTHROPIC_API_KEY)

# Test connectivity, then send the first report
PYTHONPATH=src .venv/bin/python -m reksadana_radar test-telegram
PYTHONPATH=src .venv/bin/python -m reksadana_radar run

Fill in .env:

  • TELEGRAM_BOT_TOKEN — from @BotFather.
  • TELEGRAM_CHAT_ID — your chat id (use @userinfobot, or check getUpdates).
  • ANTHROPIC_API_KEY — optional; leave empty for a numbers-only report without the AI narrative.

Tune behavior (AUM threshold, fund count, top-N, LLM model, schedule) in config.yaml.

Documentation

Doc Contents
docs/usage.md All CLI commands, history backfill, bot command reference, smoke test
docs/architecture.md Pipeline flow, analysis methodology, stock identity, backfill & bot internals
docs/deployment.md Deploy to a VPS via Docker / cron

Notes & limitations

  • ⚠️ FFS holding data is lagging by ~1 month and usually covers only the Top 10 holdings. This is a consensus radar, not a real-time signal, and not buy/sell advice. Fund managers have already moved by the time the data is published.
  • Unit classes (Class A/B/C) of the same fund are counted as separate funds, so AUM is slightly double-counted. The signal direction is still valid; dedup by manager + holding fingerprint is not implemented.
  • MoM deltas use the current AUM for both months, so the delta reflects pure manager allocation change, not AUM/price drift.
  • The Pasardana API credential in pasardana.py is a public key embedded in their SPA frontend, used with an inter-request delay. Respect Pasardana's ToS — this is for personal monitoring, not data redistribution.
  • Not financial advice. DYOR.

LICENSE

GPL-3.0

About

Monitor every Indonesian equity mutual fund (reksadana saham)

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors