Market Data Ingestion
OperationalThe entry point of the pipeline: historical market-data ingestion and real-time ingestion of one-minute bars, through the Alpaca provider.
02 / MARKET DATA & TECHNICAL ANALYSIS
From market events
to structured information.
A complete C# market-data platform that ingests historical and real-time bars, persists them in TimescaleDB, aggregates higher timeframes, calculates technical indicators, and analyzes patterns and sequences of market conditions.
Bring structure
to a stream of events.
01 — THE PIPELINE
The pipeline separates collecting market data, building timeframes, deriving technical information, and interpreting that information. TimescaleDB is the durable persistence layer for market bars across all timeframes.
The entry point of the pipeline: historical market-data ingestion and real-time ingestion of one-minute bars, through the Alpaca provider.
Reads one-minute bars, aggregates 5m, 15m, 1h, and daily timeframes, and persists each result in TimescaleDB. Every stage works from the same durable time-series store.
Calculates technical indicators and derives support and resistance levels from aggregated bars. Coordinated processing turns stored market data into structured technical information.
Matches chart and indicator patterns, evaluates combinations and sequences of technical conditions, and delivers higher-level analysis over processed market data.
All four stages work together: ingestion, aggregation, technical processing, and analysis, backed by durable market-data storage.
02 — THE TOOLKIT
Independent ingestion, aggregation, processing, and analysis services with clear responsibilities.
Historical market-data and real-time one-minute bar ingestion.
The primary store for time-series market bars across all timeframes, from one-minute input to higher-timeframe aggregates. Services read and write durable bars through the PostgreSQL persistence layer.
A slim messaging layer for service signaling and work distribution. Durable market state belongs in persistence; small notifications coordinate processing across services.
Stores asset metadata and derived key-level records alongside TimescaleDB’s dedicated time-series bar storage.
Dashboard endpoints and subscription-based browser updates connect the processing pipeline to the market-data interface.
A browser dashboard for candle visualization and symbol/timeframe selection.
03 — SYSTEM ARCHITECTURE
Historical data and real-time one-minute bars enter through ingestion. TimescaleDB persists input bars and the Aggregator’s higher timeframes. The Processor derives indicators and technical structures; the Analyzer interprets that processed information. RabbitMQ coordinates work alongside the durable data path.
Historical and streaming data move through a complete pipeline. TimescaleDB preserves bars across timeframes, RabbitMQ coordinates the services, and the Analyzer turns processed indicators into market insights.
04 — ENGINEERING DECISIONS
As a personal project, AutoBroker was designed with infrastructure cost and operational complexity as architectural constraints. Persisting important market state and intermediate results in the database, alongside RabbitMQ for lightweight signaling and work distribution, keeps the system appropriate for its scale.
Durable state remains in the persistence layer, messages stay relatively small, and services can recover the data they need from persistent storage. RabbitMQ coordinates processing without becoming the source of truth. This intentional separation provides a clear recovery model while avoiding unnecessary infrastructure cost and complexity.
The Processor derives indicators, support/resistance levels, and related technical information from aggregated bars. The Analyzer handles higher-level pattern matching and combinations or sequences of conditions. Distinct stages keep those responsibilities explicit.
Aggregation uses half-open time windows and distinguishes partial, finalized, and corrected bars. Aggregation components and focused tests keep those calculation boundaries consistent.
EXPLORE THE OTHER PROJECT
VaadBot