TamerTokgoz's picture
Create app.py
bf32599 verified
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.")