market-data-source 0.3.0

High-performance synthetic market data generator with financial precision. Generate unlimited OHLC candles, tick data, and realistic trading scenarios for backtesting and research.
Documentation
# PRP-40: Data Source Abstraction Layer

## Context & Motivation

**Integration Goal**: Create unified interface for all data sources (synthetic, Yahoo, Alpha Vantage, future sources).

**User Requirement**: Seamlessly switch between data sources without changing application code.

**Technical Challenge**: Design flexible abstraction that accommodates different data formats and capabilities.

## Requirements

### Abstraction Design
1. **Common Interface**: Unified trait for all data sources
2. **Capability Discovery**: Query source capabilities
3. **Format Normalization**: Convert to standard types
4. **Error Harmonization**: Consistent error handling

### Source Management
1. **Registry Pattern**: Dynamic source registration
2. **Fallback Chain**: Automatic failover
3. **Source Composition**: Combine multiple sources
4. **Priority Routing**: Route requests by criteria

## Implementation Blueprint

### Phase 1: Core Abstraction
1. Create `src/sources/mod.rs`
2. Define `DataSource` trait
3. Implement capability queries
4. Add error types

### Phase 2: Source Implementations
1. Wrap existing generators as sources
2. Adapt Yahoo Finance client
3. Adapt Alpha Vantage client
4. Create composite source

### Phase 3: Advanced Features
1. Implement source registry
2. Add routing logic
3. Create fallback chains
4. Add source health monitoring

## Success Criteria

### Validation Gates
```bash
# Test abstraction layer
cargo test data_sources
cargo test source_abstraction

# Test all implementations
cargo test source_implementations
```

### Implementation Metrics
- [ ] All sources implement common trait
- [ ] Zero overhead for abstraction
- [ ] Seamless source switching
- [ ] Fallback works automatically

## Dependencies & References

**Prerequisites**:
- Complete PRP-38 and PRP-39 first
- Existing generator infrastructure

**Design Patterns**:
- Strategy pattern for sources
- Registry pattern for management
- Chain of responsibility for fallback

**Rust Patterns**:
- Trait objects for dynamic dispatch
- Async trait for async sources
- Error conversion traits

## Implementation Tasks

### Phase 1: Design (2-3 hours)
1. Define trait interface
2. Create error types
3. Design capability system
4. Write trait tests

### Phase 2: Implementation (3-4 hours)
1. Wrap synthetic generator
2. Wrap real data adapters
3. Test each implementation
4. Verify abstraction

### Phase 3: Management (2-3 hours)
1. Create source registry
2. Implement routing
3. Add fallback logic
4. Document patterns

## Risk Mitigation
- Keep abstraction minimal initially
- Ensure zero-cost abstractions
- Provide escape hatches for source-specific features
- Include comprehensive examples

## Success Score
**8/10** - Critical architectural component with clear design patterns to follow.