TILLA
TILLA · model-ready market data

Machine-learning features for crypto

The raw data and 293,743 indicators computed from it, bar by bar, on one UTC clock — so the work goes into models, not pipelines.

The hard part of a crypto model is rarely the model. It is building clean, aligned features without leaking the future into the past. TILLA serves the features directly: every indicator is one formula over the raw, computed on its own clock from bars at or before its label.

What you get

Train on one aligned row per minute

Series on one lane share one label, so building an X matrix is a window call — no joins, no leakage from misaligned timestamps. Page through your whole tier window once, then keep it fresh from your newest bar.

import requests
H = {"X-API-Key": "tk_live_..."}
rows, start = [], "2000-01-01"          # before your floor = from your floor
while start:
    d = requests.get("https://api.tillacrypto.com/v1/free/derived/daily",
                     headers=H, params={"series": "btc_ema_20", "start": start}).json()
    rows += d["data"]
    start = d["next_start"] if d["more"] else None

Or take a whole lane in one request with /v1/<tier>/resume/derived/<lane>?since=...&format=parquet. Full reference: the docs.

FAQ

Are the features engineered or raw?

Both. The raw layer is what each venue published; the derived layer is technicals, cross-asset betas and regime signals computed from it.

How do I avoid look-ahead / alignment leakage?

Every derived value uses only bars at or before its own label, and every value sits on a UTC bar labelled by the end of the period it covers.

Can I build a local training set?

Yes. Page through your whole tier window once with start and next_start, then call from your newest bar to stay current. Pro and above can export a whole window in one file.