Skip to content
Ezekiel Folarin
← All projects

Platform · Live

Enobs AI

A trading-intelligence platform built around risk management, signal validation and honest, verifiable performance reporting.

My role
Designed and built the whole platform: backend, frontend, deployment and operations.
Stack
Python, Flask, React, Tailwind CSS, PostgreSQL, Docker Compose, MQL5
Link
Visit the project (opens in a new tab)

The problem

Most trading-signal products sell excitement. They show wins, hide losses and make promises nobody can check. I wanted the opposite: a system where every signal passes explicit risk rules, and every result can be traced back to real trades.

Enobs AI is not a magic trading bot, and the product never says it is. It is a platform for generating, validating, delivering and measuring signals, with the risk controls in front.

What I built

  • Strategy and scanner engines that scan several markets, filter signals, block duplicates and conflicting trades, and check trend alignment and risk-to-reward before anything is published.
  • Signal management: ranking, validation and expiry, so stale ideas do not linger.
  • Paper-trading verification that simulates trades and tracks win rate, average and total R, and drawdown, so a strategy is judged before it reaches a user.
  • Delivery: Telegram publishing with subscription-aware access control, plus a web dashboard (React) for members.
  • Auto-trading support through MetaTrader 5 expert advisors, with account-level guards: a daily loss limit, a loss-streak limit, a drawdown limit and a maximum holding time.
  • Operations: a Flask API, a scheduler, PostgreSQL, a blog and an academy service, all as separate Docker Compose services behind nginx.

Decisions worth explaining

  • Risk first. Position size, stop distance and drawdown limits are enforced in code, at more than one layer, so one failure does not remove every guard.
  • Pre-declared pass bars. Before testing a strategy change on historical data, I write down what result would count as a pass. If it does not pass, I report “no edge detected” and move on instead of tuning until it looks good.
  • One change at a time. Changing several settings at once makes results impossible to attribute.

Results

I do not publish performance numbers on this page. Returns are never guaranteed, and a portfolio is the wrong place for figures a visitor cannot audit. What I can show is the engineering and the method.

What I’m working on next

Better live monitoring and clearer reporting, so that what the system does in production can always be compared with what was expected.

Talk about a project