Market Facilitation Index (MARKETFI)
Summary
Bill Williams' Market Facilitation Index (Trading Chaos, 1995): the price range a bar travelled per unit of volume traded — how much movement the market "facilitated" per tick. A rising index on rising volume is read as a move the market is absorbing; a rising index on falling volume as one it is not.
Retail material commonly abbreviates this "MFI" or "BW MFI". TA-Lib already ships TA_MFI for the Money Flow Index, so this carries the MARKETFI name used by Tulip and pandas-ta-classic.
Charting packages often overlay a four-state colour code (green / fade / fake / squat) derived from the signs of the bar-to-bar change in this index and in volume. That is an interpretive layer on top of the series, not part of it; outReal is the scalar only.
Formula
MARKETFI_t = (high_t - low_t) / volume_t
A bar with zero volume reports 0 rather than dividing: it facilitated no movement, and a successful call never emits NaN or ±Inf.
Inputs
inHigh— High price of each barinLow— Low price of each barinVolume— Volume of each bar
Outputs
outReal— Range travelled per unit of volume, per bar
Properties
Numerical Stability: Start-Independent
| ☐ Overlap Input |
| ✅ Independent Y-Axis i |
| ☐ Candlestick |
| ☐ Can Output NaN or ±Inf |
| ☐ Identity at Period 1 |
Implementation
TA-Lib Definition: marketfi.c · marketfi.yaml
| Native | File |
|---|---|
| C | ta_MARKETFI.c |
| Rust | marketfi.rs |
| Java | Core_MARKETFI.java |
| C# | Core_MARKETFI.cs |
TA-Lib is also available for Python, R and more using a wrapper.
See Also
References
- Bill Williams, Trading Chaos, 1995, introduces the Market Facilitation Index as the price range a bar travelled per unit of volume.
- Tulip Indicators
ti_marketfiand pandas-ta-classicmarketficompute the same form, but divide unconditionally: both emit ±Inf on a zero-volume bar where this returns 0. - The four-state green/fade/fake/squat colour code charting packages overlay is derived from the signs of the bar-to-bar change in this index and in volume. It is an interpretive layer, not part of the series;
outRealis the scalar only.