{"id":23078368,"url":"https://github.com/eomaxl/hft-dataaggregator","last_synced_at":"2026-02-22T05:31:30.256Z","repository":{"id":253386700,"uuid":"843345218","full_name":"Eomaxl/HFT-DataAggregator","owner":"Eomaxl","description":"real-time data aggregator and trading system, capable of collecting, processing, and distributing market data to facilitate automated trading decisions.","archived":false,"fork":false,"pushed_at":"2024-08-16T13:35:43.000Z","size":45,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T06:36:47.212Z","etag":null,"topics":["data-aggregation-api","fix","rest-api","rust","websocket"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Eomaxl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-16T10:05:46.000Z","updated_at":"2025-07-16T16:53:14.000Z","dependencies_parsed_at":"2024-08-17T03:47:57.303Z","dependency_job_id":null,"html_url":"https://github.com/Eomaxl/HFT-DataAggregator","commit_stats":null,"previous_names":["eomaxl/hft-dataaggregator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Eomaxl/HFT-DataAggregator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eomaxl%2FHFT-DataAggregator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eomaxl%2FHFT-DataAggregator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eomaxl%2FHFT-DataAggregator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eomaxl%2FHFT-DataAggregator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eomaxl","download_url":"https://codeload.github.com/Eomaxl/HFT-DataAggregator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eomaxl%2FHFT-DataAggregator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29705536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T03:17:42.375Z","status":"ssl_error","status_checked_at":"2026-02-22T03:17:31.622Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-aggregation-api","fix","rest-api","rust","websocket"],"created_at":"2024-12-16T10:53:58.069Z","updated_at":"2026-02-22T05:31:30.222Z","avatar_url":"https://github.com/Eomaxl.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data Aggregator (Stock Exchange Data)\n\u003cp\u003e\nThis application is designed to function as a real-time data aggregator and trading system, capable of collecting, \nprocessing, and distributing market data to facilitate automated trading decisions. \nIt integrates multiple protocols such as FIX, WebSocket, and REST APIs to manage real-time data streams, execute trades,\nand provide analytics. This system is ideal for use in financial markets where low latency and \nhigh concurrency are critical.\n\u003c/p\u003e\n\n# Use Cases\n\u003cul\u003e\n    \u003cli\u003e\n        \u003cb\u003eReal-Time Market Data Aggregation:\u003c/b\u003e \n        The application collects live market data using WebSocket and REST APIs, aggregates it,\n        and makes it available for trading algorithms.\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003cb\u003eAutomated Trading: \u003c/b\u003e\n        The FIX protocol is used for executing trades based on real-time data processed by the system.\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003cb\u003eMarket Depth Analysis: \u003c/b\u003e\n        Fetches order book data to provide insights into market liquidity and potential price movements.\n    \u003c/li\u003e\n\u003c/ul\u003e\n\n# APIs Exposed by the Application\n\u003ch4\u003e1. Stock List API\u003c/h4\u003e\n\u003cul\u003e\n    \u003cli\u003e\n        Endpoint: http://127.0.0.1:8080/stocks\n    \u003c/li\u003e\n    \u003cli\u003eMethod: GET\u003c/li\u003e\n    \u003cli\u003eQuery Parameters (all optional):\n        \u003cul\u003e\n            \u003cli\u003esymbol: Filter by symbol (e.g., AAPL).\u003c/li\u003e\n            \u003cli\u003eexchange: Filter by exchange name (e.g., NASDAQ).\u003c/li\u003e\n            \u003cli\u003emic_code: Filter by market identifier code (MIC) (e.g., XNAS).\u003c/li\u003e\n            \u003cli\u003ecountry: Filter by country (e.g., United States).\u003c/li\u003e\n            \u003cli\u003etype_: Filter by instrument type (e.g., Common Stock).\u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003eExample curl Command:\n        \u003cul\u003e\n            \u003cli\u003ecurl \"http://127.0.0.1:8080/stocks?symbol=AAPL\u0026exchange=NASDAQ\"\u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003eExample Response:\n        \u003cul\u003e\n            \u003cli\u003e[\n    {\n        \"symbol\": \"AAPL\",\n        \"name\": \"Apple Inc\",\n        \"currency\": \"USD\",\n        \"exchange\": \"NASDAQ\",\n        \"mic_code\": \"XNAS\",\n        \"country\": \"United States\",\n        \"type_\": \"Common Stock\"\n    }\n]\n\u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/li\u003e\n\u003c/ul\u003e\n# Building and Running the Application\n\u003cb\u003ePrerequisites\u003c/b\u003e\n\u003cul\u003e\n    \u003cli\u003e\n        \u003cb\u003eRust :\u003c/b\u003e Ensure that Rust is installed on your machine. You can install Rust by following the instructions at rust-lang.org.\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003cb\u003eCargo :\u003c/b\u003e Rust’s package manager, cargo, will be used to build and run the application.\n    \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch6\u003e\u003cb\u003eSteps to Build and Run\u003c/b\u003e\u003cbr\u003e\u003c/h6\u003e\n\u003cb\u003eClone the Repository: \u003c/b\u003e\u003cbr\u003e\ngit clone https://github.com/your-repo/trading-system.git \u003cbr\u003e\ncd trading-system\n\n\u003ch6\u003e\u003cb\u003eCreate a .env File: \u003c/b\u003e\u003c/h6\u003e\n\u003cp\u003eCreate a .env file in the root of the project and add the following:\u003c/p\u003e\nAPI_KEY=your_twelve_data_api_key\nFIX_SERVER_ADDRESS=127.0.0.1\nFIX_SERVER_PORT=12345\n\n\u003ch6\u003e\u003cb\u003eBuild the Application:\u003c/b\u003e\u003c/h6\u003e\ncargo build --release\n\n\u003ch6\u003e\u003cb\u003eRun the Application:\u003c/b\u003e\u003c/h6\u003e\ncargo run --release \u003cbr\u003e\nThe server will start and listen on http://127.0.0.1:8080.\n\n# Design Patterns Used\n\u003ch4\u003eActor Model:\u003c/h4\u003e\n\u003cp\u003eUsed in WebSocket handling via the actix framework, where each WebSocket connection is managed as an actor.\u003c/p\u003e\n\n\u003ch4\u003eFactory Pattern:\u003c/h4\u003e\n\u003cp\u003eEmployed in creating and managing instances of clients like the TwelveDataAPI and FixSession.\u003c/p\u003e\n\n\u003ch4\u003eObserver Pattern: \u003c/h4\u003e\n\u003cp\u003e The broadcast channel in WebSocket and FIX sessions implements an observer pattern where multiple subscribers can receive updates.\u003c/p\u003e\n\n# Protocols Overview\nWebSocket\u003cbr\u003e\n\u003cp\u003e\u003cb\u003ePurpose:\u003c/b\u003e WebSockets provide full-duplex communication channels over a single TCP connection. In this application, WebSockets are used to receive real-time updates from market data providers and push them to connected clients.\u003c/p\u003e\nFIX (Financial Information eXchange)\u003cbr\u003e\n\u003cp\u003e\u003cb\u003ePurpose:\u003c/b\u003e FIX is a standardized protocol used for real-time electronic communication of financial transactions. The application uses FIX for executing trades and managing orders.\u003c/p\u003e\nREST\u003cbr\u003e\n\u003cp\u003e\u003cb\u003ePurpose:\u003c/b\u003e REST (Representational State Transfer) is an architectural style for designing networked applications. It uses HTTP requests to access and manipulate data.\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feomaxl%2Fhft-dataaggregator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feomaxl%2Fhft-dataaggregator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feomaxl%2Fhft-dataaggregator/lists"}