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.3.6.tar.gz (129.5 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.3.6-py3-none-any.whl (98.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kairos_engine-0.3.6.tar.gz
  • Upload date:
  • Size: 129.5 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.3.6.tar.gz
Algorithm Hash digest
SHA256 79e339c8caae6485f1623e7a9a7fd096e9ce2fa176b52be2679a2bafe8f445a3
MD5 c096e3ae4fb6232d1294d4070e7c2797
BLAKE2b-256 1769015a76264a69fb85f0fb42c1d9ab7590cf8b7dc864d9bd6cdd29d60ead0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for kairos_engine-0.3.6.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.3.6-py3-none-any.whl.

File metadata

  • Download URL: kairos_engine-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 98.7 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.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bee5fe2ed95718679d4d32c2299c236597a04d7d4037edf4ebc21a495d1a607d
MD5 7515fc5794b311f11e75f66f40d1a266
BLAKE2b-256 5f74d089b30d799abe657a95bea5bed14ece1675454a4b8952adc695baf32689

See more details on using hashes here.

Provenance

The following attestation bundles were made for kairos_engine-0.3.6-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