initialize, handle_data, context, data, order_target_percent. Most of the engine underneath has since been rewritten: Polars instead of pandas in the data layer, asyncio end to end, and Python 3.12+.
The hosted platform at ziplime.limex.com runs the same engine inside a sandbox with a narrower contract: no imports, only
initialize and handle_data, no config class. This section describes the open-source engine. On the hosted platform, follow the rules its own editor and MCP server give you.Strict by default
The engine is built to catch what a hand-written or AI-written strategy gets wrong. The shortcuts that make a backtest look better have to be asked for by name:- Next-bar fills. In the CLI and the local MCP server an order fills on the bar after the decision. Same-bar fills are an explicit flag.
- Look-ahead checks on vectorized signals.
compute_signalsis recomputed on truncated history, and a signal that used the future stops the run before the first order. - Point-in-time data. Datasets such as fundamentals or insider trades are windowed by the date a row became public, not by the period it describes.
- Costs are applied or refused, never dropped. A cost model that can’t be applied stops the run by name.
- No tool places an order on its own. The local MCP server has no order tool.
What’s in the box
Where to go next
Install & run
pip install ziplime, ingest data, run your first backtest.Strategy language
The API you use inside an algorithm file.
Use it with your AI
Connect Claude Code, Codex or Cursor through MCP.
What's new
Changes in 2.10.3 and 2.11.0, and how to upgrade.