Ready when you are.
A brand-new website, a network rebuild, a custom board or a tricky hardware fault, drop us a line and we'll respond within one working day. Quotes are free.
info@nyna.co.ukA full research-to-live algorithmic FX system in Python: a vectorised back-testing engine, a causal validation harness and a live MetaTrader 5 execution bot, all built around price-action market structure on EURUSD. Its defining feature isn’t a magic edge, it’s honesty, the framework is engineered to expose the look-ahead bugs and over-fitting that quietly wreck most retail strategies.
Most retail “edges” are look-ahead bugs in disguise. This system is built to catch them, even its own.
The engine ingests decades of EURUSD data across timeframes from daily down to one-minute and simulates strategies bar by bar. Every fill is charged a realistic cost, stops are widened by the spread plus a pip and slippage is modelled, so a back-test can’t win on fills it would never get live. Strategies are expressed as pure functions of past price structure: liquidity sweeps (a prior high or low taken and reclaimed), change-in-state-of-delivery (CISD) confirmations, and draw-on-liquidity (DOL) targets, the mechanics behind ICT-style price action.
An early trend model, EMA bias with a DOL filter, looked spectacular: a clean, rising equity curve and a healthy profit factor across fifteen years. It was too good. An audit of the swing-detection logic found the culprit, it was confirming swing highs and lows using bars that hadn’t happened yet. The “edge” was the strategy quietly reading the future. Rebuilt to use only information available at the moment of each decision, the same system’s profit factor collapsed from comfortably profitable to 0.63, a loser. That failure became the most valuable result in the project: every strategy since has to pass a causal parity test before it goes anywhere near a live account.
With the validation harness in place, I ran a systematic search across strategy families and distinct market eras. The honest conclusion: no strategy held a durable profit factor above ~1.25 in every era. The strongest, most stubborn lead was a quality-filtered Donchian daily breakout, hovering around 1.15–1.27 depending on the period; classic setups like RSI-2 mean reversion “died honest,” with no survivorship illusion left to hide behind. Documenting negative results like these is the process, not a failure of it, it’s the line between real research and a curve-fit fantasy.
The live component runs the strongest structural idea end-to-end on EURUSD: wait for the Asian session’s range to sweep liquidity into the London open, then enter on a one-minute change-in-state-of-delivery, place the stop just beyond the swept swing, and target roughly 2.2R. It executes fully automatically through the MetaTrader 5 Python API, handling live ticks, order placement and position management under a fixed per-trade risk cap. It ran as a genuine live experiment, real spread, real slippage, real fills, to pressure-test the model where a back-test simply can’t.
The deliverable here isn’t a money-printer, it’s a framework that tells the truth. It caught a look-ahead bug that would have blown up a live account, and it rejected every over-fit edge that couldn’t survive out-of-sample. That instinct, trust the process, distrust the result until it’s reproducible, is exactly what I bring to any engineering problem.
A brand-new website, a network rebuild, a custom board or a tricky hardware fault, drop us a line and we'll respond within one working day. Quotes are free.
info@nyna.co.uk