From cffb9adc38c1b3d904e5503f08c6c0e8a544ff00 Mon Sep 17 00:00:00 2001 From: TPTBusiness Date: Sat, 18 Apr 2026 10:12:51 +0200 Subject: [PATCH] fix(kronos): pass actual datetime Series to Kronos predictor timestamps KronosPredictor.predict() requires x_timestamp and y_timestamp to be pandas Series of datetime values for its calc_time_stamps() helper. Previously we passed integer ranges (after reset_index), which raised AttributeError on .dt.minute. Fixed by extracting datetime index values before resetting and using future_idx for y_timestamp. Co-Authored-By: Claude Sonnet 4.6 --- rdagent/components/coder/kronos_adapter.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rdagent/components/coder/kronos_adapter.py b/rdagent/components/coder/kronos_adapter.py index ab115786..05ac4b11 100644 --- a/rdagent/components/coder/kronos_adapter.py +++ b/rdagent/components/coder/kronos_adapter.py @@ -117,13 +117,15 @@ class KronosAdapter: if len(ohlcv_df) < context_bars: raise ValueError(f"Need at least {context_bars} bars, got {len(ohlcv_df)}") - ctx = ohlcv_df.iloc[-context_bars:].copy().reset_index(drop=True) freq = ohlcv_df.index.freq or pd.infer_freq(ohlcv_df.index[:100]) last_ts = ohlcv_df.index[-1] future_idx = pd.date_range(start=last_ts, periods=pred_bars + 1, freq=freq or "1min")[1:] - x_timestamp = pd.Series(ctx.index) - y_timestamp = pd.Series(range(len(ctx), len(ctx) + pred_bars)) + # Kronos requires actual datetime Series for both timestamps (not integer ranges) + x_timestamp = pd.Series(ohlcv_df.index[-context_bars:].values) + y_timestamp = pd.Series(future_idx) + + ctx = ohlcv_df.iloc[-context_bars:].copy().reset_index(drop=True) pred_df = self._predictor.predict( df=ctx,