---
name: fpp-forecast
description: >-
  Zaman serisi tahminlemesini "Forecasting: Principles and Practice, the Pythonic Way"
  (Hyndman et al., otexts.com/fpppy) metodolojisi ve nixtlaverse ile otonom yapar.
  SADECE '/fpp-forecast' komutuyla açıkça çağrılınca tetiklen; doğal dil ("tahmin et",
  "forecast" vb.) veya veri yüklenmesi tek başına TETİKLEMEZ — bu durumda
  '/fpp-forecast' ile çağrılabileceğini kısaca hatırlat. v2: tüm istatistiksel mantık
  deterministik Python script'lerinde (veri alımı, teşhis, kural-tabanlı model seçimi,
  CV, kalıntı kapısı, seçim) — bias yok, düşük token. Kitap 14 part'ta (B.14+B.15 tek
  partta; global modeller veri kapısı geçilmeden kurulmaz). Daima en az bir kıyas +
  nokta tahmini + %80/%95 aralık. Çıktı: 14 bölümlük çalıştırılmış .ipynb + Türkçe
  sonuç raporu. Çok aday/çok seri/ağır modelde paralel çalışır (fpp-diagnostician,
  fpp-model-worker, fpp-reducer).
---

# FPP Forecast v2 — Script-Tabanlı Otonom Tahminleme

**Temel ilke:** İstatistiksel kararları sen (LLM) VERMEZSİN; `scripts/` içindeki
deterministik Python kuralları verir. Senin işin orkestrasyon: script'leri çalıştır,
tek satırlık JSON özetlerini oku, kullanıcıya Türkçe aktar. Script çıktısına aykırı
model önerme; kural tablosunu ezme. Şüphede kalırsan otorite kitaptır
(`otexts.com/fpppy`), sonra `references/model-katalogu.md`.

## Tek komutla akış (varsayılan — tekil mod)

```bash
pip install statsforecast nbformat nbclient ipykernel pyarrow openpyxl tabulate  # bir kez
python <skill>/scripts/fpp_run.py VERI.csv            # hepsi otomatik
python <skill>/scripts/fpp_run.py VERI.xlsx --h 12    # ufku elle vermek istersen
```

`fpp_run.py` sırayla şunu yapar; her adım TEK satır kompakt JSON basar:

| Adım | Script | Ne yapar (kitap bölümü) |
|---|---|---|
| 1 | `fpp_ingest.py` | Tarih/değer/id kolonlarını, ayırıcı+ondalık işaretini, dayfirst'ü ve frekansı OTOMATİK tespit eder; uzun formata çevirir; eksikleri doldurur (B.1-2, B.13) |
| 2 | `fpp_diagnose.py` | STL güçleri F_T/F_S, beyaz gürültü, dönüşüm (log/Box-Cox), kesikli talep, aykırılar, NN/foundation kapıları → `profile.json` + kural tablosuyla `candidates.json` (B.2-4) |
| 3 | `fpp_fit.py --all` | Her adayı eğitir: train/test (~%20) + 3 pencereli CV + Ljung-Box kalıntı testi + %80/%95 aralık + geri-dönüşüm ve sapma düzeltmesi (B.5) |
| 4 | `fpp_select.py` | Deterministik seçim: kalıntı kapısı → en iyi CV/test MASE → basitlik ilkesi (kıyası ≥%2 geçemeyen aday elenir) → kombinasyon testi (B.5, B.13) |
| 5 | `fpp_report.py` | 14 bölümlük çalıştırılmış `.ipynb` + Türkçe `_sonuc_raporu.md` |

Bittiğinde iki çıktı dosyasını kullanıcının klasörüne kopyala ve `present_files` ile sun.
Rapordaki `warnings` listesini kullanıcıya MUTLAKA aktar.

## Ne zaman kullanıcıya sorarsın (yalnız bunlar)

- `fpp_ingest.py` kolon tespitinde hata dönerse → kolon listesiyle sor, `--ds-col/--y-col/--id-col` ver.
- Ufuk (h) iş kararına bağlıysa ve kullanıcı belirtmediyse script m'e göre makul varsayılan
  seçer; raporda belirt, sorma. Kullanıcı ufuk/frekans/amaç belirttiyse `--h` ile geçir.
- Yapısal kırılma/politika değişikliği gibi bilgiyi yalnız kullanıcı bilebilir; raporda
  yargısal not (B.6) olarak aktar.

## Opsiyonel Finansal Veri Girişi: TradingView MCP

Finansal piyasa serilerinde `atilaahmettaner/tradingview-mcp` bağlıysa veri toplama ve
ön teşhis için `tradingview` MCP araçlarını web'den önce dene. Codex plugin bağlantısı
şu entrypoint ile çalışır: `uvx --from tradingview-mcp-server tradingview-mcp` (repo
`.codex-plugin/plugin.json` ve `.codex-mcp.json` içerir). Server TradingView hesabına giriş
yapmaz; public/third-party market data kullanır.

MCP çıktısı ham forecast verisi değilse önce pandas ile temiz tarih-değer tablosuna dönüştür
ve sonra `fpp_ingest.py`/`fpp_run.py` akışına ver; model seçimini yine script'ler yapsın.
`yahoo_price`/`market_snapshot` canlı seviye ve benchmark; `multi_timeframe_analysis`/
`combined_analysis` diagnostic veya dış değişken; `rating_filter`/
`volume_breakout_scanner`/`bollinger_scan` evren seçimi; `financial_news`/
`market_sentiment` olay-sentiment notu; `backtest_strategy`/
`compare_strategies`/`walk_forward_backtest_strategy` ise forecast modeli yerine strateji
sağlamlık kontrolü olarak kullanılır. Her çıktıda as-of, sembol formatı (`THYAO.IS`,
`BTC-USD`, `^VIX` vb.) ve kaynak yaz; MCP eksik/uyumsuz dönerse mevcut CSV/Excel/resmî
kaynak/web akışına dön. Araç adlarını `tools/list` ile teyit et; sürümde olmayan araç
adını varsayma.

## 14 PART — kitabın kural haritası (B.14+B.15 birleşik)

Ayrıntılı kurallar ve model kodları: `references/model-katalogu.md`. Buradaki tablo
hangi kuralın NEREDE uygulandığını gösterir:

| Part | Kitap | Kural özü | Uygulandığı yer |
|---|---|---|---|
| 1 | B.1 Temeller | Nokta + %80/%95 aralık zorunlu; tahmin edilebilirlik dürüstlüğü | tüm script'ler |
| 2 | B.2 Keşif | Zaman/mevsimsel grafik + ACF + beyaz gürültü (±1.96/√T) | `fpp_diagnose`, notebook B.2-3 |
| 3 | B.3 Dönüşüm & ayrıştırma | Varyans seviyeyle büyüyorsa log/Box-Cox (Guerrero/MLE λ); STL | `fpp_diagnose`, geri-dönüşüm `fpp_fit` |
| 4 | B.4 Özellikler | F_T, F_S, entropi; profil = yöntem seçiminin girdisi | `fpp_diagnose` → `profile.json` |
| 5 | B.5 Araç kutusu | Kıyas zorunlu; kalıntı tanısı zorunlu; test/CV ile dürüst doğruluk; MASE | `fpp_fit`, `fpp_select` |
| 6 | B.6 Yargısal | Veri yok/kırılma → model çıktısı "kesin" sunulmaz; senaryo/düzeltme belgeli | rapor notu |
| 7 | B.7 Regresyon | Dış değişken ancak GELECEĞİ biliniyorsa (ex-ante) modele girer | `fpp_diagnose` (exog notu) |
| 8 | B.8 ETS | AutoETS (AICc); çarpımsallıkta M-bileşen/dönüşüm | aday tablosu |
| 9 | B.9 ARIMA | AutoARIMA; d/D KPSS-tabanlı; kalıntı denetimi şart | aday tablosu |
| 10 | B.10 Dinamik regresyon | Regresyon + ARIMA hatası; gelecek X yoksa kurulmaz | aday tablosu (koşullu) |
| 11 | B.11 Hiyerarşik | Çok seviyeli veri → MinTrace uzlaştırma (paralel modda reducer) | `paralel-mimari.md` |
| 12 | B.12 İleri | m>24/çoklu mevsim → MSTL; Prophet/VAR yalnız gerekçeliyse | aday tablosu |
| 13 | B.13 Pratik | Kesikli→Croston; kısa seri→basit+AICc; kombinasyon; eksik/aykırı kuralları | `fpp_ingest/diagnose/select` |
| 14 | B.14+15 Global (NN & Foundation) | VARSAYILAN DEĞİL. Kapı: ≥1000 gözlem veya ≥50 seri (NN); gerçek cold-start (foundation). Kapı kapalıysa KURULMAZ, raporda gerekçesi yazılır | `profile.gates`, notebook B.14 |

## Paralel mod (yalnız gerektiğinde)

Tetik: ≥4 aday **ve** ağır model (AutoARIMA×çok seri, NN kapısı açık) **veya** çok seri
(>10) **veya** kullanıcı hız istedi. Aksi halde tekil mod (fpp_run.py) yeter — agent açma.

1. `fpp_ingest.py` + `fpp_diagnose.py`'yi çalıştır (veya `fpp-diagnostician` agent'ına ver).
2. `candidates.json`'daki her aday için bir `fpp-model-worker`'ı TEK mesajda eşzamanlı
   başlat; her birine `run_dir` + `id` ver (işçi `fpp_fit.py --id <id>` çalıştırır).
3. Hepsi dönünce `fpp-reducer`'ı çağır (`fpp_select.py` + `fpp_report.py`).
Sözleşme ve şemalar: `references/paralel-mimari.md`.

## Çıktı ve sunum

- `<isim>_forecast.ipynb` — 14 bölümlük, çalıştırılmış, grafikli notebook (deterministik, seed=1).
- `<isim>_sonuc_raporu.md` — karar verici için Türkçe rapor (profil, yarış tablosu,
  seçim gerekçesi, tahmin+aralık, varsayım/riskler).
- İkisini de kullanıcı klasörüne kopyala, `present_files` ile sun. Kullanıcı isterse
  `docx`/`pdf` skill'iyle dönüştür.

## Referanslar

- `references/model-katalogu.md` — tüm modeller: ne zaman/nasıl/kod (Yöntem Seçim Matrisi).
- `references/python-kod-rehberi.md` — nixtlaverse kod kalıpları (script'ler dışında elle
  analiz gerekirse).
- `references/paralel-mimari.md` — paralel mod dosya sözleşmesi + JSON şemaları.
- `references/karar-akisi.html` — görsel akış şeması.
