Skip to main content

Developer Guide

How to extend and contribute to b1e55ed.

Project Structure

Key Modules


Test Setup

The EAS client test is excluded by default — it requires external network access. For a specific test file:

Adding a Producer

Producers live in engine/producers/. They emit signal events to the event store.

1. Create the producer module

2. Register via CLI

Or via config in config/user.yaml for built-in producers.

3. Write tests


Adding a Strategy

Strategies live in engine/strategies/. They consume signals and produce trade intents for the backtest engine.
Register in the strategy registry used by the backtest CLI.

Extension Registry Pattern

The engine uses a registry pattern for producers and strategies. Built-in components are discovered at import time. External components register via the database or config overlay. For producers: engine/core/producers.pyProducerRegistry For strategies: engine/strategies/__init__.pyStrategyRegistry

Contribution Guidelines

  1. Branch from develop — all PRs target develop, not main
  2. Tests required — new code without tests won’t merge
  3. No broken links — run bash scripts/validate_doc_deps.sh before commit
  4. Lint cleanuv run ruff check . && uv run ruff format --check .
  5. Type-checkuv run mypy engine/ api/ for changed modules

CI Requirements

Every PR must pass:
Type checking runs on CI for the engine/ and api/ packages.

See Also