The first mistake people make when they think about market making is to start with prediction.
They imagine that somewhere inside an HFT system there is a model which says the stock is going up, or the future is going down, and everything else follows from that. Sometimes there is a predictive model. But for a market maker, a more useful starting point is much more mundane: what is this thing worth right now?
That sounds like the same question. It isn’t.
A fair-value model is not necessarily trying to forecast where the market will be in ten seconds. It is trying to translate the information currently available in one or more markets into an estimate of the price at which we should be indifferent to buying or selling the instrument we are quoting.
This distinction becomes particularly important when the thing you are quoting is not the place where price discovery happens first.
The leader and the lagger
Suppose a product on QFEX is trading around $251, while a closely related instrument on a deeper market trades around $250. The naive approach is to copy $250. That is obviously wrong if the QFEX product persistently trades at a premium.
Instead, learn the relationship:
If QFEX trades at 251 while the leader trades at 250, the ratio is 1.004. If the leader then moves to 250.50 before QFEX reacts, our estimated fair value becomes:
The important point is that two quantities move at different speeds. The leader price can change immediately. The relationship between the two markets should usually change more slowly.
That is the essence of a basis model.
Why not just use the midpoint?
The midpoint is a surprisingly dangerous object to treat as truth.
On a deep market it can be a useful estimator. On a thin market it can be stale. It can move because one small order disappeared. And, if you are a meaningful fraction of the liquidity, it can contain your own orders. A strategy that uses its own quoted midpoint as its fair value can end up chasing itself.
The same problem exists with last trade. A trade is real, but it may be old or anomalous. A print from thirty seconds ago is not automatically more informative than a fresh price on a related venue.
The right model is therefore not the most complicated model. It is the simplest model whose inputs have an economic reason to contain information about the target.
Half-life is a useful way to think about memory
Once we observe the basis, we need to decide how quickly to forget it.
An exponential moving average is convenient because its parameter can be expressed as a half-life. If the half-life is 60 seconds, an observation’s influence halves every 60 seconds. For elapsed time Δt and half-life h:
The update is then:
This is preferable to blindly updating by a fixed amount every time a message arrives. If one exchange sends ten times as many messages as another, message-driven learning accidentally gives the busier feed ten times as much statistical weight. Store observations as they arrive, then learn from coherent snapshots or elapsed time.
Liquidity can affect confidence, but it is not truth
There is another useful refinement. Imagine the QFEX book suddenly becomes extremely thin. Its midpoint jumps, producing a large observed basis. Should that observation alter our estimate as much as one formed from a healthy book?
Probably not.
One approach is to reduce the effective EMA weight when nearby displayed volume is unusually low. This does not mean that more volume guarantees a correct price. Displayed liquidity can disappear and can itself be strategic. It is simply a bounded confidence input.
That distinction matters. Trading systems become fragile when heuristics quietly turn into assumptions about reality.
Futures basis is the same idea with different economics
The same framework works between spot and futures. Rather than learn a raw price difference, we can learn a basis in basis points:
If spot is 5,000 and the future is 5,010, the observed basis is 20 bps.
We can smooth that relationship and then translate in either direction:
The calculation is simple. The difficult part is ensuring the two observations actually describe the same moment. If the spot price is fresh and the futures price is 500 milliseconds old during a fast market, what looks like basis may simply be price movement.
Timestamp discipline is part of the model, not plumbing.
A model should sometimes refuse to give you a price
One of the worst interfaces for a trading model is a function that always returns a number.
What should it return before it has seen enough data? What if the leader feed has stopped? What if spot and futures timestamps are too far apart? Returning zero is obviously dangerous. Returning the last value without saying it is stale is only slightly less dangerous.
A better contract looks conceptually like this:
COLD — insufficient observations
WARMING — learning, but not ready
READY — fair value may be used downstream
STALE — required inputs are too old
INVALID — something is structurally wrong
The output is therefore not just a price. It is a price plus evidence about whether that price should be trusted.
This leads to a broader principle that shows up repeatedly in trading systems: failure semantics are part of the strategy.
Keep fair value pure
There is one final separation worth making.
Suppose we are long. We would like to sell more aggressively and buy less aggressively. It is tempting to alter fair value itself to reflect this inventory. Don’t.
Fair value answers an economic question: what do we think the instrument is worth?
Inventory answers a different question: given what we already own, at what prices are we willing to trade?
Those should be separate layers. The fair-value engine should not know whether we are long or short. It should consume normalized market information, learn a relationship, project the freshest useful anchor into the target’s units, and refuse to speak when its evidence is inadequate.
Only after that should a quoting system turn the estimate into a bid and an ask.
That is where the next article starts.


