Skip to main content

Shared core package: schemas, preprocessing, features, and utils for the algorithmic trading platform

Project description

algotrading-core

Shared core package for the algorithmic trading platform: schemas, preprocessing, feature engineering, and utilities. Single source of truth consumed by algotrading-research and algotrading-backend via pip—no duplicated core logic.

Aligned with CODE_STRUCTURE_GUIDE.md (Core Layer) and source/DEVELOPMENT_PHASES_GUIDE.md (Phases 1–2).


Role in the platform

The platform uses a multi-repository layout:

Repository Role Depends on core
algotrading-core Schemas, preprocessing, features, utils
algotrading-research Offline research, training, backtesting
algotrading-backend Signals, inference, API
algotrading-execution MT5 execution (signals only)

Core is versioned and published (private PyPI or Git). Research and backend pin a version and use the same feature logic for training and live inference.


Package structure

src/algotrading_core/
├── schemas/           # Pydantic data models (Phase 1)
│   ├── candle.py     # OHLCV candle schema
│   ├── feature.py    # Feature schema
│   ├── model.py      # Model artifact schema
│   └── (config)       # Configuration schemas
├── preprocessing/    # Data validation & transformation (Phase 2)
│   ├── candles.py    # Candle validation, cleaning
│   ├── adjustments.py # Future contract adjustments
│   └── transformers.py # Aggregation, pipelines
├── features/         # Feature engineering (Phase 2)
│   ├── base.py       # Base feature generator (abstract)
│   ├── levels.py     # Support/resistance levels
│   ├── time_features.py # Time-based (e.g. trig encoding)
│   ├── volatility.py # Volatility features
│   └── aggregated.py # Aggregated timeframe features
└── utils/            # Shared utilities (Phase 1)
    ├── datetime_utils.py
    └── path_utils.py
  • Phase 1 (Foundation): schemas + utils + config loaders.
  • Phase 2 (Data & preprocessing): preprocessing + feature base and concrete generators.

Installation

Requires: Python ≥3.11.

From local path (development)

uv add /path/to/algotrading-core
# or
pip install -e /path/to/algotrading-core

From Git

uv add "algotrading-core @ git+https://github.com/org/algotrading-core.git@v0.1.0"

From private PyPI

Configure your private index (see Publishing to private PyPI for index URL and auth), then:

pip install algotrading-core==0.1.0

Publishing to private PyPI

The package uses semantic versioning (e.g. 1.0.0). To publish a release to a private PyPI server:

1. Bump version

Edit version in pyproject.toml (e.g. 0.1.00.2.0). Tag the release in Git:

git tag v0.2.0

2. Build the package

make build
# or: uv run python -m build

This produces dist/algotrading-core-<version>.tar.gz and dist/algotrading_core-<version>-py3-none-any.whl.

3. Configure credentials for your private index

Option A — .pypirc (recommended)
Create or edit ~/.pypirc:

[distutils]
index-servers =
    private

[private]
repository = https://your-private-pypi.example.com/pypi/
username = your-username
password = your-password-or-token

Option B — Environment variables

export TWINE_USERNAME=your-username
export TWINE_PASSWORD=your-password-or-token
export TWINE_REPOSITORY_URL=https://your-private-pypi.example.com/pypi/

4. Upload

make publish
# Uses .pypirc repo name "private" by default. Override: make publish REPO=myrepo
# Or use URL directly: make publish REPO_URL=https://your-private-pypi.example.com/pypi/

Replace your-private-pypi.example.com with your actual private PyPI host (e.g. CodeArtifact, Artifactory, or self-hosted PyPI).

Consumers of the package must configure pip to use the same index (e.g. pip.conf or pip install --index-url https://.../pypi/ algotrading-core).


Usage

Consumers import from the package; no copy-paste of core code.

from algotrading_core.schemas import Candle, Feature
from algotrading_core.preprocessing.candles import preprocess_candles
from algotrading_core.features.base import FeatureGenerator
from algotrading_core.features.levels import LevelsFeatureGenerator
from algotrading_core.utils.datetime_utils import parse_interval

Research uses these for training and backtesting; the backend uses the same code for live feature generation and inference.


Development

Setup

cd algotrading-core
uv sync

Commands (Makefile)

Target Action
make lint Ruff + black check
make format Black + ruff --fix
make test Pytest
make coverage Pytest with coverage (≥75%)
make check Lint + test (CI gate)

Versioning

Use semantic versioning (e.g. 0.1.0, 1.0.0). Tag releases so consumers can pin:

  • algotrading-core>=0.1.0,<1.0.0 in research/backend pyproject.toml.

Phases related to algotrading-core

The following phases from source/DEVELOPMENT_PHASES_GUIDE.md are implemented in this repository. Full guide: discovery tips, code examples, and phase-by-phase implementation.


Phase 1: Foundation & Core Package Setup

Goal: Establish shared core package as its own repository and project infrastructure.

Duration: 1–2 weeks.

Tasks:

  1. Create core repository (algotrading-core)

    • Dedicated repo with installable package structure: src/algotrading_core/ (src layout)
    • Set up schemas, preprocessing, features, utils
    • Define Pydantic schemas for all data types
    • Create base classes and interfaces
    • Configure pyproject.toml (package name, version, dependencies: pandas, numpy, pydantic, etc.)
  2. Publish core package

    • Publish to private PyPI (see Publishing to private PyPI), or document Git URL for pip install
    • Use semantic versioning (e.g. 1.0.0) for releases
  3. Set up consumer repositories

    • In algotrading-research and algotrading-backend: add dependency on algotrading-core in pyproject.toml (version range or Git URL)
    • Configure development tools (black, ruff, pytest) in each repo
  4. Implement core utilities (in this repo)

    • Date/time utilities
    • Path utilities
    • Logging setup
    • Configuration loaders
  5. Create data schemas (in this repo)

    • Candle schema (OHLCV data)
    • Feature schema
    • Signal schema
    • Config schemas

Deliverables:

  • algotrading-core package with schemas and utilities, published (private index or Git)
  • ✅ Research and backend depend on algotrading-core via pip; no copied core code
  • ✅ Working dependency management in all repos
  • ✅ Logging infrastructure
  • ✅ Configuration system

Files to create (Phase 1):

algotrading-core/
├── src/algotrading_core/
│   ├── schemas/
│   │   ├── candle.py
│   │   ├── feature.py
│   │   ├── model.py
│   │   └── config.py
│   └── utils/
│       ├── datetime_utils.py
│       ├── path_utils.py
│       └── config_loader.py

Phase 2: Data Layer & Preprocessing

Goal: Implement data ingestion, validation, and preprocessing.

Duration: 2–3 weeks.

Tasks:

  1. Implement preprocessing functions

    • Candle preprocessing (validation, cleaning)
    • Future contract adjustments
    • Data aggregation logic
    • Data transformation pipelines
  2. Create data validation layer

    • Schema validation
    • Data quality checks
    • Missing data handling
  3. Implement feature engineering base

    • Base feature generator class
    • Support/resistance level calculation
    • Time-based features (trigonometric encoding)
    • Volatility features
    • Aggregated timeframe features

Deliverables:

  • ✅ Preprocessing functions
  • ✅ Data validation
  • ✅ Feature generation functions
  • ✅ Unit tests for all functions

Files to create (Phase 2, under src/algotrading_core/):

src/algotrading_core/
├── preprocessing/
│   ├── candles.py
│   ├── adjustments.py
│   └── transformers.py
└── features/
    ├── base.py
    ├── levels.py
    ├── time_features.py
    ├── volatility.py
    └── aggregated.py

For discovering what to put in core (extract from existing app vs start minimal), code examples, and the rest of the platform phases, see source/DEVELOPMENT_PHASES_GUIDE.md.


References

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

algotrading_core-0.1.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

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

algotrading_core-0.1.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file algotrading_core-0.1.0.tar.gz.

File metadata

  • Download URL: algotrading_core-0.1.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for algotrading_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6c990ca088a3dfb4ebe025656eff6fa9fa288a979a59f9bc2b412242d7c3a9a0
MD5 7386d4de51da3ffe31be7af1f1bf5e76
BLAKE2b-256 c9c57d8122d7599041eae53b1416a05ede20c2530dbdffdab960cd39ce6153ee

See more details on using hashes here.

File details

Details for the file algotrading_core-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for algotrading_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e72619228d15c8c0a7d092afc9645495d558f3b32fda5950da42a2083aa289e
MD5 01f12eb1febba417575d3c4b05524617
BLAKE2b-256 c6911caa36cd7e394bce6d7463f01afc9d4c68c470dade43f4c3ece23d6580d8

See more details on using hashes here.

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