KronosForecaster
KronosForecaster
- class KronosForecaster(model_path='NeoQuasar/Kronos-small', tokenizer_path='NeoQuasar/Kronos-Tokenizer-base', device='cpu', columns=None, freq='5min', start='2000-01-01', clip=5.0, predict_kwargs=None, deterministic=False)[source]
Kronos zero-shot forecaster for financial K-line/OHLC data.
This forecaster wraps Kronos [1], a foundation model for financial market data [2], through the
sktimeforecasting interface. This implementation is inference-only and uses the upstreamKronosPredictorpreprocessing and autoregressive inference path internally.- Parameters:
- model_pathstr, default=”NeoQuasar/Kronos-small”
Hugging Face repository identifier or local path for the Kronos model. The default is the Kronos-small checkpoint [4]. Other released checkpoints include Kronos-mini [3] and Kronos-base [5].
- tokenizer_pathstr, default=”NeoQuasar/Kronos-Tokenizer-base”
Hugging Face repository identifier or local path for the Kronos tokenizer. The default is the Kronos-Tokenizer-base checkpoint [6]. The released 2k tokenizer is also available [7].
- devicestr, default=”cpu”
Device used for model and tokenizer inference.
- columnslist of str or None, default=None
Optional positional mapping from columns in
yto Kronos internal columns. Positions map to"open","high","low","close","volume", and"amount". If provided, at least the first four OHLC columns are required; volume and amount are optional. IfNone, literal open/high/low/close names are used when present, otherwise the first four numeric columns are used as OHLC. Literal volume/amount columns are used when present.- freqstr or pandas offset, default=”5min”
Frequency used to synthesize timestamps for Kronos when the training index is not a
pd.PeriodIndexorpd.DatetimeIndex. The default is five minutes because Kronos is designed for financial K-line/OHLC data, where five-minute intraday bars are a common default granularity.- startstr or pd.Timestamp, default=”2000-01-01”
Start timestamp used with
freqto synthesize timestamps for Kronos when the training index is not datetime-like. The default date is arbitrary; it provides deterministic calendar fields for Kronos while keeping the synthetic timestamp path independent of the original index.- clipfloat, default=5.0
Input normalization clipping value passed to
KronosPredictor.- predict_kwargsdict or None, default=None
Additional keyword arguments passed directly to
KronosPredictor.predict. Examples areT,top_k,top_p,sample_count, andverbose.- deterministicbool, default=False
Whether predictions should reset the PyTorch random seed before autoregressive sampling.
- Attributes:
cutoffCut-off = “present time” state of forecaster.
fhForecasting horizon that was passed.
is_fittedWhether
fithas been called.stateState of the estimator.
Notes
KronosForecasterexpects financial K-line style data. The inputyshould contain OHLC columns, and may optionally contain volume and amount. For relative forecasting horizons with datetime-like indices, provide a sensible regular index/frequency so future timestamps line up with the data. If the calendar is irregular, pass an absolute forecasting horizon.References
[1]Kronos GitHub repository: https://github.com/shiyu-coder/Kronos
[2]Lin, Z., Xia, Y., Liu, Z., Zhang, S., Wang, J., Yang, C., Dong, Q., Liu, H., Jiang, H., Wang, S., Xiong, X., and Zhao, B. (2025). Kronos: A Foundation Model for the Language of Financial Markets. arXiv. https://arxiv.org/abs/2508.02739
[3]Kronos-mini model card: https://huggingface.co/NeoQuasar/Kronos-mini
[4]Kronos-small model card: https://huggingface.co/NeoQuasar/Kronos-small
[5]Kronos-base model card: https://huggingface.co/NeoQuasar/Kronos-base
[6]Kronos-Tokenizer-base model card: https://huggingface.co/NeoQuasar/Kronos-Tokenizer-base
[7]Kronos-Tokenizer-2k model card: https://huggingface.co/NeoQuasar/Kronos-Tokenizer-2k
Examples
>>> import pandas as pd >>> from sktime.forecasting.base import ForecastingHorizon >>> from sktime.forecasting.kronos import KronosForecaster >>> url = ( ... "https://raw.githubusercontent.com/shiyu-coder/Kronos/" ... "refs/heads/master/tests/data/regression_input.csv" ... ) >>> df = pd.read_csv( ... url, ... parse_dates=["timestamps"], ... index_col="timestamps", ... ) >>> lookback, pred_len = 400, 120 >>> y = df.iloc[:lookback] >>> fh = ForecastingHorizon( ... df.index[lookback : lookback + pred_len], ... is_relative=False, ... ) >>> forecaster = KronosForecaster( ... model_path="NeoQuasar/Kronos-small", ... tokenizer_path="NeoQuasar/Kronos-Tokenizer-base", ... device="cpu", ... deterministic=True, ... predict_kwargs={ ... "T": 1.0, ... "top_p": 0.9, ... "sample_count": 1, ... "verbose": True, ... }, ... ) >>> y_pred = forecaster.fit(y).predict(fh=fh)
Methods
check_is_fitted([method_name])Check if the estimator has been fitted.
clone()Obtain a clone of the object with same hyper-parameters and config.
clone_tags(estimator[, tag_names])Clone tags from another object as dynamic override.
create_test_instance([parameter_set])Construct an instance of the class, using first test parameter set.
create_test_instances_and_names([parameter_set])Create list of all test instances and a list of names for them.
fit(y[, X, fh])Fit forecaster to training data.
fit_predict(y[, X, fh, X_pred])Fit and forecast time series at future horizon.
get_class_tag(tag_name[, tag_value_default])Get class tag value from class, with tag level inheritance from parents.
get_class_tags()Get class tags from class, with tag level inheritance from parent classes.
get_config()Get config flags for self.
get_fitted_params([deep])Get fitted parameters.
get_param_defaults()Get object's parameter defaults.
get_param_names([sort])Get object's parameter names.
get_params([deep])Get a dict of parameters values for this object.
get_pretrained_params([deep])Get pretrained parameters of this estimator.
get_tag(tag_name[, tag_value_default, ...])Get tag value from instance, with tag level inheritance and overrides.
get_tags()Get tags from instance, with tag level inheritance and overrides.
get_test_params([parameter_set])Return testing parameter settings for the estimator.
is_composite()Check if the object is composed of other BaseObjects.
load_from_path(serial)Load object from file location.
load_from_serial(serial)Load object from serialized memory container.
predict([fh, X])Forecast time series at future horizon.
predict_interval([fh, X, coverage])Compute/return prediction interval forecasts.
predict_proba([fh, X, marginal])Compute/return fully probabilistic forecasts.
predict_quantiles([fh, X, alpha])Compute/return quantile forecasts.
predict_residuals([y, X])Return residuals of time series forecasts.
predict_var([fh, X, cov])Compute/return variance forecasts.
pretrain(y[, X, fh])Pre-train forecaster on panel (global) data.
reset()Reset the object to a clean post-init state.
save([path, serialization_format])Save serialized self to bytes-like object or to (.zip) file.
score(y[, X, fh])Scores forecast against ground truth, using MAPE (non-symmetric).
set_config(**config_dict)Set config flags to given values.
set_params(**params)Set the parameters of this object.
set_random_state([random_state, deep, ...])Set random_state pseudo-random seed parameters for self.
set_tags(**tag_dict)Set instance level tag overrides to given values.
update(y[, X, update_params])Update cutoff value and, optionally, fitted parameters.
update_predict(y[, cv, X, update_params, ...])Make predictions and update model iteratively over the test set.
update_predict_single([y, fh, X, update_params])Update model with new data and make forecasts.

