|
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
|
Post-fill markouts: the metric that separates spread captured from adverse selection. More...
Go to the source code of this file.
Classes | |
| struct | fastmm::bt::MarkoutBucket |
| struct | fastmm::bt::MarkoutHorizon |
| Buckets of one horizon, all over the same measured fills. More... | |
Namespaces | |
| namespace | fastmm |
| namespace | fastmm::bt |
Variables | |
| constexpr std::int64_t | fastmm::bt::kDefaultMarkoutHorizonsNs [] |
| Horizons measured by default, in simulated time. | |
Post-fill markouts: the metric that separates spread captured from adverse selection.
For a fill of qty at price with signed quantity s (+qty bought, -qty sold) and the venue mid m(t) at the fill time t0 and at the horizon t0 + h:
spread capture = s * (m(t0) - price) what the passive quote earned against the mid markout(h) = s * (m(t0 + h) - price) what the fill was still worth h later adverse selection(h) = spread capture - markout(h) how much of it the mid took back
A passive quoter always has a positive spread capture: it quotes away from the mid by construction. Only the markout says whether the fills were worth taking. Amounts are in quote currency (raw 1e-8 fixed point) and, divided by the traded notional, in basis points.
A fill whose horizon falls after the last event of the run has no mid to mark against and is EXCLUDED, not marked at the last known mid: excluded_fills counts them, and the buckets of that horizon only cover the fills that were measured. Capture is recomputed on the same subset so capture and markout at a horizon are directly comparable.