3.4 KiB
3.4 KiB
Why
The annotation tool currently creates labeled datasets but has no way to train models on them or get predictions back. Adding a Python ML backend closes the loop: annotations become training data, models produce predictions, and predictions guide further annotation — creating an active learning cycle for candlestick pattern recognition.
What Changes
- Add a Python service (
services/ml/) alongside the existing Next.js app, using FastAPI for the REST API - Implement TA-Lib-based candlestick pattern recognition to auto-generate annotations programmatically
- Build a configurable ML training pipeline (feature engineering → annotation ingestion → training → evaluation) with MLflow tracking and DVC for data versioning
- Support multiple model types: RandomForest and XGBoost initially, with architecture ready for LSTM/GRU and transformer-based models later
- Serve trained models via a FastAPI inference API that accepts OHLCV candles and returns pattern predictions with confidence scores
- Add Next.js API proxy routes (
/api/predict,/api/predict/batch,/api/model/info) to connect the frontend to the Python backend - Add prediction visualization layer on the chart (distinct from human annotations) with confidence filtering and disagreement detection
- Add a prediction controls panel for toggling predictions, filtering by label/confidence, and viewing per-class model metrics
- Implement a feedback loop: users can confirm, correct, or dismiss model predictions as new annotations
Capabilities
New Capabilities
feature-engineering: TA-Lib indicator computation and candle feature extraction from raw OHLCV data, producing enriched datasets for training and inferenceannotation-ingestion: Converting span annotations (human and programmatic) into labeled training datasets with BIO or windowed encoding, including TA-Lib CDL* pattern auto-labelingml-training: Configurable model training pipeline with temporal splits, class balancing, MLflow experiment tracking, artifact logging, and model registry integrationml-inference: REST API serving trained models — accepts OHLCV candles, runs preprocessing, returns predictions with confidence scores and model metadataprediction-ui: Frontend prediction layer with chart visualization, controls panel, confidence filtering, disagreement detection, and feedback loop for active learning
Modified Capabilities
backend-api: New proxy routes (/api/predict,/api/predict/batch,/api/model/info) added to forward requests to the Python inference servicespan-annotation: Span export format consumed by the ML pipeline for training; prediction-confirmed spans can be saved as new annotations
Impact
- New dependencies: Python 3.11+, FastAPI, uvicorn, scikit-learn, XGBoost, TA-Lib (C library + Python wrapper), MLflow, DVC, pandas, numpy, joblib
- New service: Python FastAPI service running on port 8001, needs to be added to docker-compose
- Data flow: Annotation JSON/CSV exports feed into Python pipeline; inference results flow back to the frontend via Next.js proxy routes
- Infrastructure: MLflow tracking server (port 5000), DVC remote storage for dataset versioning
- Existing code changes: New API routes in Next.js, new React components for prediction panel, chart overlay modifications for prediction rendering
- Config: Pipeline YAML config (
config/pipeline.yaml) controls all ML stages; env vars for inference API URL and feature flags