FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
markout.hpp File Reference

Post-fill markouts: the metric that separates spread captured from adverse selection. More...

#include "fastmm/core/time.hpp"
#include <cstdint>
#include <string>
#include <vector>

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.
 

Detailed Description

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.