3.9 KiB
3.9 KiB
Tasks: OBI and CVD Metrics Integration
Based on the PRD for integrating Order Book Imbalance (OBI) and Cumulative Volume Delta (CVD) calculations into the orderflow backtest system.
Relevant Files
repositories/sqlite_repository.py- Extend to support metrics table operations and batch insertionsrepositories/test_metrics_repository.py- Unit tests for metrics repository functionalitymodels.py- Add new data models for metrics and update Book classtests/test_models_metrics.py- Unit tests for new metric modelsstorage.py- Modify to integrate metric calculations during snapshot processingtests/test_storage_metrics.py- Unit tests for storage metric integrationstrategies.py- Enhance DefaultStrategy to calculate OBI and CVD metricstests/test_strategies_metrics.py- Unit tests for strategy metric calculationsvisualizer.py- Extend to plot OBI and CVD curves beneath volume graphstests/test_visualizer_metrics.py- Unit tests for metric visualizationparsers/metric_calculator.py- New utility class for OBI and CVD calculationstests/test_metric_calculator.py- Unit tests for metric calculation logic
Notes
- Unit tests should be placed alongside the code files they are testing
- Use
uv run pytest [optional/path/to/test/file]to run tests following project standards - Database schema changes require migration considerations for existing databases
Tasks
-
1.0 Database Schema and Repository Updates
- 1.1 Create metrics table schema with proper indexes and foreign key constraints
- 1.2 Add metrics table creation method to SQLiteOrderflowRepository
- 1.3 Implement metrics insertion methods with batch support for performance
- 1.4 Add metrics querying methods (by timestamp range, snapshot_id)
- 1.5 Create database migration utility to add metrics table to existing databases
- 1.6 Add proper error handling and transaction management for metrics operations
-
2.0 Metric Calculation Engine
- 2.1 Create MetricCalculator class with OBI calculation method
- 2.2 Implement CVD calculation with incremental support and reset functionality
- 2.3 Add volume delta calculation for individual timestamps
- 2.4 Implement best bid/ask extraction from orderbook snapshots
- 2.5 Add edge case handling (empty orderbook, no trades, zero volume)
- 2.6 Create validation methods to ensure OBI values are within [-1, 1] range
-
3.0 Storage System Integration
- 3.1 Modify Storage.build_booktick_from_db to integrate metric calculations
- 3.2 Update _create_snapshots_from_rows to calculate and store metrics per snapshot
- 3.3 Implement memory optimization by removing full snapshot retention
- 3.4 Add metric persistence during snapshot processing
- 3.5 Update Book model to store only essential data (metrics + best bid/ask)
- 3.6 Add progress reporting for metric calculation during processing
-
4.0 Strategy Enhancement
- 4.1 Update DefaultStrategy to use MetricCalculator for OBI and CVD
- 4.2 Modify compute_OBI method to work with new metric calculation system
- 4.3 Add CVD computation method to DefaultStrategy
- 4.4 Return time-series data structures compatible with visualizer
- 4.5 Integrate metric calculation into on_booktick workflow
- 4.6 Add configuration options for CVD reset points and calculation parameters
-
5.0 Visualization Implementation
- 5.1 Extend Visualizer to load metrics data from database
- 5.2 Add OBI and CVD plotting methods beneath volume graphs
- 5.3 Implement shared X-axis time alignment across all charts (OHLC, volume, OBI, CVD)
- 5.4 Add 6-hour bar aggregation support for metrics visualization
- 5.5 Implement standard line styling for OBI and CVD curves
- 5.6 Make time resolution configurable for future flexibility