# Project Context ## Current State The project implements a modular, efficient orderflow processing pipeline: - Stream orderflow from SQLite (`DBInterpreter.stream`). - Process trades and orderbook updates through modular `OHLCProcessor` architecture. - Exchange data with the UI via atomic JSON files (`viz_io`). - Render OHLC+Volume, Depth, and Metrics charts with a Dash app (`app.py`). The system features a clean composition-based architecture with specialized modules for different concerns, providing OBI/CVD metrics alongside OHLC data. ## Recent Work - **Modular Refactoring**: Extracted `ohlc_processor.py` into focused modules: - `level_parser.py`: Orderbook level parsing utilities (85 lines) - `orderbook_manager.py`: In-memory orderbook state management (90 lines) - `metrics_calculator.py`: OBI and CVD metrics calculation (112 lines) - **Architecture Compliance**: Reduced main processor from 440 to 248 lines (250-line target achieved) - Maintained full backward compatibility and functionality - Implemented read-only, batched SQLite streaming with PRAGMA tuning. - Added robust JSON IPC with atomic writes and tolerant UI reads. - Built a responsive Dash visualization polling at 500ms. - Unified CLI using Typer, with UV for process management. ## Conventions - Python 3.12+, UV for dependency and command execution. - **Modular Architecture**: Composition over inheritance, single-responsibility modules - **File Size Limits**: ≤250 lines per file, ≤50 lines per function (enforced) - Type hints throughout; concise, focused functions and classes. - Error handling with meaningful logs; avoid bare exceptions. - Prefer explicit JSON structures for IPC; keep payloads small and bounded. ## Priorities - Improve configurability: database path discovery, CLI flags for paths and UI options. - Add tests for `DBInterpreter.stream` and `OHLCProcessor` (run with `uv run pytest`). - Performance tuning for large DBs while keeping UI responsive. - Documentation kept in sync with code; architecture reflects current design. ## Roadmap (Future Work) - Enhance OBI metrics with additional derived calculations (e.g., normalized OBI). - Optional repository layer abstraction and a storage orchestrator. - Extend visualization with additional subplots and interactivity. - Strategy module for analytics and alerting on derived metrics. ## Tooling - Package management and commands: UV (e.g., `uv sync`, `uv run ...`). - Visualization server: Dash on `http://localhost:8050`. - Linting/testing: Pytest (e.g., `uv run pytest`).