Skip to main content

Kairos — adaptive crypto trading engine. Curates the best of the open-source ecosystem and adds a learning layer on top.

Project description

Kairos

CI PyPI Python Tests License: MIT

An event-driven trading engine for Python — live execution, backtesting and paper trading with one API. Built for spot crypto, designed to scale to multi-venue and derivatives.


Installation

pip install kairos-engine

Requires Python 3.11 or newer.

Quick start

from kairos import LiveEngine, LiveStrategy, BinanceLive
from kairos.types import ActorConfig


class MeanReversion(LiveStrategy):
    def on_start(self):
        self.sma = self.indicator.sma("close", window=20)
        self.rsi = self.indicator.rsi(window=14)

    async def on_bar(self, bar):
        if self.rsi.value < 30 and bar.close < self.sma.value:
            await self.buy_bracket_pct(
                pct=0.10,          # 10% of USDC balance
                sl_atr_mult=2.0,   # stop-loss = entry - 2×ATR
                tp_atr_mult=3.0,   # take-profit = entry + 3×ATR
            )


engine = LiveEngine()
engine.register_adapter(BinanceLive(api_key="...", api_secret="..."))
engine.add_strategy(
    MeanReversion(ActorConfig(symbol="BTCUSDC", timeframe="1h")),
)
await engine.run()

A ten-minute tutorial lives in docs/getting-started.md.

What's in the box

Area Capability
Runtime Async event loop · actor model · market-data cache · warmup gating
Strategies LiveStrategy base class · 12 built-in indicators · bar + tick hooks
Execution Market / limit / stop / bracket orders · OCO · atomic entry+SL+TP via BracketManager
Adapters BinanceLive (Spot, REST + market WS + user-data WS) · PaperAdapter for sims
Backtesting BacktestEngine with parquet catalog · Sharpe / Sortino / profit factor
Reconciliation Fill parity tooling (kairos.parity.match_fills) to diff engine outputs
Ops Structured logging · graceful shutdown · reconnect with exponential backoff

227 tests cover the public surface; CI runs on Python 3.11, 3.12 and 3.13.

Design goals

  1. Stable primitives, pluggable policy. The engine handles the boring parts (event loop, reconnects, order state, reconciliation) so strategies stay small and testable.
  2. Same API for backtest, paper and live. A strategy you write for backtesting runs unchanged against a paper adapter and then against a live exchange.
  3. Composable actors. Risk limits, parameter tuning, notifications and regime detection are actors subscribed to the engine bus. Add your own by subclassing kairos.Actor.
  4. Readable over clever. Typed public surface, minimal magic, every decision documented in source.

Example — Actor for risk halt

from kairos import Actor


class DailyLossLimit(Actor):
    def __init__(self, max_loss_pct: float = 3.0):
        super().__init__()
        self._max_loss = max_loss_pct
        self._start_equity: float | None = None

    async def on_event(self, kind: str, event):
        if kind == "equity_update":
            if self._start_equity is None:
                self._start_equity = event.equity
                return
            drawdown = (self._start_equity - event.equity) / self._start_equity
            if drawdown >= self._max_loss / 100:
                await self.publish_signal("risk_halt", reason="daily_loss")

The engine's SignalDispatcher picks up risk_halt and stops new entries until the actor publishes a resume signal.

Status and versioning

Current release: v0.3.1 — production-deployed as the execution core of Trading Autopilot since 2026-04-13, powering DCA strategies on BTCUSDC and ETHUSDC on Binance Spot.

Semantic versioning. Pre-1.0 releases may still contain minor breaking changes; the CHANGELOG calls them out explicitly.

Roadmap

Milestone Focus
v0.4 Adaptive execution — order-type + timing learned per (symbol × regime × spread)
v0.5 Continual parameter tuning — Bayesian posterior updated per trade
v0.6 Multi-venue — Kraken adapter + venue-registry abstraction
v1.0 Stable public API · long-term support

Details in docs/roadmap.md.

Documentation

Contributing

See CONTRIBUTING.md. Issues and pull requests are welcome. Please run pytest before submitting.

Naming

Kairós (καιρός) is the ancient Greek word for "the opportune moment". This package was originally published as autopilot-engine (v0.1.0, March 2026) and renamed at v0.2.0a0. The legacy PyPI name redirects here for deprecation notices.

License

MIT — see LICENSE. Derivatives and commercial use are both permitted; attribution is appreciated.

Citation

@software{kairos2026,
  title  = {Kairos: an event-driven crypto trading engine for Python},
  author = {Rovira, Oscar},
  year   = {2026},
  url    = {https://github.com/Vekkris76/kairos}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kairos_engine-0.4.2.tar.gz (141.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kairos_engine-0.4.2-py3-none-any.whl (107.2 kB view details)

Uploaded Python 3

File details

Details for the file kairos_engine-0.4.2.tar.gz.

File metadata

  • Download URL: kairos_engine-0.4.2.tar.gz
  • Upload date:
  • Size: 141.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kairos_engine-0.4.2.tar.gz
Algorithm Hash digest
SHA256 86b303aec34f67a7e093da21169750ad610b75fc77bf2a4b3c506c129f1fef27
MD5 1925c006e913fabca640a0a8063a84af
BLAKE2b-256 1634cd1eb7c387eaa71b48994e014b805a5584ff3351ed785806a5b3cdb27493

See more details on using hashes here.

Provenance

The following attestation bundles were made for kairos_engine-0.4.2.tar.gz:

Publisher: release.yml on Vekkris76/kairos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kairos_engine-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: kairos_engine-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 107.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kairos_engine-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d1027d30375480e0b3ef7d7cdf91f68026c4274bbe62e825a1919669819a47e9
MD5 7677f1c3392197d97c7eece595fed01b
BLAKE2b-256 dbee69409868c508dca4e36990fd68b12f42db7e6e9bd5834f6585a44438d573

See more details on using hashes here.

Provenance

The following attestation bundles were made for kairos_engine-0.4.2-py3-none-any.whl:

Publisher: release.yml on Vekkris76/kairos

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page