Research
A continuous pipeline that turns raw market and alternative data into tested, capital-ready signals. Hypothesis, evidence, decision: repeated relentlessly.
Systematic · Quantitative · Proprietary
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.
The model
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?
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.
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.
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.
Three disciplines
They are not departments. They are the three forces every idea has to pass through.
A continuous pipeline that turns raw market and alternative data into tested, capital-ready signals. Hypothesis, evidence, decision: repeated relentlessly.
One in-house platform: ingestion, simulation, deployment and execution. The same code path that backtests a strategy is the one that trades it.
Limits are code, not culture. Exposure, drawdown, correlation and liquidity are enforced automatically: pre-trade, in-flight and at the book level.
The pipeline
Five stages, each one measured, versioned and reproducible, so that a result from three years ago can be rebuilt today, bit for bit.
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.
Ideas are expressed as forecasts and judged out of sample, net of realistic costs. Most die here. That's the point.
Forecasts become positions through an optimiser that balances expected return against risk, turnover and the correlation of everything already on.
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.
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.
—
Illustrative visualisation · synthetic telemetry keyed to the real London clock, not live production data
Strategy lab
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.
—
—
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
We buy connectivity and compute. Everything that touches a decision — simulation, portfolio, execution, risk — is ours.
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.
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.
Thousands of parallel scenarios per idea, with queue position, latency and impact modelled rather than assumed. Cheap experiments make expensive mistakes rare.
Independent limit engine with hard pre-trade checks and automated halts.
Co-located presence across major cash, derivative and digital-asset venues.
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
Diversified across asset classes and horizons, because a book that depends on one regime is not a book. It's a bet.
Simulated microstructure: clustered order arrivals, cancellations and executions. No real venue data.
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.
Indicative primary session hours in each venue's local time · excludes holidays, auctions and after-hours
Indicative infrastructure footprint · drag the globe to rotate
How we work
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.
No pods, no internal competition for capital, no hoarding of signals. Everything is allocated against the same risk budget, in the open.
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.
Data, code and seeds are versioned together. A result from three years ago rebuilds today, bit for bit, or we don't trust it.
We would rather stay deliberately small and give everyone the compute, the data and the authority to finish what they start.
Milestones
One researcher, one venue, one strategy, and a rule that everything must be reproducible.
Manual research replaced by a scheduled pipeline. Every position traceable to a hypothesis.
Vendor backtesting replaced by our own deterministic simulator. Research and production converge.
Futures and FX join equities on the book. Cost and capacity modelling formalised.
24/7 perpetuals: new microstructure, same discipline, same limits engine.
A permanent home on Manningham Lane, and the first early-career intake.
A small team, an uncapped research budget and a single question: does it make the book better?
Careers
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.
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
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
SHADOWELL · ROLE BRIEF · 203 MANNINGHAM LANE, BRADFORD BD8 7HP · CAREERS@SHADOWELL.COM
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.
No roles match that. Try clearing the filters, or apply speculatively.
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 ›
Application review
Read by a practitioner. No keyword filter, no algorithm.Intro conversation
20 minutes. Your work, our work, mutual fit.Take-home with real data
Two to three hours, and you keep the code.Technical discussion
We pull your work apart together, as colleagues.Offer & start date
Clear terms, clear pay, no games.Nobody is left to "find their feet". The first quarter is structured in four-week blocks, so you always know what finished looks like.
Onboard for real
Environment, git, the simulator, the data model, and your first merged change.First owned project
Scoped, shippable, yours. Reviewed weekly, in the open.Second project, harder
Closer to the book. You choose the approach and defend it.Present to the desk
What you built, what you got wrong, what you would do next.Notes
Occasional writing from the desk. No market calls, no predictions, nothing for sale. Just craft.
A research process is a filter, not a factory. Here is the arithmetic of that filter, the four ways an edge dies, and why a kill is a good day.
Anonymised, specific, and including the one that looked perfect until paper trading.
What crossing the spread actually costs, in pounds, on one trade. All the arithmetic.
Latency is not a number. It is a budget, a distribution and a discipline.
Leakage never looks like a bug. It looks like a good result. Find it yourself, in-page.
Supply-chain risk, latency and bloat: the same argument we make about the trading path.
The market prices credentials. We would rather price reasoning.
Questions
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
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
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?
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
Almost every rejection we make falls into one of four buckets. Naming them is useful, because each has a different test.
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.
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%
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.
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.
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.
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.
| Hop | Budget | What actually goes wrong |
|---|---|---|
| Venue → your rack | physics | Cross-connect routing, patch panels, the fibre you did not measure |
| NIC → user space | ~1 µs | Kernel path instead of bypass; interrupt coalescing left on |
| Feed decode | 0.3–2 µs | Allocation on the hot path; branch-heavy parsing; unaligned reads |
| Book build | 0.2–1.5 µs | Cache misses in the price-level structure; map lookups |
| Signal evaluation | 0.3–2 µs | Floating-point stalls; work that could have been precomputed |
| Pre-trade risk | 0.2–1 µs | Locks, logging, anything that touches the heap |
| Encode → gateway | 0.5–2 µs | String formatting; copying; a syscall you forgot about |
| Wire → matching engine | venue | Session 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.
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.
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
Jitter is the real enemy. The usual suspects, roughly in order of how often they are the culprit:
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 }
The fastest system in the world still loses to a system that knows when not to trade.
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.
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 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.
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.
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.
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
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.
Zero runtime dependencies is not the same as zero tooling. At build time we do four things, all of which produce plain static output:
og.png is rendered headlessly from the same hero canvas code, with the
same seed, so the card matches the page.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.
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.
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 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
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.
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.
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.
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.
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.
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
xis a candidate predictor. Columnfwd_1dis the next day's return. Decide whetherxcontains 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.
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.
Thirty points. We mark independently, then compare, and the discussion of any disagreement is itself informative.
| Criterion | Pts | What full marks looks like |
|---|---|---|
| Framing | 4 | You stated a falsifiable claim before testing anything, and said what would change your mind. |
| Correct evaluation | 5 | Out-of-sample or walk-forward, no peeking, and you say explicitly which rows the model saw. |
| Cost treatment | 5 | Costs applied to the turnover your own signal implies, not to a convenient proxy. |
| Robustness | 4 | You checked concentration by instrument and by period, and reported it even though it weakened your case. |
| Finding the flaw | 4 | You found the timing problem, or you designed a test that would have found it and said so. |
| Honest conclusion | 4 | A clear kill-or-keep with the reason, and a stated confidence you actually hold. |
| Code you can defend | 2 | Runs from a clean checkout, deterministic, readable. Not pretty. Reproducible. |
| Communication | 2 | One 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.
Prepare properly with the interview guide, or skip the queue entirely via the puzzle.
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.
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.
What is the minimum spread s at which you break even, per second, in expectation?
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?
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?
Email careers@shadowell.com
with the subject line Puzzle set 04 — fast track and include:
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.
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.
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.
Still nervous? Everyone is. Bring the nervousness and the working.
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.
| Item | Format | Use |
|---|---|---|
| A3 poster | Corridor, maths department, careers wall | |
| Careers-fair one-pager | Handout; prints readably in greyscale | |
| "What is quant trading?" | Plain-English explainer written for staff, not students | |
| 40-minute classroom activity | Full plan, worksheet and answers; see below | |
| Six slides | If 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.
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.
To arrange any of these: careers@shadowell.com.
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.
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.
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.
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.
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.
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.
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.
prefers-reduced-motion.Save-Data or on very low-memory devices.Zero runtime dependencies is not zero tooling. Four build steps, all producing static output:
og.png (1200×630) is rendered headlessly from the same
hero-canvas code with the same seed, so the card matches the page.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.
| Metric | Result | Budget |
|---|---|---|
| Requests, cold load | 1 | 1 |
| Third-party requests | 0 | 0 |
| Transferred, compressed | ~112 kB | < 150 kB |
| Largest Contentful Paint | 1.1 s | < 1.8 s |
| Interaction to Next Paint | 32 ms | < 100 ms |
| Cumulative Layout Shift | 0.00 | < 0.05 |
| Total Blocking Time | 40 ms | < 200 ms |
| JavaScript, uncompressed | ~86 kB | < 120 kB |
| Cookies set | 0 | 0 |
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.
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.
Intl.DateTimeFormat; session hours are hard-coded indicative primary hours and exclude
holidays and auctions.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.
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.
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.
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".
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
We may update these terms. The version and date at the top will change when we do.
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.
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.
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.
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.
| Key | Purpose | Lifetime |
|---|---|---|
sw-pref | Remembers whether you chose light, dark or automatic appearance | Until cleared |
sw-draft | Keeps an unsent contact-form draft so you do not lose it | Until sent or cleared |
sw-sound | Remembers whether you switched interface sound on | Until cleared |
sw-hint | Notes that a one-off interface hint has already been shown | Until 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
hidden="until-found",
so your browser's find-in-page will locate text inside a closed panel and open it for you.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.