# ManeshTrader - Architecture Plan ## Executive Summary ManeshTrader is an analysis-only trading intelligence system that classifies OHLC bars into real/fake signals, derives trend state from real bars, and delivers visual insights, exports, and optional monitoring alerts. The architecture refactor moves from a single-process UI-first design to a modular, service-oriented design that improves testability, scalability, observability, and operational resilience. ## System Context ```mermaid flowchart LR Trader[Trader / Analyst] -->|Configure symbol, timeframe, filters| ManeshTrader[ManeshTrader Analysis Platform] ManeshTrader -->|Fetch OHLC| Yahoo[Yahoo Finance Data API] ManeshTrader -->|Optional notifications| Notify[Email / Push / Webhook] ManeshTrader -->|Export CSV/PDF| Storage[(User Downloads / Object Storage)] Admin[Operator] -->|Monitor health, logs, metrics| ManeshTrader ``` Overview: Defines external actors and dependencies around ManeshTrader. Key Components: Trader, Operator, data provider, notification endpoints, export targets. Relationships: Traders submit analysis requests; platform retrieves market data, computes classifications/trends, and returns charted/exported output. Design Decisions: Keep execution out-of-scope (analysis-only boundary). External market source decoupled behind adapter interface. NFR Considerations: - Scalability: Stateless analysis workloads can scale horizontally. - Performance: Cached market data and precomputed features reduce latency. - Security: Read-only market data; no brokerage keys for execution. - Reliability: Retry/fallback on upstream data issues. - Maintainability: Clear system boundary reduces coupling. Trade-offs: Dependency on third-party data availability/quality. Risks and Mitigations: - Risk: API throttling/outage. Mitigation: caching, backoff, alternate provider adapter. ## Architecture Overview The target architecture uses modular services with explicit boundaries: - Presentation: Web UI / API consumers - Application: Strategy orchestration and workflow - Domain: Bar classification and trend state machine - Data: Provider adapters, cache, persistence - Platform: auth, observability, notifications, exports ## Component Architecture ```mermaid flowchart TB UI[Web UI / Streamlit Frontend] API[Analysis API Gateway] ORCH[Analysis Orchestrator] STRAT[Strategy Engine (Real/Fake Classifier + Trend State Machine)] BT[Backtest Evaluator] ALERT[Alerting Service] EXPORT[Export Service (CSV/PDF)] MKT[Market Data Adapter] CACHE[(Market Cache)] DB[(Analysis Store)] OBS[Observability Logs/Metrics/Traces] UI --> API API --> ORCH ORCH --> STRAT ORCH --> BT ORCH --> ALERT ORCH --> EXPORT ORCH --> MKT MKT --> CACHE MKT --> ORCH ORCH --> DB API --> DB API --> OBS ORCH --> OBS STRAT --> OBS ALERT --> OBS ``` Overview: Internal modular decomposition for the refactored system. Key Components: - Analysis API Gateway: request validation and rate limiting. - Analysis Orchestrator: coordinates data fetch, strategy execution, and response assembly. - Strategy Engine: deterministic classification and trend transitions. - Backtest Evaluator: lightweight historical scoring. - Alerting/Export Services: asynchronous side effects. - Market Data Adapter + Cache: provider abstraction and performance buffer. Relationships: API delegates to orchestrator; orchestrator composes domain and side-effect services; observability is cross-cutting. Design Decisions: Separate deterministic core logic from IO-heavy integrations. NFR Considerations: - Scalability: independent scaling for API, strategy workers, and alert/export processors. - Performance: cache first, compute second, persist last. - Security: centralized input validation and API policy. - Reliability: queue-based side effects isolate failures. - Maintainability: single-responsibility services and clear contracts. Trade-offs: More infrastructure and operational complexity than monolith. Risks and Mitigations: - Risk: distributed debugging complexity. Mitigation: trace IDs and structured logs. ## Deployment Architecture ```mermaid flowchart TB subgraph Internet U[User Browser] end subgraph Cloud[VPC] LB[HTTPS Load Balancer / WAF] subgraph AppSubnet[Private App Subnet] UI[UI Service] API[API Service] WRK[Worker Service] end subgraph DataSubnet[Private Data Subnet] REDIS[(Redis Cache)] PG[(PostgreSQL)] MQ[(Message Queue)] OBJ[(Object Storage)] end OBS[Managed Monitoring] SECRET[Secrets Manager] end EXT[Yahoo Finance / Alt Provider] U --> LB --> UI UI --> API API --> REDIS API --> PG API --> MQ WRK --> MQ WRK --> PG WRK --> OBJ API --> EXT WRK --> EXT API --> OBS WRK --> OBS API --> SECRET WRK --> SECRET ``` Overview: Logical production deployment with secure segmentation. Key Components: WAF/LB edge, stateless app services, queue-driven workers, managed data stores. Relationships: Request path stays synchronous through UI/API; heavy export/alert tasks handled asynchronously by workers. Design Decisions: Network segmentation and managed services for resilience and lower ops overhead. NFR Considerations: - Scalability: autoscaling app and worker tiers. - Performance: Redis cache and async task offload. - Security: private subnets, secret manager, TLS at edge. - Reliability: managed DB backup, queue durability. - Maintainability: environment parity across dev/staging/prod. Trade-offs: Managed services cost vs operational simplicity. Risks and Mitigations: - Risk: queue backlog under spikes. Mitigation: autoscaling workers and dead-letter queues. ## Data Flow ```mermaid flowchart LR R[User Request symbol/timeframe/filters] --> V[Input Validation] V --> C1{Cache Hit?} C1 -->|Yes| D1[Load OHLC from Cache] C1 -->|No| D2[Fetch OHLC from Provider] D2 --> D3[Normalize + Time Alignment] D3 --> D4[Persist to Cache] D1 --> P1[Classify Bars real_bull/real_bear/fake] D4 --> P1 P1 --> P2[Trend State Machine 2-bar confirmation] P2 --> P3[Backtest Snapshot] P3 --> P4[Build Response Model] P4 --> S1[(Analysis Store)] P4 --> O[UI Chart + Metrics + Events] P4 --> E[Export Job CSV/PDF] P4 --> A[Alert Job] ``` Overview: End-to-end data processing lifecycle for each analysis request. Key Components: validation, cache/provider ingestion, classification/trend processing, output assembly. Relationships: deterministic analytics pipeline with optional async exports/alerts. Design Decisions: Normalize data before strategy logic for deterministic outcomes. NFR Considerations: - Scalability: compute pipeline can be parallelized per request. - Performance: cache avoids repeated provider calls. - Security: strict input schema and output sanitization. - Reliability: idempotent processing and persisted analysis snapshots. - Maintainability: explicit stage boundaries simplify test coverage. Trade-offs: Additional persistence adds write latency. Risks and Mitigations: - Risk: inconsistent timestamps across providers. Mitigation: canonical UTC normalization. ## Key Workflows ```mermaid sequenceDiagram participant User participant UI participant API participant Data as Market Adapter participant Engine as Strategy Engine participant Alert as Alert Service participant Export as Export Service User->>UI: Submit symbol/timeframe/filters UI->>API: Analyze request API->>Data: Get closed OHLC bars Data-->>API: Normalized bars API->>Engine: Classify + detect trend Engine-->>API: trend state, events, metrics API-->>UI: chart model + events + backtest alt New trend/reversal event API->>Alert: Publish notification task end opt User requests export UI->>API: Export CSV/PDF API->>Export: Generate artifact Export-->>UI: Download link/blob end ``` Overview: Critical user flow from request to insight/alert/export. Key Components: UI, API, data adapter, strategy engine, alert/export services. Relationships: synchronous analysis, asynchronous side effects. Design Decisions: Keep analytical response fast; move non-critical tasks to background. NFR Considerations: - Scalability: alert/export can scale separately. - Performance: response prioritizes analysis payload. - Security: permission checks around export and notification endpoints. - Reliability: retries for failed async tasks. - Maintainability: workflow contracts versioned via API schema. Trade-offs: eventual consistency for async outputs. Risks and Mitigations: - Risk: duplicate alerts after retries. Mitigation: idempotency keys by event hash. ## Additional Diagram: Domain State Model ```mermaid stateDiagram-v2 [*] --> Neutral Neutral --> Bullish: 2 consecutive real_bull Neutral --> Bearish: 2 consecutive real_bear Bullish --> Bullish: fake OR single real_bear fluke Bearish --> Bearish: fake OR single real_bull fluke Bullish --> Bearish: 2 consecutive real_bear Bearish --> Bullish: 2 consecutive real_bull ``` Overview: Strategy state transitions based on confirmed real-bar sequences. Key Components: Neutral, Bullish, Bearish states; confirmation conditions. Relationships: fake bars never reverse state; opposite single bar is non-reversal noise. Design Decisions: enforce confirmation to reduce whipsaw. NFR Considerations: - Scalability: pure function state machine enables easy horizontal compute. - Performance: O(n) per bar sequence. - Security: deterministic logic reduces ambiguity and operator error. - Reliability: explicit transitions avoid hidden side effects. - Maintainability: state model is test-friendly and auditable. Trade-offs: delayed reversals in fast inflection markets. Risks and Mitigations: - Risk: late entries due to confirmation lag. Mitigation: optional “early warning” non-trading signal. ## Phased Development ### Phase 1: Initial Implementation - Single deployable web app with embedded analysis module. - Basic data adapter, core strategy engine, charting, CSV export. - Local logs and lightweight metrics. ### Phase 2+: Final Architecture - Split API, workers, and dedicated alert/export services. - Add cache + persistent analysis store + queue-driven async tasks. - Multi-provider market adapter and hardened observability. ### Migration Path 1. Extract strategy logic into standalone domain module with unit tests. 2. Introduce API boundary and typed request/response contracts. 3. Externalize side effects (alerts/exports) into worker queue. 4. Add Redis caching and persistent analysis snapshots. 5. Enable multi-environment CI/CD and infrastructure-as-code. ## Non-Functional Requirements Analysis ### Scalability Stateless API/services with autoscaling; async workers for bursty jobs; provider/caching abstraction to reduce upstream load. ### Performance Cache-first ingestion, bounded bar windows, O(n) classification/state processing, deferred heavy exports. ### Security WAF/TLS, secrets manager, strict request validation, RBAC for admin controls, audit logs for alert/export actions. ### Reliability Queue retry policies, dead-letter queues, health probes, circuit breakers for upstream data sources, backup/restore for persistent stores. ### Maintainability Layered architecture, clear contracts, domain isolation, test pyramid (unit/contract/integration), observability-first operations. ## Risks and Mitigations - Upstream data inconsistency: normalize timestamps and schema at adapter boundary. - Alert noise: debounce and idempotency keyed by symbol/timeframe/event timestamp. - Cost growth with scale: autoscaling guardrails, TTL caches, export retention policy. - Strategy misinterpretation: publish explicit strategy rules and state transition docs in product UI. ## Technology Stack Recommendations - Frontend: Streamlit (MVP) then React/Next.js for multi-user production UX. - API: FastAPI with pydantic contracts. - Workers: Celery/RQ with Redis or managed queue. - Storage: PostgreSQL for analysis metadata; object storage for export artifacts. - Observability: OpenTelemetry + managed logging/metrics dashboards. - Deployment: Containerized services on managed Kubernetes or serverless containers. ## Next Steps 1. Approve the phased architecture and target operating model. 2. Define API contracts for analysis request/response and event schema. 3. Implement Phase 1 module boundaries (domain/application/infrastructure). 4. Add core test suite for classification and trend state transitions. 5. Plan Phase 2 service split and infrastructure rollout.