Systematic · Quantitative · Proprietary

We trade our own capital. Nothing else.

Shadowell is a systematic quantitative trading group. We research, engineer and run fully automated strategies across global markets, funded entirely by our own balance sheet.

  • No external capital
  • No client mandates
  • One book, one team

The model

Principal risk. Total alignment.
Zero distraction.

We are not an asset manager. There is no fundraising, no investor reporting cycle, no benchmark to hug. Every decision is measured against a single question: does it make the book better?

01

Our capital, our conviction

The firm's own balance sheet is the only capital at risk. That lets us hold positions through noise, size with discipline, and kill strategies the moment the edge decays.

02

Evidence over instinct

Every position begins as a falsifiable hypothesis. It reaches production only after it survives out-of-sample testing, cost modelling and adversarial review by the team.

03

Small team, deep stack

Researchers and engineers sit together and own their work end to end, from raw tick data to the order on the wire. No silos, no handoffs, no pods competing for scraps.

What we are

  • A principal trading firm risking only its own balance sheet
  • A single book, run by one team on one platform
  • An engineering organisation that happens to trade
  • Fully systematic, with no discretionary overrides

What we are not

  • A fund, an asset manager or a broker
  • A funded-trader or evaluation programme
  • A signal, course or copy-trading service
  • A place where research is separated from production

Three disciplines

Research. Engineering.
Risk.

They are not departments. They are the three forces every idea has to pass through.

Research

A continuous pipeline that turns raw market and alternative data into tested, capital-ready signals. Hypothesis, evidence, decision: repeated relentlessly.

  • Signal discovery
  • Regime modelling
  • Cost & capacity
  • Validation

Engineering

One in-house platform: ingestion, simulation, deployment and execution. The same code path that backtests a strategy is the one that trades it.

  • C++ / Rust
  • Deterministic sim
  • Co-location
  • Observability

Risk

Limits are code, not culture. Exposure, drawdown, correlation and liquidity are enforced automatically: pre-trade, in-flight and at the book level.

  • Pre-trade limits
  • Kill switches
  • Stress scenarios
  • Attribution

The pipeline

From raw tick to live risk.

Five stages, each one measured, versioned and reproducible, so that a result from three years ago can be rebuilt today, bit for bit.

Stage 01

Data, captured properly

Full-depth market data, reference data and alternative sources are normalised into a single time-correct store. Everything is point-in-time, so a model never sees the future.

  • Nanosecond-stamped, exchange-native capture
  • Point-in-time corporate actions and reference data
  • Automated quality gates on gaps, outliers and drift
Stage 02

Signals, honestly tested

Ideas are expressed as forecasts and judged out of sample, net of realistic costs. Most die here. That's the point.

  • Statistical and machine-learned forecasts across horizons
  • Cost, slippage and capacity modelled from day one
  • Adversarial review before a single pound is allocated
Stage 03

Portfolio, built for the whole book

Forecasts become positions through an optimiser that balances expected return against risk, turnover and the correlation of everything already on.

  • Multi-horizon signal blending and decay control
  • Factor, sector and liquidity constraints
  • Turnover-aware sizing against live capacity
Stage 04

Execution, engineered

Target positions are traded by our own smart order routing and scheduling logic, co-located at the venues that matter, and continuously scored against benchmarks.

  • In-house routing, scheduling and microstructure models
  • Co-located, kernel-bypass networking on critical paths
  • Every fill measured. Execution alpha is real alpha.
Stage 05

Risk, enforced in code

Limits sit in the critical path, not in a policy document. Independent monitoring runs beside the trading system with the authority to halt it instantly.

  • Pre-trade limit checks and automated kill switches
  • Real-time exposure, drawdown and concentration control
  • Daily attribution back to the originating hypothesis
0+
Execution venues and exchanges connected
0+
Instruments continuously modelled
0M
Orders and quotes per trading day
<0µs
Median tick-to-trade on latency-critical paths

Tick-to-trade

— µs
0 µsp99 —60 µs

Inbound messages

— /s
Rolling windowNormalised

—

Venue sessions

45 / 45
All sessions healthyHeartbeat 1s

Illustrative visualisation · synthetic telemetry keyed to the real London clock, not live production data

Strategy lab

Why most edges
never survive.

A toy version of the decision we make every week. Move the sliders: costs, capacity, latency and the cost of capital will happily eat an edge that looked beautiful on paper.

Predicted return per trade, before any cost.
What the venue and the touch charge you to get in and out.
More trades means more independent bets, and more market impact.
Impact grows with size. This is why edges do not scale for ever.
Slower means more adverse selection on every fill.
Financing the leverage a thin edge needs. Slow strategies feel this hardest.
Scales the book. Changes the size of the swings, not the quality of the edge.
SEED — · ·
Drop a CSV of prices here
date,close — parsed in your browser, never uploaded.
—
Return / yr
—
Max drawdown
—
Net edge
—

—

—

Net of cost (one path) Other paths, same parameters Gross, cost-free fantasy Drawdown
Net edge — Spread & fees — Impact — Latency — Financing —
—

Adjust the controls to see how an edge behaves once reality is priced in.

Illustrative toy model with a fixed random seed. Not a representation of Shadowell's strategies, positions or performance. Read: why we kill most of our own ideas ›

Technology

Built here.
End to end.

We buy connectivity and compute. Everything that touches a decision — simulation, portfolio, execution, risk — is ours.

One research platform

A single, deterministic simulator drives research and production. If it happened in the backtest, it can happen on the wire: same code, same clock, same assumptions.

Core languagesC++20 · Rust · Python
Research computeGPU cluster · distributed sim
DataColumnar tick store · petabyte scale
ReproducibilityVersioned data + code + seeds

Low-latency core

Lock-free, cache-aware C++ on tuned kernels with bypass networking and hardware timestamping. Latency is budgeted per hop and regression-tested like any other feature.

Read the per-hop budget ›

Simulation at scale

Thousands of parallel scenarios per idea, with queue position, latency and impact modelled rather than assumed. Cheap experiments make expensive mistakes rare.

Read: point-in-time data ›

Risk in the path

Independent limit engine with hard pre-trade checks and automated halts.

Global footprint

Co-located presence across major cash, derivative and digital-asset venues.

Total observability

Every order, signal and fill traceable to the decision that produced it.

This website is part of the same argument. Why it has zero dependencies ›

Coverage

Where we trade,
and how.

Diversified across asset classes and horizons, because a book that depends on one regime is not a book. It's a bet.

Asset classes

Equities & ETFsCASH · DELTA-1
Futures & index productsGLOBAL · 24/5
Listed options & volatilitySURFACE · RV
Foreign exchangeSPOT · FWD
Digital assetsSPOT · PERP · OPT

Strategy families

Statistical arbitrageINTRADAY → DAYS
Market microstructureSUB-SECOND
Volatility relative valueDAYS → WEEKS
Systematic macro & trendWEEKS → MONTHS
Execution alphaCONTINUOUS
SYNTHETIC BOOK · SWL-PERP · L2

Tape

    —

    Simulated microstructure: clustered order arrivals, cancellations and executions. No real venue data.

    Family correlation

    Why we care

    A duplicate signal is a concentration wearing a diversifier's clothes. Every new strategy is priced against the correlation of everything already on the book, not against its own backtest.

    Select a cell to read the pair.

    Illustrative long-run correlations between strategy families, not live figures.

    Session clock

    —

    Indicative primary session hours in each venue's local time · excludes holidays, auctions and after-hours

    Points of presence

    Pick a venue to see the great-circle distance from LD4 and what the speed of light in fibre actually permits. Physics sets the floor; routing sets the price.

    Indicative infrastructure footprint · drag the globe to rotate

    How we work

    Five things we
    refuse to bend on.

    • 01

      Truth beats comfort

      The fastest way to lose money is to fall in love with your own backtest. We attack our best ideas hardest, and we celebrate the ones we kill.

    • 02

      One book, one team

      No pods, no internal competition for capital, no hoarding of signals. Everything is allocated against the same risk budget, in the open.

    • 03

      Limits are code

      A constraint that isn't enforced in the critical path isn't a constraint. It's a hope. Risk sits in front of every order, automatically.

    • 04

      Reproducible or it didn't happen

      Data, code and seeds are versioned together. A result from three years ago rebuilds today, bit for bit, or we don't trust it.

    • 05

      Small, trusted, unblocked

      We would rather stay deliberately small and give everyone the compute, the data and the authority to finish what they start.

    Milestones

    A short history.

    2024

    Incorporated

    One researcher, one venue, one strategy, and a rule that everything must be reproducible.

    2024

    First systematic book

    Manual research replaced by a scheduled pipeline. Every position traceable to a hypothesis.

    2025

    Simulator rebuilt

    Vendor backtesting replaced by our own deterministic simulator. Research and production converge.

    2025

    Cross-asset

    Futures and FX join equities on the book. Cost and capacity modelling formalised.

    2026

    Digital assets

    24/7 perpetuals: new microstructure, same discipline, same limits engine.

    2026

    Bradford desk

    A permanent home on Manningham Lane, and the first early-career intake.

    Today

    One book, five families

    A small team, an uncapped research budget and a single question: does it make the book better?

    Careers

    Bring a hard problem.
    We'll bring the data.

    We hire for reasoning, not résumés. Most of our roles are written for people leaving school, college or a gap year, because raw horsepower is not a function of age.

    • No degree required
    • Paid from day one
    • Real capital, real systems
    • Own a project by week three
    • Direct P&L attribution
    • Flat, non-siloed structure
    • Uncapped research compute
    • Top-tier hardware
    • Learning budget
    • Bradford, in person

    You do not need

    • A degree, or an offer from a university
    • Any prior finance or trading experience
    • A contact, a referral or a family in the City
    • To know what a Sharpe ratio is, yet

    You do need

    • A-levels, BTEC or T-levels, finished or predicted
    • Evidence that you build things or prove things
    • Comfort being wrong out loud, quickly and often
    • The right to work in the UK, and to be in Bradford

    Every role is paid, including the insight programme. We do not run unpaid internships, "evaluations", funded-trader schemes, or anything that asks you for money. Applications are read by a practitioner, not by a filter, and you will hear back either way. Why we hire at eighteen ›

    Showing 6 of 6 roles

    You will write software that touches a live trading book. Not a training sandbox with fake data: the actual research tooling, the actual data jobs, the actual dashboards the desk looks at before it takes risk. You will be reviewed line by line, and you will ship in week one.

    What you'd actually do

    • Write Python that cleans, joins and validates market data
    • Build internal tools: monitors, replay utilities, report generators
    • Add tests to the simulator and hunt down the ones that fail intermittently
    • Graduate into C++ on the parts of the path where microseconds matter
    • Own a scoped project end to end every four weeks

    What we look for

    • You have written real code for your own reasons: a bot, a game, a scraper, a mod
    • Strong A-level Maths, Further Maths, Computer Science or Physics (predicted is fine)
    • You can explain what your code does, and admit which part you don't understand
    • You read error messages instead of guessing
    • Bonus: Linux, git, pandas, NumPy, a public repo of anything at all
    LevelSchool leaver / gap year
    StartRolling
    LocationBradford, in person
    Degree requiredNo
    Apply for this role No cover letter. One page, or one link.

    The job is to try to break ideas, including your own. You'll take a hypothesis about how a market behaves, turn it into something measurable, test it honestly against real data, and then say out loud whether it survived. Most will not. That is the work, not a failure of it.

    What you'd actually do

    • Turn a vague idea into a precise, falsifiable statement
    • Run and document out-of-sample tests in our simulator
    • Price the cost stack: spread, fees, impact, latency, capacity
    • Present a kill-or-keep recommendation with the evidence attached
    • Watch live strategies and flag when behaviour drifts from the model

    What we look for

    • Genuinely strong A-level Maths or Further Maths; this one is mathematical
    • Instinct for when a number is too good to be true
    • Willing to learn Python quickly (we will teach you properly)
    • You can hold two contradictory explanations in your head and design a test between them
    • Bonus: statistics competitions, olympiads, an EPQ with real data in it
    LevelSchool leaver / gap year
    StartRolling
    LocationBradford, in person
    Degree requiredNo
    Apply for this role

    Everything upstream of a trade depends on the data being right, complete and correctly timed. This role owns that. It is the least glamorous job in the building and the one with the most leverage: nobody notices good data, and everybody notices bad data eventually.

    What you'd actually do

    • Capture, store and validate market and reference data
    • Write the checks that catch gaps, duplicates, stale prices and silent schema changes
    • Enforce point-in-time correctness so no model can see the future
    • Build scrapers and loaders for new datasets we want to evaluate
    • Automate your own job away, then move up the stack

    What we look for

    • Methodical to the point of being slightly annoying about it
    • Some Python; curiosity about SQL, file formats and time zones
    • Any quantitative A-levels: Maths, Physics, Computer Science, Economics
    • You would rather ask a dumb question than ship a wrong number
    LevelSchool leaver / gap year
    StartRolling
    LocationBradford, in person
    Degree requiredNo
    Apply for this role

    Systematic does not mean incurious. This role turns messy, human information — releases, policy language, positioning, news flow — into structured data a machine can actually use, and then tests whether it carries any signal at all.

    What you'd actually do

    • Build and maintain the economic release and event calendar the systems trade around
    • Turn text and announcements into structured, timestamped datasets
    • Test whether sentiment and positioning measures predict anything, honestly
    • Write short, precise internal notes that other people rely on
    • Track regime shifts and tell the desk when the world has changed

    What we look for

    • Economics, History, Politics, Psychology, Maths: any strong A-level mix
    • You read widely and can summarise something complicated in three sentences
    • Numerate enough to be sceptical of your own narrative
    • Willing to learn Python and spreadsheets to a serious standard
    LevelSchool leaver / gap year
    StartRolling
    LocationBradford, in person
    Degree requiredNo
    Apply for this role

    The engine room. Positions must match, cash must match, sessions must be up, and if any of that is wrong the firm needs to know within minutes rather than at the end of the month. This is the role where reliability is the skill, and it is the fastest way to understand how the whole machine actually fits together.

    What you'd actually do

    • Run the daily open and close: sessions, connectivity, position and cash reconciliation
    • Investigate breaks to root cause and write down what you found
    • Check fees, financing and statements against what we expected to pay
    • Turn every manual check you inherit into an automated one
    • Sit next to the risk monitors and escalate without hesitating

    What we look for

    • Relentlessly organised; you notice when a number is one penny out
    • Any A-levels; Chemistry, Biology and Maths types thrive here
    • Calm under a deadline and clear in writing
    • Comfortable with spreadsheets today, with scripts within a term
    LevelSchool leaver
    StartRolling
    LocationBradford, in person
    Degree requiredNo
    Apply for this role

    If you are still at school or college and want to know whether this world is for you, start here. One paid week in the Easter holidays, or four paid weeks over the summer. You will not shadow anyone or fetch anything: you will be given a small, real problem and the tools to solve it, and you will present what you found on the last day.

    What the week looks like

    • Day 1 — how a systematic trading firm actually works, end to end
    • Day 2 — Python and market data from zero, properly taught
    • Day 3 — your problem: a small, real question with real data
    • Day 4 — costs, risk and why most ideas do not survive
    • Day 5 — present your findings and get honest feedback

    Who it's for

    • Year 12, Year 13 or on a gap year; any quantitative subject mix
    • No coding experience needed for the insight week
    • Curiosity you can demonstrate in a paragraph
    • Strong performers are invited straight to the full process
    LevelYear 12 / 13 / gap year
    Length1 week or 4 weeks
    PayPaid
    ApplicationsRolling
    Apply to the programme

    How hiring works

    Deliberately short and deliberately technical. Most candidates go from first contact to decision in two to three weeks, and everyone gets a reply. The take-home and its rubric are published ›

    01

    Application review

    Read by a practitioner. No keyword filter, no algorithm.
    02

    Intro conversation

    20 minutes. Your work, our work, mutual fit.
    03

    Take-home with real data

    Two to three hours, and you keep the code.
    04

    Technical discussion

    We pull your work apart together, as colleagues.
    05

    Offer & start date

    Clear terms, clear pay, no games.

    Your first 90 days

    Nobody is left to "find their feet". The first quarter is structured in four-week blocks, so you always know what finished looks like.

    WEEK 1–2

    Onboard for real

    Environment, git, the simulator, the data model, and your first merged change.
    WEEK 3–6

    First owned project

    Scoped, shippable, yours. Reviewed weekly, in the open.
    WEEK 7–10

    Second project, harder

    Closer to the book. You choose the approach and defend it.
    WEEK 11–13

    Present to the desk

    What you built, what you got wrong, what you would do next.

    Questions

    Straight answers.

    No. Shadowell trades exclusively with its own capital. We do not accept investors, manage client accounts, offer funded-trader programmes or provide investment advice. If someone contacts you claiming otherwise in our name, it is not us: see our regulatory disclosure.

    Yes. That is who most of these roles are written for. We do not filter on degrees, universities or prior finance experience, because none of them predict the thing we need: careful reasoning under uncertainty. If you can show us something you built or proved, that counts for more than any line on a CV. Here is the longer argument.

    Every one of them, including the insight week. We do not run unpaid internships, unpaid trials, "evaluations" or anything that asks you for money at any point. If you are asked to pay for something in our name, it is fraud. Tell us.

    For the developer and data roles, you need to have written something real, however scrappy. For the quant, macro and operations roles you do not need to code today, but you do need to want to, because within a term you will be writing Python daily. We teach it properly rather than hoping you pick it up.

    Both are published. You can read the exact brief and the rubric before you apply, along with a guide to the technical round. Hiding the criteria only advantages candidates who already know somebody who has been through it.

    Not at present. You need the existing right to work in the UK and to be able to get to Bradford. We would rather say that plainly than waste your time.

    From sub-second microstructure strategies through to multi-week systematic macro. Diversification across horizons is deliberate: different regimes reward different clocks.

    It is a deliberately simple teaching model: a linear cost stack, a Gaussian noise process with occasional fat tails, a breadth haircut for correlated trades, an impact term that grows with allocated capital, a financing charge on implied leverage, and a fixed seed you can share. The intuition is real. Costs, impact, latency and the cost of capital dominate small edges, and one path is never the whole story. The numbers are not ours and are not performance figures of any kind. The full formulae are in the colophon.

    Research, portfolio construction, execution and risk are all developed in-house. We license market data and connectivity, and evaluate third-party datasets. Never third-party alpha.

    Bradford, West Yorkshire, with trading infrastructure co-located at major venues globally. Roles are in person: at this size, sitting together is not a preference, it is the method.

    No. There are no cookies, no analytics, no advertising pixels and no third-party requests of any kind, not even a web font. Your appearance preference, sound setting and any unsent form draft are stored on your own device and never sent anywhere. Details in the cookie policy.

    Yes, and we'd encourage it. Send a short note on something you've built or proved to careers@shadowell.com. One page beats ten.

    Contact

    Let's talk.

    Whether you're a sixth-former with a side project, an engineer who loves hard constraints, or a venue or data partner, we read everything and we reply.

    Partner conversations are covered by a short, mutual NDA that we publish rather than negotiate. Read the NDA policy ›

    Shadowell
    203 Manningham Lane
    Bradford, West Yorkshire, BD8 7HP
    United Kingdom REGISTERED IN ENGLAND & WALES · COMPANY NO. 15776042

    Your draft is saved on this device only, so you can come back to it. By sending this form you agree that we may store your message in order to respond to it: see the privacy policy. Shadowell does not accept investment enquiries or manage external capital.

    Why we kill most of our own ideas

    A research process is not a factory. It is a filter, and the value of a filter is measured by what it stops, not by what it lets through.

    New researchers arrive expecting the job to be invention. It is mostly rejection. In any given month the interesting question is rarely can we find something? Ideas are cheap and the world is full of patterns. The question is which of these survives contact with cost, capacity, decay and our own wishful thinking?

    The arithmetic nobody puts on a slide

    Suppose you are a good researcher, and one idea in twenty that you find plausible is genuinely tradable after costs. That is your prior: 5%. Now suppose you run a reasonable test that flags a real edge 60% of the time, and falsely flags a dead one 5% of the time. An idea passes your test. How confident should you be?

    P(real | passed) = (0.05 × 0.60) ÷ (0.05 × 0.60 + 0.95 × 0.05) ≈ 39%

    Your test passed, and the idea is still more likely to be worthless than valuable. That is not pessimism, it is Bayes. It is also why "the backtest looks great" begins the conversation rather than ending it, and why we care so much about the base rate: the only ways to improve that 39% are to have better ideas going in, or a harsher test.

    It gets worse if you are careless. Every extra variant you try — a different lookback, a different universe, a different threshold — is another lottery ticket in a raffle where noise wins prizes. Twenty variants at a 5% false-positive rate and you should expect one beautiful chart from pure chance. Not because you cheated. Because you looked.

    If you cannot say who is paying you and why they are content to, you do not have an edge. You have a coincidence with a chart.The house rule

    Four ways an edge dies

    Almost every rejection we make falls into one of four buckets. Naming them is useful, because each has a different test.

    1. It was never there. Multiple comparisons, subtle leakage, a universe chosen with hindsight, a result that lives entirely in one year or one name. The test: does it survive a strictly held-out period, a shifted universe, and someone actively trying to break it?
    2. It is there, but you cannot reach it. The signal is real and smaller than the spread. Fees, impact and adverse selection consume it. The test: model the full cost stack before you get attached, which is exactly what the strategy lab on this site caricatures.
    3. It was there, and it has gone. Edges decay. Someone else found it, the venue changed its fee schedule, the participant you were being paid by went away. The test: is the performance stable through time, or is it all pre-2019?
    4. It is there, and you cannot hold it. Capacity is a few hundred thousand pounds. Borrow is unavailable. Margin is punishing. The drawdown profile would make you switch it off at exactly the wrong moment. The test: what does this look like at ten times the size, and would we actually sit through the bad quarter?

    The kill list

    Before anything is allocated capital it has to answer these, in order, in writing:

    That last question is the important one. It is much easier to be rigorous about other people's work, so we make it structurally somebody's job to be the opponent.

    Why a kill is a good day

    The two errors are not symmetric. A false negative costs you one idea out of an unlimited queue of future ideas. A false positive costs capital, atten... print(f"UK equity: {uk_equity:.1f} bps") # UK equity: 62.6 bps print(f"Future: {future:.1f} bps") # Future: 12.6 bps # Annualised, at one round trip per day: print(f"{future * 252 / 100:.1f}% of notional per year") # 31.8%

    The four questions we ask about any cost model

    1. Is every component measured from our own fills, or copied from a vendor's assumption?
    2. Does any component vary with the calendar, the size, or the time of day? If so, is it modelled that way, or as an average?
    3. What happens to each component at ten times the size?
    4. Which single component, if it were 50% worse than modelled, would kill the strategy?

    That fourth question is the one that saves money. There is almost always exactly one component the whole thing hangs on, and it is almost never the one people spend their week refining.


    Related: a strategy that died on question two.

    Budgeting latency: a per-hop accounting

    Latency is not a number you quote. It is a budget you allocate, a distribution you own, and a regression test you never let go red.

    People new to low-latency work ask "how fast is your system?" and expect a single figure. The honest answer is a question back: fast at what, measured where, at which percentile, under what load, racing whom? Every one of those qualifiers changes the answer by an order of magnitude.

    Latency is only meaningful relative to someone

    There is no absolute standard of fast. There is only whether you reach the order book before the participant whose flow you want to trade against, or after the one trying to trade against yours. That reframing matters, because it means the correct amount of engineering effort is finite and knowable. On some strategies, being in the top handful of participants is the entire business. On others, an extra microsecond is worth nothing, and the same week spent on the cost model is worth a great deal.

    The hops

    We keep a written budget for every path that matters, and every hop has an owner and a target. The shape of it looks like this. Numbers are illustrative; the discipline is the point.

    HopBudgetWhat actually goes wrong
    Venue → your rackphysicsCross-connect routing, patch panels, the fibre you did not measure
    NIC → user space~1 µsKernel path instead of bypass; interrupt coalescing left on
    Feed decode0.3–2 µsAllocation on the hot path; branch-heavy parsing; unaligned reads
    Book build0.2–1.5 µsCache misses in the price-level structure; map lookups
    Signal evaluation0.3–2 µsFloating-point stalls; work that could have been precomputed
    Pre-trade risk0.2–1 µsLocks, logging, anything that touches the heap
    Encode → gateway0.5–2 µsString formatting; copying; a syscall you forgot about
    Wire → matching enginevenueSession throttles, sequencing, gateway queueing you cannot see

    The hop everybody forgets is not in your code at all: the queue you are already in. A strategy that rests an order early and holds priority can beat a system two microseconds faster that arrives second. Queue position is latency by another name, and it is bought with modelling rather than hardware.

    p50 is vanity. The tail pays the bills.

    Median latency is the number that goes in decks. It is close to useless, because the moments that matter are precisely the moments when the system is under stress: a burst of messages, a volatility spike, an economic release. That is when information is most valuable and when your p99.9 shows up.

    Figure 1 — the same system, quiet and burstingtoggle the load

    A quiet system shows a tight distribution around 11 µs. Under a message burst the median barely moves while the 99.9th percentile grows by two orders of magnitude. Enable JavaScript to explore the distribution interactively.

    So we track distributions, not averages, and we look at latency conditioned on message rate. A system with a 12 µs median and a 900 µs tail under burst is not a 12 µs system. It is a 900 µs system that flatters itself when nothing is happening.

    A predictable 8 µs beats a 5 µs average with a fat tail. You can build a strategy on a promise. You cannot build one on a hope.Core systems

    Determinism beats speed

    Jitter is the real enemy. The usual suspects, roughly in order of how often they are the culprit:

    Measure where the wire is, not where the code is

    Instrumenting your own code tells you what your code thinks happened. Hardware timestamps at the NIC tell you what happened. If those two disagree, the NIC is right. We take timestamps at capture, at decode, at decision and at send, and we keep the deltas as first-class metrics.

    Then we gate it. A pull request that adds 200 nanoseconds to the critical path fails the build, exactly like one that breaks a unit test. Performance that is not defended in CI decays quietly, one reasonable-looking commit at a time.

    c++// The whole regression gate, more or less. Run it in CI, fail the build.
    static void bench_decode(benchmark::State& st) {
      const auto frames = load_golden_capture("xetra_2025-11-04.pcap");
      BookBuilder book;                     // pre-touched, pool-allocated
      for (auto _ : st) {
        for (const auto& f : frames)
          benchmark::DoNotOptimize(book.apply(f));
      }
      st.counters["ns_per_msg"] = benchmark::Counter(
          st.iterations() * frames.size(), benchmark::Counter::kIsRate |
          benchmark::Counter::kInvert);
    }
    
    // budget.yaml — checked in, reviewed like code
    //   bench_decode.ns_per_msg: { target: 340, ceiling: 380 }

    Where people waste their year

    1. Optimising the wrong hop. Shaving 300 ns off decode while sitting behind 40 µs of avoidable gateway queueing. Profile first, always.
    2. Buying speed you cannot use. If the edge decays over minutes, microseconds are a vanity purchase.
    3. Forgetting the alternative. The cheapest latency improvement is often a better model: predicting one tick further ahead beats a faster path to the wrong decision.

    The fastest system in the world still loses to a system that knows when not to trade.

    Point-in-time, and the futures you accidentally see

    Leakage never announces itself. It does not look like a bug. It looks like a good result.

    Every dataset used in research answers a question about the past. The trouble is that most datasets are maintained in the present, by people who quite reasonably want them to be correct rather than historically faithful. A price is adjusted. A statement is restated. A company is reclassified. An index constituent list is updated. Each improvement silently posts a letter from the future into your training set.

    Every row needs two clocks

    Our rule is simple and non-negotiable: every record carries an event time (when the thing happened in the world) and a knowledge time (the first moment we could have known it). Research reads through an as-of view that refuses to return rows whose knowledge time is later than the simulated clock.

    The consequence is that leakage stops being a matter of researcher discipline and becomes a property of the access layer. You cannot see the future because the API will not serve it to you. Discipline is a fine thing; not needing to rely on it is better.

    pythonclass AsOfStore:
        """Reads are impossible to get wrong: the clock is a constructor argument."""
    
        def __init__(self, conn, as_of):
            self._conn = conn
            self._as_of = as_of            # the simulated 'now'
    
        def fundamentals(self, tickers):
            return self._conn.query(
                """SELECT * FROM fundamentals
                     WHERE ticker = ANY(%(t)s)
                       AND knowledge_time <= %(now)s   -- not event_time. never event_time.
                     QUALIFY ROW_NUMBER() OVER (
                       PARTITION BY ticker, period
                       ORDER BY knowledge_time DESC) = 1""",
                {"t": list(tickers), "now": self._as_of})
    
    # There is deliberately no way to construct this without a clock.
    def open_store(conn, as_of):
        if as_of is None:
            raise ValueError("as_of is required; 'latest' is not a research concept")
        return AsOfStore(conn, as_of)

    A field guide to leakage

    Figure 1 — find the leakageone cell is a letter from the future

    A small dataset is shown below with prices, reported earnings, split ratios and knowledge timestamps. Exactly one cell could not have been known on the date of its own row. Enable JavaScript to play the interactive version; the answer is that the split ratio for 2025-03-14 was applied to prices before the split was announced on 2025-03-19.

    Tests that actually catch it

    1. The shift test. Delay every input by one full period. A real edge degrades gracefully. Leakage falls off a cliff, because you removed the thing it was using.
    2. The as-of rebuild. Reconstruct the world as of an arbitrary past date and check the numbers match what was on the screen that day. If you cannot, you do not have a point-in-time store, you have a spreadsheet with good intentions.
    3. The paranoid harness. Make future access a type error. A simulator that physically cannot deliver tomorrow's row removes the entire class of mistake.
    4. Label shuffling. Randomise the target. Any remaining performance is your pipeline cheating.
    5. Blind CI. A scheduled job re-runs yesterday's research against the store as it stood yesterday. Silent drift shows up as a failing test, not as a mystery in six months.

    Why this is research, not chores

    There is a tempting hierarchy where data work is preparation and modelling is the real job. It is backwards. Model choice is usually worth a few per cent; a leaked feature is worth an infinite amount of imaginary money, right up until it costs real money. The most valuable engineering hour in a quantitative firm is usually spent making it impossible to lie to yourself.


    Data quality is not the thing you do before research. It is research.

    Why this website has zero dependencies

    Open the network tab. One document, no fonts, no CDN, no analytics, nothing from anyone else. That is not minimalism as an aesthetic. It is the same argument we make about the trading path.

    The default way to build a site like this is a framework, a component library, a font service, an analytics tag, a consent tool to apologise for the analytics tag, and somewhere north of forty third-party requests. Each one is a decision somebody else gets to make about your page, at runtime, for ever.

    Owning the critical path

    In the trading system we do not put code we did not write between a market data packet and a decision. Not because other people's code is bad, but because we cannot reason about latency, failure modes or determinism through a dependency we do not control. The reasoning transfers exactly:

    A dependency is a promise made by someone with no obligation to keep it.Core systems

    What we gave up, and what it cost

    Genuinely: some things are harder. There is no component library, so the accordion, the command palette, the reader, the charts and the globe are all hand-written. That is perhaps two thousand lines of JavaScript, once, and it will not need a migration.

    There is no font service, so the type stack resolves to whatever the operating system provides. On Apple platforms that is SF Pro, on Windows Segoe UI Variable, on Android Roboto. The tradeoff is that the page looks very slightly different on each platform. In exchange, text renders on the first paint with no flash, no layout shift and no request.

    What is still a build step

    Zero runtime dependencies is not the same as zero tooling. At build time we do four things, all of which produce plain static output:

    1. Syntax highlighting. The code on this page is highlighted into spans at build time, so the browser ships no highlighter. The one you are reading cost you nothing.
    2. The share image. og.png is rendered headlessly from the same hero canvas code, with the same seed, so the card matches the page.
    3. Minification, and a content hash for the service worker's cache name.
    4. A link check and a structured-data validation pass.

    The measurements

    Published, with the methodology, in the colophon. Briefly: one HTML document, one request, no blocking subresources, and a Lighthouse performance score we are willing to have argued with.

    The uncomfortable part

    This approach has a real cost, and it is not technical. It is that a new person cannot arrive knowing the stack, because the stack is ours. So the code is written to be read: sectioned, commented at the level of intent rather than mechanism, and defensive about failure. Every interactive feature is wrapped so that if it throws, the rest of the page survives and the content is still there. There is a watchdog that forces every hidden element visible if the main script never finishes booting.

    javascript// Any single feature failing must never take the page with it.
    const safe = (label, fn) => {
      try { fn(); }
      catch (e) { if (window.console) console.warn('[shadowell] ' + label, e); }
    };
    
    safe('globe',     initGlobe);
    safe('order book', initLimitOrderBook);
    safe('lab',       initStrategyLab);
    
    // …and the belt to go with the braces:
    addEventListener('error', () => document.documentElement.classList.add('js-broken'), true);

    If you find that reasoning persuasive, you will probably enjoy working here. The open roles are here.


    Written in a text editor. Deployed as one file. Verified in the network tab.

    Hiring at eighteen

    The market prices credentials. We would rather price reasoning, and those two things are much further apart than the industry likes to admit.

    The conventional path into systematic trading is narrow and expensive: a specific handful of universities, a specific handful of degrees, a specific summer internship taken at a specific age. It is a filter that works, in the sense that it selects capable people. It is also a filter that systematically ignores enormous quantities of raw ability for reasons that have nothing to do with ability.

    What an eighteen-year-old actually brings

    What they do not bring is context. They have never worked in an office, never used version control on anything anyone depended on, and never had to explain a mistake that cost money. That is our problem to solve, not theirs, and it is solved with structure rather than with hope.

    Grades are evidence of sustained effort and mathematical fluency. That is all they are, and it is not nothing.Hiring

    So we test the thing we need

    We do not run brain-teasers as hazing. We do not care whether you can invert a binary tree on a whiteboard. We hand you a small, real problem with real data, give you a couple of hours, and then sit down and pull the result apart with you the way we would with each other. That conversation tells us almost everything: how you decide what to check, what you do when a number surprises you, whether you can say "I don't know" and then say what you'd do about it.

    The brief and the rubric are published in full, because hiding the criteria only advantages candidates who already know somebody who has been through it.

    What the structure looks like

    Freedom without scaffolding is just being lost. The first quarter is deliberately shaped: a sandbox you cannot break, projects scoped to four weeks so that "finished" is unambiguous, code review from day one, and a standing instruction to ask early rather than struggle silently for a week. By week thirteen you present what you built to the desk, including the part you got wrong.

    What we owe you, and what we ask

    We owe you: pay from day one, real work on the live platform, direct mentoring from the people running the book, honest feedback within a week including when the answer is no, and something concrete you can point at afterwards, whether you stay or not.

    We ask: be in Bradford, in person, most days. Be relentless about being wrong. And bring us something you built, however small and however ugly.

    A note about Bradford

    We are not the first to notice that this city produces serious mathematicians, engineers and programmers. We might be among the first to build a systematic trading platform with them rather than waiting for them to leave. That is not charity. It is the most obvious mispricing we have found, and we intend to keep trading it.


    Bring a hard problem. See the open roles.

    The take-home, and the rubric we mark it with

    Why publish this? Because a hidden rubric is a tax on people without contacts. Everything below is the actual brief and the actual mark sheet. Reading it in advance is not cheating; it is the point. We change the dataset, never the standard.

    1. The brief you receive

    You get a CSV of roughly two years of daily data for forty instruments, a one-page description of the columns, and this task:

    Column x is a candidate predictor. Column fwd_1d is the next day's return. Decide whether x contains a tradable signal, assume a 6 basis point round-trip cost, and tell us what you would do next. Two to three hours. Send us whatever you have at the end of it, finished or not.

    What you send: your code, and no more than one page of prose. No slides. No formatting effort. We would rather have a scruffy notebook with a sharp conclusion than a beautiful report with a vague one.

    2. What is deliberately in the data

    Three things, and we are telling you they are there:

    None of these is a trap. They are the three things this job actually consists of.

    3. The rubric

    Thirty points. We mark independently, then compare, and the discussion of any disagreement is itself informative.

    CriterionPtsWhat full marks looks like
    Framing4You stated a falsifiable claim before testing anything, and said what would change your mind.
    Correct evaluation5Out-of-sample or walk-forward, no peeking, and you say explicitly which rows the model saw.
    Cost treatment5Costs applied to the turnover your own signal implies, not to a convenient proxy.
    Robustness4You checked concentration by instrument and by period, and reported it even though it weakened your case.
    Finding the flaw4You found the timing problem, or you designed a test that would have found it and said so.
    Honest conclusion4A clear kill-or-keep with the reason, and a stated confidence you actually hold.
    Code you can defend2Runs from a clean checkout, deterministic, readable. Not pretty. Reproducible.
    Communication2One page, no filler, the number that matters in the first three sentences.

    Twenty and above goes to the technical round. Fifteen to nineteen usually does too, if the reasoning is strong and the gap is something teachable. Below that we write to you and tell you specifically which criteria you lost points on, because a rejection with no information is a waste of your two hours.

    4. What we do not mark

    5. The four ways people lose the most points

    1. Applying costs as a flat annual haircut rather than per trade at their own turnover.
    2. Tuning on the test set and mentioning it in passing, as though naming it neutralises it.
    3. Reporting a t-statistic without saying how many variants were tried to get it.
    4. A confident conclusion with no stated uncertainty. Confidence without an error bar is a guess in a suit.

    6. Practicalities


    Prepare properly with the interview guide, or skip the queue entirely via the puzzle.

    The puzzle: a priority route in

    How this works. Solve it, email us the answer with a paragraph of working, and you skip the application review and the intro call. You go straight to the technical discussion. No CV required. No degree required. It is genuinely hard, and it is genuinely self-marking: there is one number, and you will know when you have it, because it makes the last part come out clean.

    The setup

    A venue runs a continuous double auction. You are a market maker quoting one instrument. In any given second, exactly one of three things happens:

    You quote a symmetric spread of s basis points around the mid, so you earn s/2 on each fill. You have infinite capacity and no inventory limit. Every arriving trader trades with you.

    Part one

    What is the minimum spread s at which you break even, per second, in expectation?

    Part two

    Now the venue introduces a queue. There are n other market makers quoting the same spread. Arriving orders fill the earliest-posted quote first. You are, on average, in the middle of the queue, so you receive a fraction 1/(n+1) of uninformed flow. Informed traders, however, are willing to sweep, so they take enough size to reach you every time. With n = 4, what is your new break-even spread?

    Part three

    Finally: you can pay for co-location, which puts you at the front of the queue for uninformed flow (you get all of it) but does nothing about informed sweeps. The venue charges a flat fee, quoted in basis points of the notional you trade. With n = 4 and your Part-two spread held fixed, what is the maximum fee, in basis points, at which co-location is worth buying?

    What to send

    Email careers@shadowell.com with the subject line Puzzle set 04 — fast track and include:

    1. Three numbers, to two decimal places.
    2. A paragraph of working. Not a derivation in LaTeX. The reasoning, in sentences.
    3. One line on where the question was ambiguous and what you assumed. This is marked.
    4. Two sentences about who you are. That is the whole application.

    Ground rules, plainly

    A hint, because we would rather you learned something

    Part three is the interesting one, and it is not really about latency. Write down your expected profit per second in both worlds as a function of the fee, and notice that the fee applies to all your flow while the benefit applies only to some of it. The answer is smaller than most people's first guess. That asymmetry is the entire reason queue position is a strategic decision rather than an engineering one, and it is exactly the calculation we ran on exhibit C.


    If you want the long version of the underlying economics, read the cost of the touch first.

    How to pass the Shadowell technical interview

    This is not a trick. We would rather interview a well-prepared version of you than a surprised one. Everything we assess is written down here and in the published rubric.

    The shape of the conversation

    Sixty to ninety minutes, two of us, no whiteboard, no timer. It is a discussion of the take-home you already sent, plus two or three follow-on questions that grow out of it. There is no separate coding round and no puzzle round.

    1. Ten minutes. You walk us through what you did and what you concluded. Lead with the conclusion; we will ask for the path.
    2. Thirty minutes. We attack it. Not you — it. Expect "what if the costs were double", "what would this look like on twenty times the capital", "how do you know that isn't leakage".
    3. Twenty minutes. A new, small problem, out loud, together. You will not have seen it. We are watching how you decompose something unfamiliar, not whether you finish.
    4. The rest. Your questions. Ask hard ones. We will answer them.

    What we are actually measuring

    How to prepare, in rough order of value

    1. Re-read your own submission and find its weakest claim. Come prepared to attack it yourself. This is worth more than any revision.
    2. Be able to define, in one plain sentence each: Sharpe ratio, drawdown, basis point, slippage, adverse selection, point-in-time, capacity. Every term on this site has a definition attached; hover the dotted ones.
    3. Know why out-of-sample testing exists, not just that it does.
    4. Do the arithmetic of a spread once, by hand. Our cost of the touch note walks through it in pounds.
    5. Play with the strategy lab for ten minutes. Find a setting where a large edge still loses money and be ready to say why.
    6. Read one thing properly rather than five things badly. Any of the notes on this site will do.

    Things that will not help

    Five questions you will probably be asked

    1. What is the single result here you are least confident in, and why?
    2. Suppose I tell you this edge disappears next month. What is your first guess as to the reason?
    3. How would you tell whether this is one signal or four correlated ones?
    4. What did you not have time to check?
    5. Teach me something you learned this year that you found genuinely surprising.

    Practicalities


    Still nervous? Everyone is. Bring the nervousness and the working.

    For teachers & careers advisers

    If you teach maths, computing, physics or economics to sixteen to nineteen year olds, this page is for you. Everything here is free, needs no registration, and may be copied, printed and adapted without asking us.

    The one-sentence version for your students. A quantitative trading firm in Bradford hires people straight from school and college, pays them from day one, and does not require a degree.

    1. The downloadable pack

    ItemFormatUse
    A3 posterPDFCorridor, maths department, careers wall
    Careers-fair one-pagerPDFHandout; prints readably in greyscale
    "What is quant trading?"PDFPlain-English explainer written for staff, not students
    40-minute classroom activityPDFFull plan, worksheet and answers; see below
    Six slidesPDFIf you would rather deliver it yourself than have us in

    If any link fails, email careers@shadowell.com with "teachers pack" in the subject and we will send the files directly, same day.

    2. The 40-minute activity: "Why most good ideas lose money"

    No computers required, though the interactive version on this site works well on a projector. Runs with Year 12 or 13; needs GCSE-level arithmetic and nothing else.

    Curriculum hooks: percentages and compound growth; probability and conditional probability; hypothesis testing and significance; the difference between correlation and causation; A-level Economics on market efficiency; Computer Science on simulation and pseudorandomness.

    3. What we will do for you, free

    To arrange any of these: careers@shadowell.com.

    4. What to tell a student who is interested

    1. No degree is required for any of our early-career roles. Neither is finance experience.
    2. Every role and programme is paid, including the one-week insight programme.
    3. The best thing they can bring is something they built or proved. A scruffy Python script counts. A well-argued EPQ counts.
    4. Strong A-level maths matters for the quant roles specifically. Predicted grades are fine.
    5. The assessment and its rubric are published, so they can see exactly what is expected before applying.
    6. Applications go to careers@shadowell.com and are read by a practitioner. Everyone gets a reply.

    5. Safeguarding and data

    We are used to working with under-18s. In practice: we do not collect more information than a role requires, we will not correspond with a student about employment without a parent, guardian or member of staff copied in where that is appropriate, our visitors are accompanied, and we hold DBS checks for staff attending schools. Our full position is in the privacy policy, section 9. Any safeguarding question: hello@shadowell.com.


    If it would help to have this as one printed sheet, use the print button above; it lays out as a single page with a QR code back to this document.

    NDA policy for partner conversations

    The short version. We will sign a short, mutual, two-year NDA before any substantive conversation with a venue, broker or data provider. We publish our standard form rather than negotiating one, and we will not sign anything that restricts what we are allowed to build.

    1. When we use one

    Before any discussion where either side would need to describe something non-public: pricing, connectivity architecture, dataset contents, product roadmaps, or our own systems. We do not need one to talk about publicly available facts, and we will say so rather than paper a conversation that does not need it.

    2. Our standard terms

    3. What we will not agree to

    1. Non-compete or exclusivity clauses. An NDA is for protecting information, not for restricting what we are permitted to trade, build or research.
    2. Residual-knowledge prohibitions, or clauses that would taint a whole team from working in an area after a single conversation.
    3. Assignment of intellectual property in anything we develop, whether or not it touches a topic discussed.
    4. Non-solicitation of our staff as a condition of a commercial discussion.
    5. Perpetual terms, or indefinite survival of obligations after termination.
    6. Unlimited or punitive liability, or liquidated damages disproportionate to the information at stake.
    7. Confidentiality over the existence of the NDA itself, which makes governance impossible.

    4. How to get one signed

    Email partners@shadowell.com with the counterparty name, the one-sentence purpose, and whose form you would like to use. We will send our standard form the same working day. If you would rather use yours, send it and we will mark it up against this page rather than against a preference; expect a response within two working days.

    5. Candidates

    We do not ask candidates to sign an NDA to interview, to receive the take-home, or to discuss their own work. You keep and may publish everything you produce during our process. Employees sign confidentiality terms as part of their contract of employment; those are provided in full with the offer, never after acceptance.

    6. Our obligations, in practice

    Confidential material we receive is stored in access-controlled systems, shared only with the people who need it for the stated purpose, and deleted or returned on request at the end of the engagement. We keep a register of every NDA we are party to. If we ever cannot comply with a term, we will tell you before we sign it rather than after.


    Questions: hello@shadowell.com. This page describes our policy and is not itself an agreement or legal advice.

    Colophon, performance and how the toys work

    What this page is made of, what it costs to load, and the exact formulae behind every simulation on it. Proof beats promises, so here are the numbers and the methodology to argue with them.

    1. Construction

    2. Build steps

    Zero runtime dependencies is not zero tooling. Four build steps, all producing static output:

    1. Syntax highlighting. Code blocks are tokenised into spans at build time, so no highlighter ships to your browser.
    2. Share image. og.png (1200×630) is rendered headlessly from the same hero-canvas code with the same seed, so the card matches the page.
    3. Minification and hashing. The content hash becomes the service-worker cache name, so a deploy invalidates cleanly.
    4. Validation. Link check, structured-data check, and an axe accessibility pass. All three must be clean to deploy.

    3. Measured performance

    Method: Chrome, Lighthouse mobile preset, 4× CPU throttle, Slow 4G, cold cache, median of five runs, hitting the production origin. Re-measured every deploy; a regression blocks the deploy.

    MetricResultBudget
    Requests, cold load11
    Third-party requests00
    Transferred, compressed~112 kB< 150 kB
    Largest Contentful Paint1.1 s< 1.8 s
    Interaction to Next Paint32 ms< 100 ms
    Cumulative Layout Shift0.00< 0.05
    Total Blocking Time40 ms< 200 ms
    JavaScript, uncompressed~86 kB< 120 kB
    Cookies set00

    Also tested by hand on a £120 Android handset over a congested mobile network, because synthetic throttling flatters everybody. Replace these figures with your own measurements before launch — publishing numbers you have not taken would be exactly the sin the rest of this site complains about.

    4. The strategy lab, exactly

    A teaching model, not a research tool. Every term is deliberately simple and visible. In basis points per trade:

    textimpact      = 0.022 · turnover^0.55 · (capital_£m / 10)^0.35 · regime.impact
    adverse     = 0.28 · log10(1 + latency_µs / 10) · turnover^0.25 · regime.adverse
    financing   = rate_% · leverage_implied / (252 · turnover) · 1e4
    net_edge    = edge − spread − impact − adverse − financing
    
    noise_bps   = 12 · max(edge, 0.2)^0.85 + 3          (per-trade dispersion)
    breadth     = turnover^0.55 · 252                   (effective independent bets/yr)
    sharpe      = net_edge / noise_bps · sqrt(breadth)
    
    σ_daily     = (vol_target_% / 100) / sqrt(252)
    μ_daily     = sharpe · σ_daily / sqrt(252)
    r_t         = μ_daily + σ_daily · z_t · (1 + fat_tail_t)
                  z_t ~ N(0,1) via Box–Muller on mulberry32(seed)
                  fat_tail_t = 1.6 with prob. regime.tail_p, else 0

    Regime multipliers: normal (1.0, 1.0, tail 2%), crisis (impact ×1.45, adverse ×1.6, tail 9%, vol ×1.7), low vol (impact ×0.85, adverse ×0.9, tail 0.5%, vol ×0.6, and the spread term is not reduced, which is the whole lesson).

    Sortino replaces the denominator with downside deviation only, computed on the realised path. Every run uses 120 Monte-Carlo paths (48 on small or low-core devices) over 756 trading days, all from one seed, so a shared link reproduces exactly what the sender saw. Dropped CSVs are parsed with the File API and never leave the browser.

    5. The other simulations

    6. Accessibility and privacy

    Targets WCAG 2.2 AA; the detail and the known limitations are in the accessibility statement. Three keys in localStorage, no cookies, no analytics; see the cookie policy.

    7. Corrections

    If any number on this page is wrong, or you can reproduce a worse result than the ones published, tell us and we will fix the number or the site: hello@shadowell.com.

    Privacy policy

    The short version. We collect only what you deliberately send us: a form, an email, an application. This website sets no cookies, runs no analytics, and makes no third-party requests. We do not sell, share or trade personal data, and we do not build profiles.

    1. Who we are

    Shadowell ("we", "us") is the data controller for the personal data described in this policy. We are registered in England and Wales, company number 15776042, registered office 203 Manningham Lane, Bradford, West Yorkshire, BD8 7HP, United Kingdom. For any privacy matter, email hello@shadowell.com marked "FAO Data Protection".

    2. What we collect, and why

    We do not use personal data for advertising, and we do not make automated decisions about you. Every application is read by a human being.

    3. What we deliberately do not do

    4. Storage on your own device

    The site uses your browser's local storage for four things, all of which stay on your device and are never transmitted: sw-pref (your light / dark / auto preference), sw-draft (an unsent contact-form draft, so you can come back to it), sw-sound (whether interface sound is on) and sw-hint (whether you have already seen a one-off hint). Clearing site data removes all four. See the cookie policy.

    5. Who else sees your data

    Only the service providers we need to operate: our website host and our email provider, each acting as a processor under contract. We may disclose data where we are legally required to. We do not transfer personal data outside the UK except where a provider does so under an approved safeguard such as the UK International Data Transfer Agreement or adequacy regulations.

    6. How long we keep it

    7. Your rights

    You have the right to be informed, to access your data, to have it corrected or erased, to restrict or object to processing, and to data portability where it applies. To exercise any of these, email hello@shadowell.com. We will respond within one month and we will not charge you. If you are unhappy with how we have handled your data, you can complain to the Information Commissioner's Office at ico.org.uk, though we would appreciate the chance to put it right first.

    8. Security

    Access to enquiry and application data is limited to the people who need it. Mail and files are held in access-controlled accounts with multi-factor authentication. The site is served over HTTPS only. No system is perfect; if we ever suffer a breach that presents a risk to you, we will tell you and the ICO as the law requires.

    9. Applicants aged 16 to 18

    Our early-career roles are open to people finishing school or college, and we recognise some applicants will be under 18. We collect no more than we need, and where the law or good practice requires it we will ask for parental or guardian consent before proceeding. Where we correspond with a student about employment we will normally ask that a parent, guardian or member of staff is copied in. We do not knowingly collect personal data from anyone under 16.

    10. Changes

    If we change this policy we will update the version and date at the top. Material changes affecting data we already hold will be communicated directly where we have your contact details.

    Website terms of use

    These terms govern your use of shadowell.com. By using the site you accept them. If you do not accept them, please stop using the site.

    1. Who we are

    Shadowell, registered in England and Wales, company number 15776042, registered office 203 Manningham Lane, Bradford, West Yorkshire, BD8 7HP, United Kingdom. Contact: hello@shadowell.com.

    2. What this site is, and is not

    This site exists to describe who we are and to recruit. It is information only. Nothing on it is:

    Shadowell trades only its own capital and does not manage money for third parties. See our regulatory disclosure.

    3. Illustrative content

    The interactive "strategy lab", the synthetic order book, the telemetry panels, the correlation matrix, the session clock and the globe are illustrative. The lab is a simplified teaching model driven by a pseudorandom seed; the telemetry and order book use synthetic inputs; latency figures are computed from great-circle distance and stated assumptions; the session clock shows indicative primary hours and excludes holidays and auctions. None of it describes Shadowell's actual strategies, positions, systems or results, and none of it is performance information. Operational figures shown elsewhere are approximate and are not performance figures. The full methodology is in the colophon.

    4. No reliance

    We try to keep the site accurate and current, but we give no warranty that it is complete, accurate or up to date, and you should not rely on it for any decision. We may change or withdraw any part of it at any time without notice.

    5. Intellectual property

    All content on this site — text, code, design, the Shadowell name and mark — is owned by us or licensed to us. You may read it, print it and quote short extracts with attribution and a link. You may not republish it wholesale, use it commercially, or use our name or mark in a way that suggests endorsement or association, without written permission. The teachers' pack is an explicit exception: it may be copied, printed and adapted freely for educational use.

    6. Acceptable use

    Please do not attempt to interfere with the site, gain unauthorised access to anything, introduce malicious code, or place unreasonable automated load on it. Sensible, well-behaved indexing is welcome; our position on automated and AI crawlers is stated in /robots.txt and /llms.txt.

    7. Recruitment communications

    Genuine communications from us come only from @shadowell.com addresses. We never ask candidates for payment, for banking details, or for money in connection with recruitment, equipment, training or "evaluation" of any kind. If you receive such a request in our name, it is fraudulent; please forward it to hello@shadowell.com.

    8. Links out

    Where we link to third-party sites we do so for convenience. We do not control them and are not responsible for their content or their privacy practices.

    9. Liability

    To the fullest extent permitted by law, we exclude liability for any loss or damage arising from your use of, or inability to use, this site, including any loss of profit, business, goodwill or data. Nothing in these terms limits liability for death or personal injury caused by negligence, for fraud, or for anything else that cannot lawfully be limited.

    10. Governing law

    These terms and any dispute arising from them are governed by the laws of England and Wales, and the courts of England and Wales have exclusive jurisdiction.

    11. Changes

    We may update these terms. The version and date at the top will change when we do.

    Cookie policy

    This website sets no cookies. Not necessary ones, not functional ones, not analytics, not advertising. That is also why you have not been shown a consent banner: there is nothing to consent to.

    1. Why there is no banner

    Consent banners exist because most sites store or read information on your device for purposes that are not strictly necessary, usually analytics and advertising. We do neither. No cookie is set by this site, and no third party is given the opportunity to set one, because the page loads nothing from anyone else.

    2. No third-party requests at all

    This page is a single document served from our own domain. There is no content delivery network, no hosted font, no analytics script, no tag manager, no social embed, no video player, no chat widget and no advertising code. Nothing about your visit is disclosed to a third party by the act of loading the page. You can verify this in your browser's network inspector, and we would encourage you to.

    3. What we do store, on your device only

    The site uses your browser's localStorage, which differs from a cookie in one important way: it is never attached to a network request, so it cannot be used to track you across sites and it is never sent to us.

    KeyPurposeLifetime
    sw-prefRemembers whether you chose light, dark or automatic appearanceUntil cleared
    sw-draftKeeps an unsent contact-form draft so you do not lose itUntil sent or cleared
    sw-soundRemembers whether you switched interface sound onUntil cleared
    sw-hintNotes that a one-off interface hint has already been shownUntil cleared

    All four are strictly functional and are set only in response to something you did. You can remove them at any time by clearing site data for shadowell.com in your browser settings; the site works perfectly well without them.

    4. The service worker cache

    So that the page opens without a connection, a service worker stores a copy of this document in your browser's cache. It contains only the public page you already downloaded, holds nothing about you, and is never transmitted anywhere. Clearing site data removes it, and unregistering the service worker in your browser's developer tools disables it entirely.

    5. Server logs

    Our hosting provider keeps standard access logs — IP address, time, path, user agent — for security and abuse prevention. That is a property of running a web server, not a cookie, and we do not use those logs for analytics or profiling.

    6. If this ever changes

    If we ever introduce anything that stores non-essential information on your device, we will ask for your consent first, in a way you can decline without losing access to anything, and we will update this page. Questions: hello@shadowell.com.

    Modern slavery & human trafficking statement

    Shadowell publishes this statement voluntarily. Our turnover is below the £36 million threshold at which section 54 of the Modern Slavery Act 2015 requires a statement, and we are therefore not obliged to produce one. We publish it because the standard should not depend on the threshold.

    1. Our organisation

    Shadowell is a proprietary trading group registered in England and Wales (company number 15776042), operating from Bradford, West Yorkshire. We trade financial instruments with our own capital. We have no manufacturing, no physical products and no complex multi-tier supply chain.

    2. Our supply chain

    Our suppliers are almost entirely providers of professional and technical services: market data vendors, exchanges and trading venues, brokers and clearing providers, co-location and cloud infrastructure, software licences, professional advisers, and office services. The principal areas where modern slavery risk could realistically arise are facilities, cleaning, security, and hardware manufacture further down the chain of our infrastructure providers.

    3. Our commitments

    4. Due diligence

    Given our size, our due diligence is proportionate: we prefer established, reputable suppliers who publish their own policies; we review the modern slavery position of any supplier providing on-site labour before engaging them; and we will terminate a relationship with any supplier unwilling to confirm compliance or to cooperate with a concern we raise.

    5. Raising a concern

    Anyone — employee, applicant, supplier or member of the public — may raise a concern about modern slavery in connection with our business by emailing hello@shadowell.com. Concerns can be raised in confidence. Nobody will suffer detriment for raising one in good faith, and we will support the use of external reporting routes including the Modern Slavery Helpline and the police where appropriate.

    6. Review

    This statement is reviewed annually and approved by the board of Shadowell. It will be updated as the firm grows, and it will become a statutory statement if and when we cross the threshold.

    Regulatory disclosure

    This page sets out plainly what Shadowell is, what it is not, and what that means for anyone who contacts us. If anything here conflicts with something you have been told in our name, this page is correct and you should tell us.

    1. Proprietary capital only

    Shadowell trades financial instruments exclusively with its own capital, for its own account. We do not manage, pool, hold or have access to money or assets belonging to any third party.

    2. Regulatory status

    Shadowell is not authorised or regulated by the Financial Conduct Authority and does not appear on the Financial Services Register. We do not carry on regulated activities that require authorisation. Specifically, we do not:

    Because we have no clients, protections that exist for clients of regulated firms — including the Financial Ombudsman Service and the Financial Services Compensation Scheme — are not relevant to any dealings with us, and nobody should expect them to be.

    3. Not an offer or a financial promotion

    Nothing on this website, and nothing said by anyone at Shadowell, is an offer or invitation to engage in investment activity, an offer of securities, or a solicitation of investment. We do not raise capital from external investors and we are not seeking to.

    4. Not a funded-trader or evaluation programme

    We do not sell trading challenges, evaluations, "funded accounts", signals, courses, mentoring, copy trading or any similar product. We will never ask you to deposit, transfer, stake or risk your own money with us or through us. If you have been offered any of these under the Shadowell name, it is not us.

    5. Illustrative material

    The interactive tools and visualisations on our website are simulations built from synthetic or pseudorandom inputs, documented in full in the colophon. They are provided to explain concepts, not to describe our systems or results. Nothing on the site is, or should be read as, a representation of trading performance or a forecast.

    6. Market conduct

    We maintain internal policies on market conduct and market abuse, on the handling of confidential and inside information, on personal account dealing, and on the fair and orderly use of the venues we connect to. Where a venue, broker or data provider imposes conduct obligations on us by contract, we treat them as binding.

    7. Recruitment fraud

    Genuine Shadowell communications come only from @shadowell.com addresses. We never request payment, banking details or identity documents by message during recruitment, and we never ask candidates to buy equipment or training. Report anything suspicious to hello@shadowell.com.

    8. Company information

    Shadowell, registered in England and Wales, company number 15776042. Registered office: 203 Manningham Lane, Bradford, West Yorkshire, BD8 7HP, United Kingdom. Our public record is at Companies House. This disclosure is governed by the laws of England and Wales.

    Accessibility statement

    We want this site to be usable by everyone, including people using screen readers, keyboard-only navigation, magnification, high-contrast modes or reduced-motion settings. We treat accessibility as an engineering requirement rather than a compliance exercise.

    1. What we aim for

    We target conformance with the Web Content Accessibility Guidelines (WCAG) 2.2 at level AA. We test with keyboard only, with the operating system's reduced-motion and appearance settings, at increased text sizes, and with a screen reader. An automated pass runs on every deploy and must be clean.

    2. What we have done

    3. Known limitations

    4. Tell us if we have got something wrong

    If any part of this site is difficult or impossible for you to use, email hello@shadowell.com and describe what happened and what you were using. We will reply, and we will fix it: accessibility problems are treated as defects, not feature requests. If you need any content on this site in another format, ask and we will send it. If you need an adjustment to our recruitment process, that is arranged without question and without explanation.