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.2.tar.gz (10.1 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.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: algotrading_core-0.1.2.tar.gz
  • Upload date:
  • Size: 10.1 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.2.tar.gz
Algorithm Hash digest
SHA256 6a369d4afd0a144a6a3d46cd3f82f739d1a7702cb75deb0e105d2e57c91c777c
MD5 bf3fec8731e7fe439a085fb0b917cdea
BLAKE2b-256 92b00e252e31ab144a82360faa6069ba8ca875a338a80a55361e857546f7d482

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for algotrading_core-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a5129d77271e6556ac43b30793cb41989b29fc4a426b538ae0e3fa63ec5b97ca
MD5 8aa0009bb4c93533e0268ac01f286048
BLAKE2b-256 d94551d07157d4274fb420f2e9638f0918694174cdf383772de9320fa6070a2e

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