import streamlit as st import yfinance as yf from prophet import Prophet import pandas as pd import matplotlib.pyplot as plt st.title("💱 Döviz Kuru Tahmin Uygulaması (Prophet)") st.write("Yahoo Finance verilerini kullanarak gelecekteki kur hareketlerini tahmin edin.") # 1. Kullanıcı Seçimleri pariteler = { "INR/USD": "INRUSD=X", "USD/TRY": "USDTRY=X", "EUR/USD": "EURUSD=X", "GBP/USD": "GBPUSD=X", "BTC/USD": "BTC-USD" } secilen_etiket = st.selectbox("Tahmin edilecek pariteyi seçin:", list(pariteler.keys())) symbol = pariteler[secilen_etiket] tahmin_suresi = st.slider("Tahmin gün sayısı:", 7, 90, 30) # 2. Veri İndirme @st.cache_data def veri_indir(sym): data = yf.download(sym, period="2y", interval="1d") # MultiIndex hatasını giderme if isinstance(data.columns, pd.MultiIndex): data.columns = data.columns.get_level_values(0) return data data = veri_indir(symbol) if not data.empty: # Prophet Formatına Dönüştürme df_prophet = data.reset_index()[['Date', 'Close']] df_prophet.columns = ['ds', 'y'] df_prophet['ds'] = df_prophet['ds'].dt.tz_localize(None) # 3. Model Eğitimi model = Prophet(daily_seasonality=True) model.fit(df_prophet) # 4. Tahmin future = model.make_future_dataframe(periods=tahmin_suresi) forecast = model.predict(future) # 5. Görselleştirme st.subheader(f"{secilen_etiket} Tahmin Grafiği") fig1 = model.plot(forecast) st.pyplot(fig1) st.subheader("Trend ve Mevsimsellik Bileşenleri") fig2 = model.plot_components(forecast) st.pyplot(fig2) # Güncel Bilgi Notu (Örnek Kur Bilgisi) if symbol == "INRUSD=X": st.info("Bilgi: 11 Nisan 2026 itibarıyla INR/USD kuru yaklaşık 0.01074 seviyesindedir.") else: st.error("Veri alınamadı, lütfen tekrar deneyin.")