Merge pull request #2 from fredmaloggia/codex/format-eta-in-minutes-and-seconds
Clarify ETA messaging and reuse formatter
This commit is contained in:
@@ -136,6 +136,18 @@ def clamp01(x):
|
|||||||
return np.nan
|
return np.nan
|
||||||
return float(min(1.0, max(0.0, x)))
|
return float(min(1.0, max(0.0, x)))
|
||||||
|
|
||||||
|
|
||||||
|
def format_eta(seconds):
|
||||||
|
"""Format a duration (seconds) as Xm Ys or Xh Ym Ys for readability."""
|
||||||
|
if not np.isfinite(seconds):
|
||||||
|
return "n/a"
|
||||||
|
seconds = max(0, int(round(seconds)))
|
||||||
|
minutes, secs = divmod(seconds, 60)
|
||||||
|
hours, minutes = divmod(minutes, 60)
|
||||||
|
if hours:
|
||||||
|
return f"{hours}h {minutes:02d}m {secs:02d}s"
|
||||||
|
return f"{minutes}m {secs:02d}s"
|
||||||
|
|
||||||
# ================= HURST (sui RENDIMENTI) =================
|
# ================= HURST (sui RENDIMENTI) =================
|
||||||
def hurst_rs_returns(r, win_grid=None, min_seg=1):
|
def hurst_rs_returns(r, win_grid=None, min_seg=1):
|
||||||
r = pd.Series(r).dropna().astype("float64").values
|
r = pd.Series(r).dropna().astype("float64").values
|
||||||
@@ -917,12 +929,17 @@ for i, isin in enumerate(isins, 1):
|
|||||||
avg_t = total_t / i
|
avg_t = total_t / i
|
||||||
eta = avg_t * (len(isins) - i)
|
eta = avg_t * (len(isins) - i)
|
||||||
|
|
||||||
print(f"… backtest {i}/{len(isins)} completati — {dt:.2f} sec (avg {avg_t:.2f}s, ETA {eta:.1f}s)")
|
print(
|
||||||
|
f"… backtest {i}/{len(isins)} completati — {dt:.2f} sec "
|
||||||
|
f"(avg {avg_t:.2f}s, ETA {format_eta(eta)} rimanenti)"
|
||||||
|
)
|
||||||
|
|
||||||
# ---- TIMER FINALE ----
|
# ---- TIMER FINALE ----
|
||||||
end_all = time.perf_counter()
|
end_all = time.perf_counter()
|
||||||
print(f"⏱️ Tempo totale: {end_all - start_all:.2f} sec")
|
total_elapsed = end_all - start_all
|
||||||
print(f"⏱️ Tempo medio per asset: {(end_all - start_all)/len(isins):.2f} sec")
|
avg_elapsed = total_elapsed / max(len(isins), 1)
|
||||||
|
print(f"⏱️ Tempo totale: {format_eta(total_elapsed)} ({total_elapsed:.2f} sec)")
|
||||||
|
print(f"⏱️ Tempo medio per asset: {format_eta(avg_elapsed)} ({avg_elapsed:.2f} sec)")
|
||||||
|
|
||||||
|
|
||||||
bt_signals_df = pd.concat(bt_signals, ignore_index=True) if bt_signals else pd.DataFrame(
|
bt_signals_df = pd.concat(bt_signals, ignore_index=True) if bt_signals else pd.DataFrame(
|
||||||
|
|||||||
Reference in New Issue
Block a user