malkhut: Flight9 learnings — markout=quality, queue×flow, depth-for-size
Fable's Flight9/BLUE generalizable features incorporated: 1. Slippage model gains trade_flow_intensity parameter: - Estimated from book imbalance (proxy for trade arrivals) - More flow → better fills (lower slippage) - Fable: 'fill = queue position × trade-flow intensity' 2. Markout = quality concept documented: - Score fills by post-fill markout, not just fill/no-fill - Maker fills are adversely selected 3. Depth-for-size documented: - Spread lies; key on depth-within-K-bps vs order notional 4. Measured fees: - BingX maker=2.00bp, taker=5.016bp (over 1,455 fills) - BingX commission = NEGATIVE (debit) 5. OB study updated with Flight9 learnings
This commit is contained in:
@@ -392,3 +392,55 @@ The OB microstructure directly determines fill quality:
|
||||
The PerformanceMatrix tracks `avg_fill_value_score` per (regime, strategy, venue),
|
||||
enabling the system to learn: "In this regime, on this venue, this strategy
|
||||
achieves the best fill quality."
|
||||
|
||||
## 14. Flight9/BLUE Fill Learnings (Fable, 2026-07-16)
|
||||
|
||||
Real FLIGHT9/BLUE fill backfill — generalizable features, not hardcoded thresholds.
|
||||
|
||||
### Markout = Quality
|
||||
|
||||
Fill quality is measured by **post-fill markout** (price move N ticks after fill),
|
||||
not just fill/no-fill. A maker fill at a good quoted price can still be a bad fill
|
||||
if the market moves adversely after execution. The system scores fills by markout.
|
||||
|
||||
**Generalizable:** score fills by post-fill markout. Model fill-CONDITIONAL-on-adverse-flow.
|
||||
|
||||
### Fill = Queue × Flow Intensity
|
||||
|
||||
Fill probability is driven by **trade-arrival intensity** (the tape), not the static book.
|
||||
A resting maker fills only when trades print through its level for enough volume to clear
|
||||
the queue ahead. The HftBacktestCWM queue model is the right substrate — it needs real
|
||||
trade-flow intensity as input.
|
||||
|
||||
**On testnet:** maker fill-rate ~0% (no flow). This is an artifact, not a signal.
|
||||
|
||||
### Depth-for-Size, Not Spread
|
||||
|
||||
Spread alone LIES: an asset with 1.5bp spread behind ~$977 of depth is unfillable at any
|
||||
size. Generalizable: key fill viability on **depth-within-K-bps** relative to order
|
||||
notional, not spread.
|
||||
|
||||
### Measured Fees (Venue-Parameterized)
|
||||
|
||||
| Venue | Maker | Taker | Sign |
|
||||
|-------|-------|-------|------|
|
||||
| BingX | 2.00 bp | 5.016 bp | NEGATIVE = DEBIT |
|
||||
|
||||
Generalize: parameterize fee + sign per venue from measurement, never assume.
|
||||
|
||||
### Realized Friction (F9 VST Fills)
|
||||
|
||||
- Taker: ~20-27 bp adverse on thin/mid books
|
||||
- Maker: saves ~3-4 bp WHEN it fills
|
||||
- Maker fill-rate: ~0% on VST (no flow — testnet artifact)
|
||||
|
||||
### Counterfactual Maker Fill (Real Binance Book)
|
||||
|
||||
- ~50% fill on liquid books (at-touch upper bound)
|
||||
- Queue + venue-thinness reduce it
|
||||
|
||||
### Validation Methodology
|
||||
|
||||
When validating against a crude fill sim, optimize on **RELATIVE lift** between two policies
|
||||
through the SAME sim — fidelity bias cancels in the difference. Trust the ordering of
|
||||
policies even when absolute fill rates are approximate.
|
||||
|
||||
Reference in New Issue
Block a user