Enes Berke Karaoğlan commited on
Commit
a8b14d1
·
1 Parent(s): 6a2e1f1

fix: Veri çekme hatası düzeltildi, hata kontrolleri geliştirildi

Browse files
Files changed (1) hide show
  1. app.py +27 -24
app.py CHANGED
@@ -21,28 +21,28 @@ for sym in symbols:
21
  # Veri çekme fonksiyonu
22
  def load_data(symbols):
23
  data = {}
24
-
25
  for sym in symbols:
26
  try:
27
  stock_data = yf.download(sym, start="2022-01-01", end="2024-01-01")['Close']
28
  if not stock_data.empty:
29
  data[sym] = stock_data
30
  else:
31
- st.warning(f"{sym} için veri bulunamadı!")
32
-
33
  except Exception as e:
34
- st.error(f"{sym} için veri çekilirken hata oluştu: {e}")
35
 
36
  if not data:
37
- st.error("Hiçbir hisse senedi verisi yüklenemedi. Lütfen sembolleri kontrol edin.")
38
  return pd.DataFrame() # Boş DataFrame döndür
39
-
40
  return pd.DataFrame(data)
41
 
42
  # Veriyi yükleyin
43
  df = load_data(symbols)
44
 
45
- if not df.empty:
46
  # Portföy performansını hesaplayın
47
  total_investment = sum(amounts.values())
48
 
@@ -50,62 +50,62 @@ if not df.empty:
50
  portfolio_value = df.iloc[-1] * pd.Series(amounts)
51
  portfolio_value_total = portfolio_value.sum()
52
 
53
- st.write(f"Toplam yatırım miktarı: ${total_investment:.2f}")
54
- st.write(f"Her bir hissenin mevcut değeri:")
55
  st.write(portfolio_value)
56
- st.write(f"Portföyün toplam değeri: ${portfolio_value_total:.2f}")
57
 
58
  # Grafikler
59
- st.subheader("Hisse Senedi Fiyatları")
60
  fig = px.line(df, title="Hisse Senedi Fiyatları")
61
  st.plotly_chart(fig)
62
 
63
- st.subheader("Portföy Dağılım Grafiği")
64
  fig = px.bar(x=amounts.keys(), y=portfolio_value, labels={"x": 'Yatırım Araçları', 'y': 'Portföy Değeri'})
65
  st.plotly_chart(fig)
66
 
67
  # Getiri hesaplamaları
68
- st.subheader("Günlük Getiriler")
69
  daily_returns = df.pct_change().dropna()
70
  st.dataframe(daily_returns)
71
 
72
- st.subheader("Aylık Getiriler")
73
  monthly_returns = df.resample('M').ffill().pct_change().dropna()
74
  st.dataframe(monthly_returns)
75
 
76
- st.subheader("Yıllık Getiriler")
77
  annual_returns = df.resample('Y').ffill().pct_change().dropna()
78
  st.dataframe(annual_returns)
79
 
80
  # Risk Analizi
81
- st.subheader("Volatilite (Yıllık)")
82
  volatility = daily_returns.std() * np.sqrt(252)
83
  st.dataframe(volatility)
84
 
85
- st.subheader("Beta Değeri")
86
  if not daily_returns.empty:
87
  beta = daily_returns.cov() / daily_returns.var()
88
  st.dataframe(beta)
89
 
90
  # Hareketli Ortalama
91
- st.subheader("Hareketli Ortalama")
92
  window_size = st.sidebar.slider("Hareketli Ortalama Penceresi (Gün)", 5, 100, 20)
93
  moving_avg = df.rolling(window=window_size).mean()
94
  st.line_chart(moving_avg)
95
 
96
  # Tarih Aralığı Filtreleme
97
- st.subheader("Tarih Aralığına Göre Veri Filtreleme")
98
- start_date = st.sidebar.date_input("Başlangıç Tarihi", pd.to_datetime("2023-01-01"))
99
- end_date = st.sidebar.date_input("Bitiş Tarihi", pd.to_datetime("2024-01-01"))
100
 
101
  if start_date < end_date:
102
  filtered_data = df[(df.index >= start_date) & (df.index <= end_date)]
103
  st.line_chart(filtered_data)
104
  else:
105
- st.error("Başlangıç tarihi bitiş tarihinden sonra olmamalıdır.")
106
 
107
  # Monte Carlo Simülasyonu
108
- st.subheader("Monte Carlo Simülasyonu")
109
 
110
  if not daily_returns.empty:
111
  mean_returns = daily_returns.mean()
@@ -127,5 +127,8 @@ if not df.empty:
127
 
128
  st.line_chart(simulation_df)
129
  else:
130
- st.warning("Monte Carlo Simülasyonu için yeterli veri yok.")
 
 
 
131
 
 
21
  # Veri çekme fonksiyonu
22
  def load_data(symbols):
23
  data = {}
24
+
25
  for sym in symbols:
26
  try:
27
  stock_data = yf.download(sym, start="2022-01-01", end="2024-01-01")['Close']
28
  if not stock_data.empty:
29
  data[sym] = stock_data
30
  else:
31
+ st.warning(f"⚠️ {sym} için veri bulunamadı! Lütfen doğru bir hisse senedi sembolü girdiğinizden emin olun.")
32
+
33
  except Exception as e:
34
+ st.error(f"{sym} için veri çekilirken hata oluştu: {e}")
35
 
36
  if not data:
37
+ st.warning("⚠️ Hiçbir hisse senedi verisi yüklenemedi. Lütfen sembolleri kontrol edin.")
38
  return pd.DataFrame() # Boş DataFrame döndür
39
+
40
  return pd.DataFrame(data)
41
 
42
  # Veriyi yükleyin
43
  df = load_data(symbols)
44
 
45
+ if not df.empty and not df.isnull().all().all():
46
  # Portföy performansını hesaplayın
47
  total_investment = sum(amounts.values())
48
 
 
50
  portfolio_value = df.iloc[-1] * pd.Series(amounts)
51
  portfolio_value_total = portfolio_value.sum()
52
 
53
+ st.write(f"💰 **Toplam yatırım miktarı:** ${total_investment:.2f}")
54
+ st.write(f"📊 **Her bir hissenin mevcut değeri:**")
55
  st.write(portfolio_value)
56
+ st.write(f"💼 **Portföyün toplam değeri:** ${portfolio_value_total:.2f}")
57
 
58
  # Grafikler
59
+ st.subheader("📈 Hisse Senedi Fiyatları")
60
  fig = px.line(df, title="Hisse Senedi Fiyatları")
61
  st.plotly_chart(fig)
62
 
63
+ st.subheader("📊 Portföy Dağılım Grafiği")
64
  fig = px.bar(x=amounts.keys(), y=portfolio_value, labels={"x": 'Yatırım Araçları', 'y': 'Portföy Değeri'})
65
  st.plotly_chart(fig)
66
 
67
  # Getiri hesaplamaları
68
+ st.subheader("📅 Günlük Getiriler")
69
  daily_returns = df.pct_change().dropna()
70
  st.dataframe(daily_returns)
71
 
72
+ st.subheader("📅 Aylık Getiriler")
73
  monthly_returns = df.resample('M').ffill().pct_change().dropna()
74
  st.dataframe(monthly_returns)
75
 
76
+ st.subheader("📅 Yıllık Getiriler")
77
  annual_returns = df.resample('Y').ffill().pct_change().dropna()
78
  st.dataframe(annual_returns)
79
 
80
  # Risk Analizi
81
+ st.subheader("📊 Volatilite (Yıllık)")
82
  volatility = daily_returns.std() * np.sqrt(252)
83
  st.dataframe(volatility)
84
 
85
+ st.subheader("📉 Beta Değeri")
86
  if not daily_returns.empty:
87
  beta = daily_returns.cov() / daily_returns.var()
88
  st.dataframe(beta)
89
 
90
  # Hareketli Ortalama
91
+ st.subheader("📊 Hareketli Ortalama")
92
  window_size = st.sidebar.slider("Hareketli Ortalama Penceresi (Gün)", 5, 100, 20)
93
  moving_avg = df.rolling(window=window_size).mean()
94
  st.line_chart(moving_avg)
95
 
96
  # Tarih Aralığı Filtreleme
97
+ st.subheader("📅 Tarih Aralığına Göre Veri Filtreleme")
98
+ start_date = st.sidebar.date_input("📅 Başlangıç Tarihi", pd.to_datetime("2023-01-01"))
99
+ end_date = st.sidebar.date_input("📅 Bitiş Tarihi", pd.to_datetime("2024-01-01"))
100
 
101
  if start_date < end_date:
102
  filtered_data = df[(df.index >= start_date) & (df.index <= end_date)]
103
  st.line_chart(filtered_data)
104
  else:
105
+ st.error("Başlangıç tarihi bitiş tarihinden sonra olmamalıdır.")
106
 
107
  # Monte Carlo Simülasyonu
108
+ st.subheader("📊 Monte Carlo Simülasyonu")
109
 
110
  if not daily_returns.empty:
111
  mean_returns = daily_returns.mean()
 
127
 
128
  st.line_chart(simulation_df)
129
  else:
130
+ st.warning("⚠️ Monte Carlo Simülasyonu için yeterli veri yok.")
131
+
132
+ else:
133
+ st.error("❌ Hisse senedi verisi bulunamadı. Lütfen geçerli bir sembol girin.")
134