Tech stack

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.

AWTS

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:

  • Data modules for stock search and price data streaming
  • The Runner module, and its Execution Engine, for synchronising market data streams, performing the analytics calculations and presenting the outputs (including incremental streaming updates) in chartable form
  • Various News and Calendar components for incorporating fundamental events (macroeconomic announcements, earnings, etc)
  • Parts of Dash for the charting components

How it works

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.

Find out more

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.