Foundation-model forecasting and systematic stock ranking for the Indonesian equity market.
Research Scope · Architecture · Findings · Run Locally · Limitations
SIER is an end-to-end research pipeline for forecasting and ranking Indonesian equities with Python, PyTorch, Kronos, and yfinance.
SIER fine-tunes a time-series foundation model across 958 IDX-listed equities, produces short-horizon forecasts at daily and intraday resolutions, and converts those forecasts into cross-sectional stock rankings. Point-in-time price and volume signals are evaluated as an optional experimental layer rather than a mandatory final filter.
Important
This repository is a research project, not investment advice. Historical and live-screening observations do not guarantee future performance.
| Universe | Primary model | Production timeframe | Training compute | Evaluation |
|---|---|---|---|---|
| 958 equities | Kronos | 15 minutes | NVIDIA A100 | Rolling backtests |
| Research layer | Role |
|---|---|
| Forecasting | Generate probabilistic short-horizon price and volume paths |
| Cross-sectional ranking | Compare forecast strength across the full IDX universe |
| Technical research | Test whether breakout, reversal, structure, momentum, and volume setups add stable value |
| Risk filtering | Control for liquidity, volatility, abnormal activity, and market regime |
- Fine-tuning and inference for daily, 30-minute, and 15-minute OHLCV data.
- Systematic ranking using predicted returns, probability of an upward move, liquidity, volatility, and abnormal price-volume activity.
- Optional causal technical signals and penalty rules, evaluated against the raw model ranking.
- Leakage-controlled rolling backtests across multiple forecast horizons and market regimes.
- Reproducible local and Kaggle workflows, including GPU training and full-universe screening.
IDX universe and OHLCV data
|
v
Kronos fine-tuning (daily / 30m / 15m)
|
v
Probabilistic short-horizon forecasts
|
v
Cross-sectional forecast ranking
|
v
Optional technical experiments
|
v
Liquidity, volatility, and regime filters
|
v
Top candidates and rolling backtest evaluation
| Directory | Purpose |
|---|---|
Kronos IDX FineTune/ |
Daily model training, forecasting, checkpoints, and data updates |
Kronos IDX FineTune 15 Minutes/ |
Intraday 15-minute fine-tuning pipeline and production checkpoint |
Kronos IDX FineTune 30 Minutes/ |
Intraday 30-minute experiments |
Daily Screener/ |
Current 15-minute next-session screening workflow |
BackTest Kronos Screener/ |
Rolling forecast and ranking backtests |
BackTest Pattern Screener/ |
Causal technical-pattern reranking and evaluation |
Model Screening UMA/ |
Unusual Market Activity screening experiments |
Analisis Pendahuluan/ |
Exploratory analysis of large IDX price moves |
Each directory contains its own README with workflow-specific instructions.
The production intraday experiment was trained on an NVIDIA A100 using 200,000 sampled training windows per epoch and four selected predictor epochs, equivalent to 800,000 sampled windows across the run. This is the training-window count, not the model's attention context length. The 15-minute model uses a 240-bar lookback, a 20-bar forecast horizon, and max_context=512.
The model universe covers 958 Indonesian equities. Actual eligible counts can be lower at a given timestamp because of listing age, suspension, missing bars, or insufficient history.
Current live observations indicate that the 15-minute model is better than the tested higher timeframes at surfacing at least one stock that subsequently reaches or approaches Auto Rejection Atas (ARA). It does not yet identify the eventual ARA stock reliably as a single direct prediction. Even so, adding more technical rules is not automatically the right solution. The raw model ranking may be more suitable when additional filters reduce coverage or introduce unstable assumptions.
Note
Operational timing matters. The screener is intended to run after the previous trading session is complete, using the final available 15-minute context bar at 15:45 WIB, and the ranking must be generated before the next market session opens. The GTSI and CBPE observations below were therefore pre-market candidate selections for the following session, not signals produced after the price move or ARA had already occurred.
Two early forward observations illustrate the behavior:
| Screen | Candidate | Model placement | Observed move |
|---|---|---|---|
| 3 August 2026 | GTSI | TF15 top 5 | ≥15% |
| 4 August 2026 | CBPE | TF15 rank 7 | 25% ARA |
These are live case studies, not a statistically sufficient performance claim. More forward observations are required before estimating hit rates or expected returns.
Model adaptation alone is insufficient. The training context and prediction target must match the intended trading decision, while the current dataset still contains incomplete bars, suspensions, zero-volume periods, corporate-action effects, and heterogeneous issuer behavior. Domain knowledge should therefore inform universe construction, issuer-level exclusions, liquidity constraints, and regime-specific calibration.
The strongest current use of the foundation model is to compress a broad IDX universe into a manageable candidate set. A technical layer can improve selected historical metrics, but it can also overfit a particular period and make the overall process less robust. IDX trading behavior can change materially from one month to the next. Forecast direction, price action, momentum, volume, liquidity, and market regime frequently do not align at the same time, so one fixed technical playbook should not be assumed to remain valid across periods.
For that reason, SIER treats the raw forecast ranking as a valid standalone output. Technical signals are diagnostics or optional reranking inputs that must prove stable value through chronological out-of-sample testing. They are not required conditions for every selection.
In the existing 41-origin daily pattern experiment, reranking improved top-5 precision from 49.27% to 54.15% for the validated checkpoint and from 52.68% to 55.61% for the production checkpoint. These figures are full-timeframe optimization results. They show that the technical layer can fit the evaluated sample, but they do not establish robustness across future months.
| Checkpoint | Base top-5 precision | With technical reranking | Change |
|---|---|---|---|
| Validated no-refit E15 | 49.27% | 54.15% | +4.88 pp |
| Production refit E4 | 52.68% | 55.61% | +2.93 pp |
Clone the repository with its Kronos submodule and enable Git LFS:
git clone --recurse-submodules https://github.com/zzeiidann/SIER.git
cd SIER
git lfs install
git lfs pullFor the current local screening workflow:
cd "Daily Screener"
uv sync
uv run python update_tf15_parquet.py
uv run python project_tf15_next_session.pyRun the data update after the current session has closed, then complete next-session projection before the following IDX market open. Do not interpret an intraday rerun after a large move has started as equivalent to the documented pre-market workflow.
For causal pattern backtests:
python3 -m pip install -r "BackTest Pattern Screener/requirements.txt"
python3 "BackTest Pattern Screener/run_pattern_backtest.py"
python3 -m unittest discover -s "BackTest Pattern Screener/tests" -v- Rolling technical levels are shifted so the evaluated candle cannot define its own support or resistance.
- Future returns and maximum favorable/adverse excursions are separated from live feature generation.
- Whole origins with inadequate forecast coverage are excluded before ranking optimization.
- Results distinguish validated frozen checkpoints from production refit checkpoints.
- In-sample ranking optimization is labeled explicitly and is not presented as out-of-sample evidence.
- Clean and version data snapshots, including corporate actions, delistings, suspensions, and zero-volume bars.
- Add point-in-time issuer metadata and sector-aware filters.
- Expand walk-forward evaluation with untouched chronological holdouts.
- Compare the raw model ranking against technical variants on a month-by-month basis.
- Reject technical thresholds that do not remain stable across liquidity and market regimes.
- Accumulate a larger forward-test sample for the 15-minute workflow before drawing performance conclusions.
Additional components include yfinance, Optuna, Git LFS, and the Kronos time-series foundation model.
SIER builds on the open-source Kronos time-series foundation model. The upstream source is included as a Git submodule and retains its original license and attribution.