OXARUS :: ENGINEERING

Backtesting, data pipelines and risk controls · Oxarus Quant

Pipelines that clean market data, tests purged of look-ahead bias and risk controls that protect live systems. We build them for institutions, too.

Interface data marked as representative is illustrative; it is not a real client, result or measurement.

Not investment advice. Trading in financial markets carries a risk of losing capital.

FROM DATA TO LIVE.

QUANT · ENGINEERING

Building systems that trade our own capital taught us what belongs in the infrastructure: pipelines that verify data, tests closed to look-ahead bias and risk controls that halt a live system when they have to.

  • Tests guarded against look-ahead bias
  • Verified against two independent data sources
  • Automatic circuit breakers in production
  1. Data
  2. Test
  3. Live

REPRESENTATIVE INTERFACE DATA · Representative flow diagram.

file

research-to-live

tag

Representative flow

data

Data

test

Test

Live

Broker data

detail

EURUSD · M1

Reference data

detail

independent second source

Clean and compare

detail

median diff 0.20 pip

Features

detail

previous bar only

Backtest

detail

hourly spread distribution

Walk-forward

detail

unseen period

Risk gate

detail

5 checks before every order

Live

detail

order flow

Monitoring

detail

event log and alerts

bars

2.4M minutes

delta

median diff 0.20 pip

lookahead

look-ahead: 0

breakers

5 circuit breakers armed

WHERE BACKTESTS GO WRONG.

TESTING

Most systems that look good on historical data are feeding on a flaw in the test itself. Pick one to see the flawed test, the corrected pipeline and the automated checks side by side.

  • Look-ahead

    Flawed test

    The day's close leaks into an intraday decision.

    Corrected pipeline

    The read window ends before the current bar; anything after it is out of reach.

    A value that's only known at the end of the day gets used during the day.

    Every calculation draws only on the previous bar and earlier. We don't leave this to code review: by design, the data access layer can't see the future.

  • Synthetic ticks

    Flawed test

    A four-point synthetic path fills at prices that never traded.

    Corrected pipeline

    The real tick path: every fill rests on a price that was actually seen.

    Fake price paths generated from minute bars create fills that never happened.

    We rerun critical results on real tick data and a second feed source.

  • Overfitting

    Flawed test

    One bright cell: results fall apart at neighboring settings.

    Corrected pipeline

    A broad, stable region: the chosen setting's neighbors hold up too.

    The best of hundreds of parameter combinations is picked and assumed to stay the best.

    We choose parameters in one period and test them in a period they've never seen. Settings that don't hold at neighboring values are discarded.

  • Survivorship

    Flawed test

    A universe built from today's list never sees delisted instruments.

    Corrected pipeline

    Every instrument trading on that date, including those removed later.

    The test only uses instruments that still exist today.

    The test universe is built from instruments that were actually available on that date.

  • Unrealistic costs

    Flawed test

    A fixed spread every hour: no session differences, no news widening.

    Corrected pipeline

    Spread distribution by hour, with spikes around news preserved.

    Spread, commission and slippage are assumed to be zero or fixed.

    We use the real spread distribution by hour and session, including widening around news.

Audit suite

count

{passed} / {total} passed

If any audit is red, the change does not merge into the main branch.

run all

Run all

queued

queued

passed

passed

pass

pass

fail

fail

representative

Representative output

TWO SOURCES, MINUTE BY MINUTE.

DATA

We compare the broker feed against an independent reference source, minute by minute. 1,721 shared trading days, 2.4 million shared minutes.

Median

0.2

90th percentile

0.4

99th percentile

1.8

Largest difference

16.8

unit

pip

Most of the time, the difference is a fifth of a pip. That's why we can verify our results without depending on any single broker's data.

overlay

Same minutes, two sources

histogram

Distribution of minute-close differences

The shape of the distribution is representative; the marked percentiles and the largest difference are measured.

histogram sample

n = 2.4M · square-root scale

source a

Broker

source b

Reference

Shared trading days

1,721

Shared minutes

2.4million

Daily range difference, median

0.2pip

representative

Representative path

measured

measured

jump max

Jump to the largest gap

validated

validated

FIVE CHECKS BEFORE EVERY ORDER.

RISK

Every order the live system sends passes these checks. Trip one, then send a test order to see which check stops it.

  • Daily loss limit

    Intraday loss has hit the limit

    No new trades open, open trades close according to the rules, and the system stays locked until the end of the day.

  • Spread guard

    Spread has widened to 4× normal

    Pending orders are suspended, and no entries are made until the spread normalizes.

  • News window

    High-impact release within 10 minutes

    No new trades open during the window, and stops are not widened.

  • Connection loss

    Server unresponsive for 20 seconds

    No orders are sent until the connection is restored; on reconnect, positions are reconciled with the server.

  • Exposure cap

    Total risk in one currency is at the cap

    No new positions involving that currency are opened.

status

System status

representative

Representative screen

Test order

Send an order through the gate and see which check passes and which one stops it.

send

Send test order

accepted

Order accepted

rejected

Order rejected · {name}

accepted count

accepted

blocked count

blocked

WE BUILD IT FOR YOU, TOO.

INSTITUTIONAL

We build the infrastructure we run our own research and live systems on around your organization's data and processes.

  • Data pipelines

    Infrastructure that collects, cleans and stores price and news data from multiple sources.

    Tools used

    [Python] [Polars] [Parquet] [PostgreSQL]

    DELIVERABLES

    • Source connectors and scheduled pulls
    • Dual-source comparison and quality report
    • Versioned, queryable data store
  • Testing infrastructure

    An environment where your team can test strategies free of look-ahead bias.

    Tools used

    [Python] [NumPy] [pytest] [Docker]

    DELIVERABLES

    • Look-ahead-safe data access layer
    • Walk-forward and parameter robustness reports
    • Reproducible, containerized test environment
  • MetaTrader 5 tooling

    Robots, panels, bridges and reporting tools built for institutional use.

    Tools used

    [MQL5] [C++] [MetaTrader 5] [REST]

    DELIVERABLES

    • Robot, panel and indicator development
    • Bridges between MetaTrader 5 and external systems
    • Source code and setup documentation
  • Risk and monitoring dashboards

    Dashboards that show account exposure, limits and system health on a single screen.

    Tools used

    [TypeScript] [Next.js] [WebSocket] [PostgreSQL]

    DELIVERABLES

    • Per-account exposure and limit view
    • Circuit breaker states and event log
    • Instant alerts on threshold breaches
representative

Representative

LET'S BUILD YOUR INFRASTRUCTURE.

ENGINEERING

Tell us what you need, whether it's a data pipeline, a test environment or a risk dashboard, and we'll define the scope and approach together.

ACTIONS

DOCUMENTS

llms.txt

/llms.txt

agents.md

/en/agents.md

Every page is also served as Markdown: add .md to the address or request it with Accept: text/markdown.