Command-Line Interface
The Limen CLI is the supported shell surface for YAML-first experiment work. It provides validation, profiling, template scaffolding, committed manifests, resumable runs, and standard result directories without Python orchestration code.
Historical Data
HistoricalData is Limen's stateful file-backed data surface. It has five public retrieval methods:
End-to-End Workflow
This guide takes a contributor from a fresh checkout to a benchmarked classifier using the current YAML-first surface.
Data bars
Limen currently supports threshold-based bar formation over existing kline data. This optional manifest preprocessing step starts from regular time-based klines, then aggregates consecutive rows until a volume, trade-count, or liquidity threshold is reached.
Single-File Decoder
A Single-File Decoder (SFD) is the Python experiment unit beneath Limen's YAML and CLI path. It packages a parameter space together with either a declarative manifest or fully custom preparation and model functions.
Built-in SFDs
Limen ships foundational SFDs under limen.sfd.foundational_sfd; most have matching YAML templates under limen/yaml/templates. Ordinary runs should start from a YAML template when one exists; the Python modules are the packaged decoder layer beneath that path.
Experiment Manifest
The Experiment Manifest is Limen's declarative experiment definition. The canonical operator form is YAML: define the manifest, validate it, profile it, run it through CLI, then inspect the generated artifacts.
Universal Experiment Loop
The Universal Experiment Loop (UEL) is Limen's execution engine. The normal operator path reaches it through limen run: YAML is validated, compiled into a manifest-backed SFD, executed by UEL, and written to a result directory.
Advanced Search
Advanced search is Limen's artifact-backed extension path. It adds a mutable parameter domain, a search strategy abstraction, checkpointing, resumability, and mid-run feedback on top of the same UEL engine used by limen run.
Reducers and feedback
Reducers and feedback are the control layer inside Limen's advanced search path. They are what let a run react to its own results instead of sweeping the full original domain unchanged.
Log
Log is Limen's post-run analysis layer. It sits on top of a finished experiment and turns raw round results into round-level prediction tables, benchmark-style summaries, backtest summaries, and parameter-correlation views.
Benchmark
In Limen, benchmark is the prediction-quality layer between the raw experiment log and the trading backtest.
Backtest
Backtest is Limen's trading-economics ledger. It converts binary prediction output into long-flat per-bar returns after declared fill costs, then reports one row of intensive metrics per evaluated round.
Trainer
Trainer is Limen's reconstruction layer for finished experiment rounds. It takes a completed artifact-backed experiment directory, reconstructs the manifest and round parameters, replays selected permutations, validates their metrics, and wraps the replayed models in reusable Sensor objects.
Cohort
Cohort is Limen's inference-time ensemble surface for combining multiple trained sensors reconstructed from one completed experiment.
Conserved Flux Renormalization
Conserved Flux Renormalization (CFR) is a trade-data feature that summarizes how traded value and trade-size entropy behave across multiple time scales inside each bar.
Perturbation Strategies
A perturbation is a parameter-controlled variation of the feature and preprocessing pipeline, searched within a single experiment. Instead of hand-writing a new manifest for every "what if we dropped this feature" or "what if we scaled differently" question, you declare the variation once, expose it as a parameter, and let the search compare outcomes across rounds. Perturbations are how Limen tests robustness, attributes value to feature families, and avoids over-fitting to one fixed pipeline.
Fractional Differentiation
Fractional differentiation makes a price series stationary while keeping as much of its memory as possible. Full first differencing (returns) is stationary but erases the level information a model can learn from; the raw price keeps all its memory but is non-stationary. Fractional differentiation sits between the two: it applies a real-valued differencing order d between 0 and 1 and keeps the smallest amount of differencing that passes a stationarity test.
Triple-Barrier Method
The triple-barrier method labels each bar by what happens next, not by a fixed-horizon return. From each bar it opens three barriers — an upper profit-taking level, a lower stop-loss level, and a vertical time limit — and records which one the price path touches first. This is path-dependent labeling from Lopez de Prado's Advances in Financial Machine Learning (AFML), Chapter 3, and it produces targets that reflect how a position would actually resolve.