12 KiB
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
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
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
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
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
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
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
- Extract strategy logic into standalone domain module with unit tests.
- Introduce API boundary and typed request/response contracts.
- Externalize side effects (alerts/exports) into worker queue.
- Add Redis caching and persistent analysis snapshots.
- 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
- Approve the phased architecture and target operating model.
- Define API contracts for analysis request/response and event schema.
- Implement Phase 1 module boundaries (domain/application/infrastructure).
- Add core test suite for classification and trend state transitions.
- Plan Phase 2 service split and infrastructure rollout.