Instructions to use meridianal/ARA.AI with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use meridianal/ARA.AI with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("meridianal/ARA.AI", "sklearn_model.joblib") ) # only load pickle files from sources you trust # read more about it here https://skops.readthedocs.io/en/stable/persistence.html - Notebooks
- Google Colab
- Kaggle
Ara.AI β Stock Ranking Models
This repository hosts two generations of model. v8 is current; the v7 transformer checkpoints are kept for reproducibility only.
| file | model | status |
|---|---|---|
models/ara_v8_stocks.joblib |
Ara.AI v8, cross-sectional gradient-boosted ranker | current |
models/ara_v8_stocks.json |
v8 training metadata | current |
models/Meridian.AI_Stocks.pt |
v7 transformer, absolute next-day return | frozen |
models/Meridian.AI_Forex.pt |
v7 transformer, forex | frozen |
Source: https://github.com/MeridianAlgo/AraAI Β· Design notes:
docs/ARA_V8.md
What v8 predicts
For each stock on each day, the next-day return relative to the universe average that day β not the absolute return. The output is a ranking; the intended use is a dollar-neutral long/short book (long the top names, short the bottom ones).
This matters for reading the numbers: a score of +0.004 means "expected to
beat the universe average by about 40 bp tomorrow", not "expected to rise
0.4%". A market-neutral model does not forecast market direction and should not
be compared against an always-up baseline.
Architecture
HistGradientBoostingRegressorΓ 3 seeds, averaged (400 iterations, 15 leaf nodes, lr 0.03, L2 1.0,max_features0.7, no early stopping)- ~40 scale-invariant daily features per (symbol, date): multi-horizon returns, realized vol and vol-normalized shocks, SMA distances, intraday range/gap structure, ATR, Wilder RSI, volume z-scores, 52-week distances, calendar
- 8 of those additionally as cross-sectional within-day percentile ranks
- Target: cross-sectionally demeaned forward return, winsorized at 4 per-day Ο
- No price or volume levels anywhere (they encode symbol identity, not signal)
Performance
Expanding-window walk-forward, 4 folds over 2025-06-02 β 2026-08-06, retrained from scratch before each fold with a 1-day embargo between train and test. 99 symbols, median 70 names per day, 297 test days.
| metric | value | reference |
|---|---|---|
| mean daily rank IC | +0.0205 | 0.0 = no skill |
| IC t-statistic | +2.26 | > 2 is the significance bar |
| IC hit rate | 56.6% of days | 50% = no skill |
| long/short spread, top-5 vs bottom-5 | +18.6 bp/day | β |
| long/short Sharpe, annualized, pre-cost | +1.58 | β |
| 1-day reversal baseline | IC +0.0025, β8.4 bp/day | v8 beats it |
| direction accuracy on residual | 51.03% | 50% = no skill |
Positive in all four folds and stable across seed groups (IC +0.0204 to +0.0209, t 2.25β2.30). t = 2.26 clears the conventional bar only just, on a single window, and one fold (+0.0405) carries much of the average while the other three sit near +0.013 with t < 1 individually. The long/short figures are pre-cost and would not survive daily turnover on a five-name-per-side book at retail commissions. Treat this as a small measured edge, not a trading system.
v7, for comparison
Trained on data before 2025-06-01 and evaluated on the year after:
| v7 model | direction accuracy | always-up baseline | return MAE | zero-pred MAE |
|---|---|---|---|---|
| Stocks | 50.23% | 51.44% | 0.0127 | 0.0127 |
| Forex (1-day embargo) | 48.68% | 52.02% | 0.0031 | 0.0030 |
v7 had no edge and its magnitude forecast sat exactly on the zero-prediction floor. Any higher figure in older documentation came from a CI checkpoint that had trained through its own evaluation window.
Limitations
- Stocks only. 22 FX pairs is too thin a cross-section to rank, and the source FX daily bars leak next-day information through day-t high/low.
- 99-name universe. Median 70 tradeable names per day and 5 per side means few independent bets, which is why the long/short P&L is much noisier than the rank IC.
- Daily close-to-close only. No intraday, no multi-day horizon.
- Pre-cost. No transaction costs, slippage, borrow, or capacity modeling.
- Survivorship. The symbol list is today's large caps; delisted names are absent from the history.
Usage
import joblib
p = joblib.load("ara_v8_stocks.joblib") # {"models": [...], "features": [...], "meta": {...}}
# Build features with `ara.make_dataset` from the repo, then:
# scores = np.mean([m.predict(X) for m in p["models"]], axis=0) / 100.0
The repository provides the whole path:
pip install -r requirements.txt
python -m ara predict --db-file training.db --model-path models/ara_v8_stocks.joblib
Disclaimer
Research and educational use only. Not financial advice. Past performance does not guarantee future results, and the figures above are pre-cost and not statistically significant. Never trade with money you cannot afford to lose.
- Downloads last month
- -