Projects

DEIMOS - Market analysis and paper trading terminal

  • Python (FastAPI)
  • React (Vite)
  • WebSockets
  • Web Workers
  • SQLite (WAL)
  • Quantitative Analysis
  • Lightweight Charts
  • Zustand State

I built DEIMOS to analyze market prices and monitor a simulated portfolio. The terminal combines a React/Vite interface, a Python/FastAPI API and a SQLite database.

Charts, watchlists and portfolio valuation based on incoming prices.

Indicators run in Web Workers to keep calculations off the interface thread. WebSockets deliver price updates, and lightweight-charts renders the charts.

Indicator calculations run separately from chart rendering.

The optimization module compares parameters over a selected price history. For example, it searches for a moving-average period that matches a target frequency of closes above the average. The measurement describes that historical window; it does not predict investment returns.

Indicator calculations

  • Developed 19 technical indicators in JavaScript for client-side execution.
  • Implemented SMA, EMA, WMA, HMA, VWMA, DEMA, TEMA, ZLEMA, KAMA and McGinley Dynamic moving averages, plus Bollinger, Keltner, Donchian, Envelope and STARC bands.
  • Projected daily indicators onto intraday charts using independently managed calculation resolutions.

Data feeds and interface

  • Ran calculations in Web Workers to separate their workload from interface rendering.
  • Built a WebSocket manager that distributes prices to the relevant components.
  • Managed state with Zustand and targeted component updates when prices change.
  • Used SQLite in WAL mode, with transactions for position and cash-balance changes.

Simulation and parameter comparison

  • Calculated simulated portfolio value, unrealized profit and loss, and cash balances from incoming prices.
  • Designed an API that searches for parameters matching a target frequency over the selected historical window.
  • Built hierarchical watchlists stored in SQLite and updated in the background.