Status: Paused
ForexSaaS
A decision-support tool combining market data, technical analysis, fundamental analysis and automation.
- 3data sources
- 5analysers
- 3scoring engines
- 1backtesting module
Decision-support tool: no order execution, no guaranteed returns, no financial advice.
Context
The currency market continuously produces technical data (prices) and fundamental data (macroeconomic indicators). Analysing them by hand is slow and subjective.
Problem
Combining technical analysis, macro context and risk management means checking several sources and repeating the same calculations every day.
Objective
Collect this data, analyse it and present reasoned scores. The tool places no orders and promises no returns: the user decides.
Architecture
A pipeline of scheduled jobs — collection, analysis, scoring, alerts — exposed through an API and shown in a dashboard.
- CollectionOHLCV prices (Twelve Data), macroeconomic indicators (FRED), Finnhub data, history.
- AnalysisTechnical indicators, market structure, trading sessions, ICT concepts, risk calculation.
- ScoringConfluence and confidence scores explaining why a setup is favourable or not.
- BacktestingRules evaluated on historical data, with performance metrics.
- AlertsEmail notifications.
- DashboardNext.js: candlestick charts, score gauges, macro and backtest panels.
Technologies
- Python
- FastAPI
- SQLAlchemy
- Alembic
- pandas
- NumPy
- ta
- Celery
- Redis
- PostgreSQL
- Next.js
- React
- Tailwind CSS
- Docker
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
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).
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.
Result
Paused. Collection, analysis, scoring and backtesting backend, plus a Next.js dashboard.
Possible evolution
- Consolidate the code in a versioned, tested repository
- Extend test coverage
- Weight scores with machine learning, validated by backtesting
Code and demo
Code not published