SnapEquities is a web app showing market data and analytics for US equities traders, packaged into an easy-to-use UI.
The app itself is written Go, with an HTMX, Tailwind and DaisyUI frontend and runs as a stateless Docker container.
No market analytics happens in the SnapEquities app; it is a front-end to a hosted install of AWTS (the alphaweighted Trading System), which handles all the market data streaming, data processing and analytics.
This app communicates with AWTS via the same market data APIs as are available for your own local installs.
This includes the following AWTS modules:
This app uses Runner jobs to manage and schedule the analytics work; i.e. it produces a Job Spec in YAML form for each instrument and timeframe and pushes those into Runner. This Job Spec also specifies the indicators/analyses to perform on the data.
Runner hosts the Execution Engine which streams market data and manages execution of the indicators/analytics.
It can then stream, on demand for each user, the current state + history of any given instrument+timeframe which is then charted using the same proprietary charting component as AWTS Dash uses.
For performance and resource management, the app triggers some jobs that are always running for popular instruments (including for the market view), and shuts down infrequently used jobs; re-provisioning them on-the-fly when requested by a site visitor. Sometimes this can be spotted - e.g. if there is a slight delay before a chart loads this is typically when SnapEquities goes through the provisioning process of setting up the job spec, pushing it to Runner, waiting until Runner has streamed market data up to date, and then starts streaming the frame back to you - the user - for charting. All of this happens automatically.
To learn more about AWTS and running your own modular trading data & analytics infrastructure please see the AWTS documentation and please reach out and contact us for help or more details.