← nitronium.dev
Python ile Kişisel Big Data Market Scanner
2026-06-07
Türkiye, ABD ve Avrupa piyasalarını, değerli emtiaları ve kripto varlıkları izleyen, Reddit sentiment'ini entegre eden, Telegram alert'i gönderen bir pipeline kurdum. Notlar burada.
Mimari
`
Yahoo Finance → finance.py → PostgreSQL → anomaly.py → Telegram
CoinGecko → crypto.py ↗ ↗
Reddit RSS → social.py → sentiment.py ───────────
↓
gbrain_sync.py → GBrain Vault
`
PM2 cron'larla çalışıyor: finance her 30 dk, crypto her 5 dk, social saatte bir, günlük özet gece 23:00.
Veri Kaynakları (Ücretsiz)
| Kaynak | Ne için | Limit |
|--------|---------|-------|
| Yahoo Finance (yfinance) | Hisse, emtia, döviz | 18 sembol / 30 dk güvenli |
| CoinGecko API | Kripto fiyat + 1h değişim | 50 req/dk |
| Reddit RSS | Sosyal mention sayımı | Limitsiz |
Alert Mantığı
3 katman:
1. Fiyat: Hisse ±%2, kripto ±%3 (BTC/ETH için %5) eşiği
2. Hacim: 20 günlük ortalama 2x üstü (geçmiş dolunca devreye girer)
3. Sentiment: Reddit mention 7 günlük ortalamanın 3x üstü
Her sembol için 1 saat cooldown -- aynı sembolden spam gelmiyor.
Dikkat Edilecekler
yfinance rate limit: yf.Tickers() batch API kullanıyor ama Yahoo Finance yine de kısar. 15 dk yeterli değil, 30 dk çalışıyor. Başarısız çalışmalar try/except ile sessizce atlanıyor, bir sonraki cron'da düzeliyor.
change_pct günlük: fast_info.previous_close ile karşılaştırıyor. 1 saatlik değil, bir önceki kapanıştan sapma. Bu yüzden piyasa açıldığında veya büyük haberle birlikte daha fazla alert gelir.
defusedxml zorunlu: Reddit RSS parse'ında stdlib xml.etree değil defusedxml kullan. XXE saldırısına karşı korumalı.
PM2 Warning Bastırma
yfinance içinden gelen Pandas deprecation warning'leri PM2 error log'unu kirletiyor. Çözüm:
`js
env: { RUN_SOURCES: "finance", PYTHONWARNINGS: "ignore" }
`
Sonraki Adım
KAP.org.tr scraping eklenince Türkiye haberleri de fiyat hareketleriyle eşleşebilecek.
---