Training–serving skew is any difference between the feature values a model was trained on and those it receives in production for the same moment: different code, different clocks, different inputs, different arithmetic or different data timing.
| RMS difference as a share of the feature’s standard deviation | ||||
| feature | one event ahead | one-second bars | float32 | late trades |
| spread | 0.38 | 0.92 | 0 | 0 |
| imbalance | 0.24 | 0.73 | 0.00 | 0 |
| depth imbalance | 0.11 | 0.41 | 0.00 | 0 |
| weighted mid minus mid | 0.30 | 0.79 | 0.00 | 0 |
| OFI 5 s | 0.03 | 0.24 | 0 | 0 |
| OFI 30 s | 0.01 | 0.07 | 0 | 0 |
| volume 30 s | 0.01 | 0.07 | 0 | 0.07 |
| signed volume 30 s | 0.02 | 0.10 | 0 | 0.11 |
| trades 10 s | 0.02 | 0.18 | 0 | 0.17 |
| mid change 5 s | 0.09 | 0.39 | 0 | 0 |
| mid change 30 s | 0.03 | 0.13 | 0 | 0 |
| messages 10 s | 0.00 | 0.04 | 0 | 0 |
ml_featstore.feature_skew.| decisions | detected | rank IC | live P&L | ||
| skew | mismatched | (5-sample check) | backtest | live | (ticks) |
| none | 0 | 0 | 0.411 | 0.411 | 0.089 |
| research one event ahead | 100% | 100% | 0.395 | 0.418 | 0.091 |
| research on one-second bars | 96% | 100% | 0.438 | 0.360 | 0.078 |
| production float32 storage | 92% | 100% | 0.411 | 0.411 | 0.089 |
| production trade prints 200 ms late | 100% | 100% | 0.411 | 0.411 | 0.089 |
ml_featstore.parity_table, model_effects.