Platform forecasting multi-domain yang memprediksi harga kripto, saham, permintaan energi, dan komoditas pangan secara real-time — dilengkapi interval keyakinan 80%, early warning cerdas, audit akurasi otomatis, analis AI (Groq), dashboard interaktif, REST API, dan notifikasi Telegram.
https://salimz-arch-tsf-market-analytics-dashboardapp-icldw3.streamlit.app/
Satu skema data (timestamp, series_id, domain, value) dan satu pipeline untuk semua domain:
kripto, saham, energi, dan pangan. Menambah series baru cukup dengan menaruh CSV di data/raw/.
Setiap series dilatih dengan 3 model LightGBM: titik (P50) + quantile P10 & P90. Dashboard menampilkan pita ketidakpastian; interval lebar = model ragu, interval sempit = model yakin.
Alarm tidak menyala hanya karena harga berubah — tetapi hanya ketika prediksi menyimpang dari pola musiman normal (baseline jam-untuk energi, hari-untuk pangan harian, median 28 hari untuk data harian bertrend). Anti false-alarm: beban listrik turun tiap malam ≠ anomali.
Sinyal UP / DOWN / FLAT per series dengan threshold per domain, plus peringkat pergerakan
terbesar (Top Movers) di dashboard.
Sistem mencocokkan setiap prediksi dengan aktual yang terjadi kemudian: MAE / MAPE live dan coverage interval (ideal ≈ 80%). Model yang memburuk akan terlihat.
Laporan pasar gaya riset institusional (Ringkasan Eksekutif → Energi → Pangan → Finansial → Rekomendasi) dengan format terkunci agar konsisten, temperature 0.1, hash-cached (hemat kuota), dan fallback rule-based deterministik bila API down.
Overview (KPI, Market Pulse gradient, donut domain, peringatan, aktivitas) • Forecast & Interval • Kinerja Model • Laporan AI • Data Historis. Tema dark analytics profesional, CSS terpisah.
GET / health • GET /series daftar series • GET /predict?series_id=BTC_USD prediksi terbaru.
Laporan AI + peringatan anomali terkirim otomatis ke Telegram tiap siklus.
| Domain | Series | Sumber | Frekuensi | Mode Update |
|---|---|---|---|---|
| Kripto | BTC_USD |
Yahoo Finance (BTC-USD) via yfinance |
1 jam | Real-time: loop tiap 1 jam |
| Saham | BBCA_JK |
Yahoo Finance IDX (BBCA.JK) via yfinance |
1 jam | Loop tiap 1 jam (jam bursa) |
| Energi | NATGAS_GLOBAL (NG=F), OIL_GLOBAL (CL=F) |
Yahoo Finance futures — Henry Hub & WTI | harian | Dicek tiap jam |
| Energi (lokal) | LOAD_JKT |
Simulasi beban listrik Jakarta (siap diganti data PLN/ESDM/SCADA) | 1 jam | — |
| Pangan | SUGAR_GLOBAL (SB=F), WHEAT_GLOBAL (ZW=F), CORN_GLOBAL (ZC=F) |
Yahoo Finance commodity futures — acuan harga pangan global | harian | Dicek tiap jam |
Alur real-time:
src/realtime_loop.pymenjalankan setiap 3600 detik: ingestion → feature engineering → prediksi + interval → smart warning → evaluasi live → laporan AI → kirim Telegram.
Yahoo Finance (yfinance: kripto/saham/futures)
│ (REST, interval 1h/1d)
▼
Ingestion & validasi → data/raw/*.csv
▼
Feature engineering (lag, rolling, kalender — leak-proof via shift(1))
▼
LightGBM per-series: P10 / P50 / P90 → models/*.joblib
▼
Smart warning (seasonal baseline) + sinyal UP/DOWN/FLAT
▼
Live evaluation (prediksi vs aktual) → data/forecasts/evaluation.csv
▼
Groq AI analyst (fallback rule-based) → conclusions.csv
▼
Streamlit dashboard │ FastAPI │ Telegram
dashboard/app.py: Streamlit dashboard untuk visualisasi dan laporan KPIstyle.css: gaya visual dashboard
data/raw/: file data historis input untuk setiap seri waktuprocessed/: dataset olahan yang siap dipakai untuk trainingforecasts/: hasil prediksi, evaluasi, dan kesimpulan
models/- Model siap pakai (
*.joblib) metrics.csv: metrik kinerja model
- Model siap pakai (
src/api.py: FastAPI service untuk forecastingfeatures.py: pembuatan fitur untuk modeltrain.py: pipeline pelatihan modelevaluate.py: evaluasi hasil modelforecast_latest.py: pembuatan prediksi terbaruingest_*.py: skrip ingest untuk berbagai sumber databuild_dataset.py: pembuatan dataset terintegrasirealtime_loop.py: loop real-time untuk pembaruan data/forecastnotifier.py: notifikasi/peringatan berbasis hasil forecast
- Python 3.9+ (direkomendasikan)
- Windows, macOS, atau Linux
pipuntuk instalasi paket
git clone https://github.com/salimz-arch/tsf-market-analytics.git
cd time-series-forecasting
python -m venv .venv && .venv\Scripts\activate # Windows
pip install -r requirements.txt
# Secret API
echo GROQ_API_KEY=gsk_xxx > .env
echo TELEGRAM_BOT_TOKEN=xxx >> .env
echo TELEGRAM_CHAT_ID=xxx >> .env
# Pipeline pertama
python -m src.ingest_crypto
python -m src.ingest_stock
python -m src.ingest_commodities
python -m src.build_dataset
python -m src.train
python -m src.forecast_latest
python -m src.evaluate
python -m src.analyst
# Jalankan layanan
streamlit run dashboard/app.py # dashboard
python -m uvicorn src.api:app --reload # REST API
python -m src.realtime_loop # mode real-time 24/7- Siapkan data mentah di
data/raw/dalam format CSV. - Jalankan pipeline untuk membuat dataset dan melatih model jika perlu.
- Gunakan dashboard untuk memonitor hasil forecast dan metrik kinerja.
- Akses API untuk menarik prediksi programatik.
- Model disimpan dalam format
joblibdi foldermodels/ - Prediksi API membaca file data mentah dan memproses fitur sebelum menjalankan model
- Dashboard menggunakan file forecast/evaluasi di
data/forecasts/
Untuk memperbarui pipeline atau menambahkan seri baru:
src/build_dataset.py: membangun dataset historissrc/train.py: melatih model barusrc/evaluate.py: menghitung metrik modelsrc/forecast_latest.py: membuat prediksi terbarusrc/realtime_loop.py: jalankan loop bila ingin memproses data secara berkelanjutan
- Jika dashboard tidak menampilkan data: pastikan
data/forecasts/forecast.csvdandata/raw/berisi file CSV yang valid. - Jika API
predictgagal karena model tidak ditemukan: pastikan file modelmodels/<series_id>.joblibtersedia. - Jika instalasi paket gagal: periksa versi Python dan jalankan kembali
pip install -r requirements.txt.