GoshawkVortexAI commited on
Commit
7c10ddd
·
verified ·
1 Parent(s): cd0b125

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -5
app.py CHANGED
@@ -253,13 +253,18 @@ def predict(df: pd.DataFrame, horizon: int, fee: float = 0.0006, n_folds: int =
253
  y = (fwd > 0).astype(float)
254
  y[fwd.isna()] = np.nan
255
 
 
256
  data = feats.copy()
257
  data["y"], data["fwd"] = y, fwd
258
  data["thr_move"] = (atr / close) * np.sqrt(horizon)
259
- train_df = data.dropna(subset=list(feats.columns[feats.notna().any()]) + ["y"]).copy()
260
- train_df = train_df.dropna()
261
- if len(train_df) < 400:
262
- raise ValueError("Yeterli veri yok (en az ~400 geçerli bar gerekir). Limit'i artır.")
 
 
 
 
263
 
264
  cols = list(feats.columns)
265
  X, Y = train_df[cols], train_df["y"].astype(int)
@@ -275,11 +280,13 @@ def predict(df: pd.DataFrame, horizon: int, fee: float = 0.0006, n_folds: int =
275
  oos_p, oos_idx = [], []
276
  for k in range(n_folds):
277
  tr_end, te0, te1 = edges[k] - horizon, edges[k], edges[k + 1]
278
- if tr_end < 200:
279
  continue
280
  p = _fit_predict(X.iloc[:tr_end], Y.iloc[:tr_end], X.iloc[te0:te1], W[:tr_end])
281
  oos_p.append(p)
282
  oos_idx.extend(range(te0, te1))
 
 
283
  oos_p = np.concatenate(oos_p)
284
  oos_idx = np.array(oos_idx)
285
  yo, fo = Y.values[oos_idx], F[oos_idx]
 
253
  y = (fwd > 0).astype(float)
254
  y[fwd.isna()] = np.nan
255
 
256
+ feats = feats.dropna(axis=1, how="all") # tamamen boş kolonları at (ör. hacim yoksa)
257
  data = feats.copy()
258
  data["y"], data["fwd"] = y, fwd
259
  data["thr_move"] = (atr / close) * np.sqrt(horizon)
260
+ warm = min(60, len(data) // 5) # gösterge ısınma barları
261
+ train_df = data.iloc[warm:].dropna(subset=["y", "fwd", "thr_move"]).copy()
262
+ # Kalan NaN'ler (uzun pencereli göstergeler) satır silmek yerine doldurulur
263
+ train_df[list(feats.columns)] = train_df[list(feats.columns)].ffill().fillna(0)
264
+ if len(train_df) < 200:
265
+ raise ValueError(
266
+ f"Yeterli veri yok: {len(df)} mum geldi, {len(train_df)} kullanılabilir bar kaldı "
267
+ f"(en az 200 gerekir; ufuk={horizon}). Mum sayısını artır veya borsayı/sembolü kontrol et.")
268
 
269
  cols = list(feats.columns)
270
  X, Y = train_df[cols], train_df["y"].astype(int)
 
280
  oos_p, oos_idx = [], []
281
  for k in range(n_folds):
282
  tr_end, te0, te1 = edges[k] - horizon, edges[k], edges[k + 1]
283
+ if tr_end < 80:
284
  continue
285
  p = _fit_predict(X.iloc[:tr_end], Y.iloc[:tr_end], X.iloc[te0:te1], W[:tr_end])
286
  oos_p.append(p)
287
  oos_idx.extend(range(te0, te1))
288
+ if not oos_p:
289
+ raise ValueError("Walk-forward için yeterli veri yok. Mum sayısını artır.")
290
  oos_p = np.concatenate(oos_p)
291
  oos_idx = np.array(oos_idx)
292
  yo, fo = Y.values[oos_idx], F[oos_idx]