Analisis Saham Harian: Sistem AI yang Mengubah Watchlist Menjadi Dasbor Keputusan Harian

daily_stock_analysis karya ZhuLinsen adalah salah satu proyek AI-keuangan dengan bintang terbanyak saat ini — repositori Python nomor 1 hari itu di Trendshift. Namun bagian menariknya bukan jumlah bintang. Yang menarik adalah proyek ini menolak berpura-pura memprediksi harga. Sebaliknya, ia menyelesaikan masalah yang lebih sempit namun jauh lebih berguna: setiap hari bursa, mengambil watchlist Anda dan menghasilkan laporan analitik yang terstruktur dan dapat dijelaskan — lalu mengirimkannya ke tempat Anda benar-benar membaca, yaitu aplikasi pesan Anda.
Penafian dari penulis proyek: hanya untuk pembelajaran dan penelitian. Ini bukan nasihat investasi. Pasar mengandung risiko.
Ide Inti: Bukan Bot, melainkan Analis-Reporter Harian
Sebagian besar repositori "trading AI" mengejar fantasi yang sama: model masuk, sinyal keluar, uang naik. daily_stock_analysis dibangun di atas premis yang lebih jujur — bagian sulit dari berinvestasi bukanlah menghasilkan satu sinyal lagi, melainkan menyusun gambaran yang lengkap dan konsisten tentang sebuah saham dan menuliskannya dengan cara yang sama setiap hari.
Jadi ia berperilaku seperti analis junior dengan jadwal. Pipeline-nya linier dan mudah dibaca:
| Tahap | Apa yang terjadi |
|---|---|
| Pengambilan data | Kuotasi, candle harian, indikator, aliran modal, fundamental, chip |
| Analisis teknikal | Moving average, RSI, volume, rasio bias, klasifikasi tren |
| Berita & intelijen | Mencari berita terbaru, pengumuman, sentimen per ticker |
| Analisis LLM | Membangun paket konteks dan prompt, menghasilkan dasbor keputusan JSON |
| Render laporan | Laporan Markdown, opsional dikonversi menjadi gambar |
| Notifikasi | Mengirim ke WeCom, Feishu, Telegram, Discord, Slack, atau email |
Secara default ia berjalan terjadwal (hari kerja, setelah penutupan) dan melewati hari non-bursa. Ia mencakup saham A, Hong Kong, saham dan ETF AS, dengan pasar Jepang dan Korea didukung pada tingkat yang lebih terbatas di tempat sumber data tidak menjangkau.
Bagian yang Diam-diam Cerdas: Fallback Data

Keputusan rekayasa paling tangguh dalam proyek ini bukanlah LLM — melainkan caranya memperlakukan data sebagai tidak dapat diandalkan secara default.
Data pasar diambil melalui rantai prioritas enam penyedia, masing-masing menjadi fallback bagi yang sebelumnya:
Efinance (P0) → Tencent (P0) → Akshare (P1) → Pytdx (P2) → Baostock (P3) → Yfinance (P4)
Ketika Anda menganalisis ticker AS, sistem secara otomatis melewati penyedia khusus Tiongkok dan mengarahkan ke Yahoo Finance. Jika sebuah sumber gagal, timeout, atau mengembalikan data parsial, proses tersebut menurunkan satu blok itu saja alih-alih membuat seluruh laporan rusak. Prompt bahkan diberi tahu blok mana yang fallback, partial, atau missing — sehingga model diwajibkan menulis "data tidak tersedia" alih-alih mengarang angka.
Ini adalah naluri yang tepat untuk sistem produksi mana pun: kegagalan satu sumber data tidak boleh menjatuhkan seluruh analisis. Perlakukan setiap feed sebagai best-effort, standarkan field-nya, dan buat data yang hilang terlihat alih-alih mengisinya secara diam-diam.
Dasbor Keputusan
LLM tidak mengembalikan prosa — ia mengembalikan "dasbor keputusan" JSON yang ketat yang dirender laporan menjadi tata letak yang konsisten:
- Kesimpulan inti — satu kalimat: beli, tahan, atau tunggu, ditambah sensitivitas waktu.
- Saran terpisah — panduan berbeda untuk seseorang yang memegang posisi versus seseorang yang memegang kas.
- Perspektif data — penyelarasan MA, harga versus support/resistance, rasio bias, pembacaan volume.
- Intelijen — peringatan risiko dan katalis positif, masing-masing wajib mencantumkan tanggal.
- Rencana tempur — titik sniper konkret: beli ideal, stop-loss, target, penentuan ukuran posisi.
- Daftar periksa — setiap kondisi ditandai ✅ / ⚠️ / ❌ (penyelarasan bullish, bias dalam rentang, volume, tidak ada berita buruk besar, valuasi).
Disiplin yang tertanam dalam prompt bersifat tegas dan masuk akal: jangan mengejar (bias lebih dari 5% di atas MA5 adalah "tidak boleh beli" yang tegas), hanya tradingkan penyelarasan MA bullish (MA5 > MA10 > MA20), lebih suka membeli pullback volume menyusut ke support, dan jangan pernah berbalik antara beli dan jual pada pergerakan satu hari.
Strategi Agen: Ajukan Pertanyaan ke Sistem
Selain laporan harian, proyek ini menyertakan mode agen dengan 15 playbook strategi bawaan yang dapat Anda tanyakan per ticker:
| Keluarga | Contoh |
|---|---|
| Tren / moving average | MA golden cross, tren bullish |
| Teori struktur | teori Chan (Zen), gelombang Elliott |
| Perilaku / likuiditas | siklus emosi, breakout volume, volume dasar, pullback volume menyusut |
| Katalis / narasi | tema panas, event-driven, repricing ekspektasi |
| Kualitas / pertumbuhan | kualitas pertumbuhan |
Setiap strategi adalah file YAML dengan aturannya sendiri, alat yang diperlukan, dan penyesuaian skoring — sehingga "intelijen" dapat dikonfigurasi dan diaudit, bukan tersembunyi di dalam satu prompt raksasa.
Cara Membacanya Tanpa Menipu Diri Sendiri
Proyek seperti ini mudah untuk dipercaya berlebihan. Daftar periksa evaluasi yang jujur:
- Kualitas sumber berita. Blok intelijen hanya sebaik penyedia pencarian yang Anda konfigurasikan — tanpa itu, sentimen dan katalis menjadi kosong dan laporan bersandar sepenuhnya pada teknikal.
- Determinisme. Output LLM bervariasi; ticker yang sama bisa terbaca sedikit berbeda di setiap proses. Perlakukan dasbor sebagai opini terstruktur, bukan kebenaran tetap.
- Cakupan per pasar. Kedalaman saham A (aliran modal, chip, dragon-tiger) menurun dengan baik menjadi
not_supporteddi pasar yang tidak dicakup data. - Kesegaran data. Perhatikan flag
fallback/partial— input yang menurun seharusnya menurunkan keyakinan Anda, persis seperti yang diinstruksikan prompt. - Backtesting ≠ keuntungan. Laporan adalah dukungan keputusan, bukan keunggulan yang terverifikasi.
Keterbatasan dan Penilaian Jujur
Apa yang bukan daily_stock_analysis:
- Bukan sistem eksekusi. Ia menganalisis dan melaporkan; ia tidak menempatkan order atau memodelkan likuiditas.
- Bergantung pada model. Kualitas output mengikuti LLM yang Anda arahkan.
- Bergantung pada pencarian. Tanpa kunci API berita, paruh kualitatif laporan menjadi tipis.
- Non-deterministik. Input identik bisa menghasilkan dasbor yang sedikit berbeda.
Tautan
- 💻 GitHub: ZhuLinsen/daily_stock_analysis
- 📄 Lisensi: MIT
Kesimpulan
daily_stock_analysis berharga bukan sebagai oracle melainkan sebagai kebiasaan analitik yang dapat diulang, yang terotomatisasi:
- Standarkan apa arti "menelaah sebuah saham", setiap hari.
- Perlakukan data sebagai tidak dapat diandalkan dan buat celahnya terlihat.
- Buat kesimpulan dapat dijelaskan — skor, level, daftar periksa, risiko.
- Pisahkan pembentukan ide (15 strategi) dari kerangka keputusan yang disiplin.
Untuk pembelajaran, tinjauan harian, dan membuat prototipe alur kerja riset, ia dibangun dengan baik. Untuk produksi, lapisan berikutnya adalah lapisan yang sama yang dibutuhkan setiap sistem serius: data yang tervalidasi, kontrol model-drift, eksekusi yang realistis, dan aturan risiko yang hidup di dalam kode, bukan hanya di dalam prompt.
Penulis
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.