Legma Parfait
FRCV
Back to the archive
Mission 003

Status: Paused

ForexSaaS

A decision-support tool combining market data, technical analysis, fundamental analysis and automation.

  • 3data sources
  • 5analysers
  • 3scoring engines
  • 1backtesting module
Setting
Product — decision support
Role
Design and development
Stack
Python · FastAPI · pandas · Celery · Next.js

Decision-support tool: no order execution, no guaranteed returns, no financial advice.

01

Context

The currency market continuously produces technical data (prices) and fundamental data (macroeconomic indicators). Analysing them by hand is slow and subjective.

02

Problem

Combining technical analysis, macro context and risk management means checking several sources and repeating the same calculations every day.

03

Objective

Collect this data, analyse it and present reasoned scores. The tool places no orders and promises no returns: the user decides.

04

Architecture

A pipeline of scheduled jobs — collection, analysis, scoring, alerts — exposed through an API and shown in a dashboard.

  1. CollectionOHLCV prices (Twelve Data), macroeconomic indicators (FRED), Finnhub data, history.
  2. AnalysisTechnical indicators, market structure, trading sessions, ICT concepts, risk calculation.
  3. ScoringConfluence and confidence scores explaining why a setup is favourable or not.
  4. BacktestingRules evaluated on historical data, with performance metrics.
  5. AlertsEmail notifications.
  6. DashboardNext.js: candlestick charts, score gauges, macro and backtest panels.
05

Technologies

Backend
  • Python
  • FastAPI
  • SQLAlchemy
  • Alembic
Data
  • pandas
  • NumPy
  • ta
Jobs and storage
  • Celery
  • Redis
  • PostgreSQL
Interface and infra
  • Next.js
  • React
  • Tailwind CSS
  • Docker
06

Features

  • Scheduled collection from three data sources
  • Technical analysis and market structure analysis
  • Macroeconomic context built into the analysis
  • Confluence and confidence scores
  • Risk calculation adapted to each currency pair
  • Backtesting on historical data
  • Email alerts and admin dashboard
07

Technical decisions

Support the decision, don’t make it

The system places no orders. It explains a setup through readable criteria: the decision stays human.

Decoupled jobs

Collection, analysis, notification and retention are separate Celery jobs: each can fail or be retried without blocking the others.

Documented choices

Key technical decisions are recorded as ADRs (Architecture Decision Records).

08

Challenges

Yen pair precision

A pip is 0.01 on JPY pairs versus 0.0001 elsewhere. Risk calculation and backtesting were fixed accordingly.

Iterating in sprints

The project moved forward in successive sprints, each adding a block: collection, analysis, scoring, backtesting, calibration.

09

Result

Paused. Collection, analysis, scoring and backtesting backend, plus a Next.js dashboard.

10

Possible evolution

  • Consolidate the code in a versioned, tested repository
  • Extend test coverage
  • Weight scores with machine learning, validated by backtesting
Next mission · 004FasoDigit →