Pulse

Next-generation market impact model for futures trading

Pulse reinvents cost estimation for futures to address the unique complexities of futures markets and provide more accurate cost estimates to portfolio managers and institutional traders to support variety of use cases traders experience

What makes Pulse unique?

Provides robust estimates for…
Highly liquid base symbols
Small orders
Large orders
Less liquid base symbols
Illiquid trading hours
Illiquid & further dated contracts
Wide range of contract categories (e.g., Commodities, Equity Index, Interest Rates, etc.)
Accounts for shadow liquidity
Point-and-click accessibility
Accessibility via API
Highly liquid base symbols
Small orders
Large orders
Less liquid base symbols
Illiquid trading hours
Illiquid & further dated contracts
Wide range of contract categories (e.g., Commodities, Equity Index, Interest Rates, etc.)
Accounts for shadow liquidity
Point-and-click accessibility
Accessibility via API
Accounts for…
Traditional Models*
Highly liquid base symbols
Small orders
Large orders
Less liquid base symbols
Shadow liquidity
Illiquid trading hours
Illiquid & further dated contracts
Wide range of contract categories (e.g., Commodities, Equity Index, Interest Rates, etc.)

*Traditional cost models tend to represent contracts in groups rather than individually, ignoring critical futures-specific characteristics. They also tend to be estimated from small samples. Both issues can bias estimates and make them far less robust.

Performance

Our market impact model’s estimates agree with realized parent order cost data–within a single tick–overall and by product category for more than 72,000 parent orders across product categories (65+ base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
White Paper
Our market impact model’s estimates agree with realized parent order cost data –within a single tick– overall and by product category for more than 72,000 parent orders across product categories (65+ base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
White Paper
Our market impact model’s estimates agree with realized parent order cost data –within a single tick– overall and by product category for more than 72,000 parent orders across product categories (65+ base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
Click here
Our market impact model’s estimates agree with realized parent order cost data –within a single tick– overall and by product category for more than 72,000 parent orders across product categories (65+ base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
White Paper
Our market impact model’s estimates agree with realized parent order cost data –within a single tick– overall and by product category for more than 72,000 parent orders across product categories (more than 65 base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
White Paper
Our market impact model’s estimates agree with realized parent order cost data –within a single tick– overall and by product category for more than 72,000 parent orders across product categories (65+ base symbols)
To learn more about Pulse’s methodology and performance, request the white paper
White Paper

Access via REST API

Pulse’s market impact and total cost estimates on demand via REST API
API Docs
Extract market impact and total cost estimates for orders of fixed duration and specified size or fixed participation rate and start time
Cost-estimator-fixed-duration
Provides estimated cost of trading a specified contract from a specified start time to a specified end time for specified order size.
Notes:
1) If end time is specified beyond market close, the model will assume order ends at market close and increase participation to complete order accordingly. All output will align with this change.
2) "trailing days" & "val" parameters are optional, with default values indicated below. All other parameters are required.
start_time
Start time of the intraday period in the format HH:MM:SS
end_time
End time of the intraday period in the format HH:MM:SS
ordersize
Size of the order (no. of contracts)
exchange_symbol
Enter exchange symbol of contract
futures_base_symbol
Respective base symbol. Must align with the exchange symbol
date
Date to estimate for in the format YYYY-MM-DD. For historical, no more than one year prior
trailing_days
Number of previous days to include in estimated analytical inputs to model (default value n=7). Larger values require more estimation time; we recommend limiting to 30 days
val
Use 'n' for estimated model inputs (e.g., estimated spread, depth, etc.). For realized data as model inputs use 'y'; this option is available for historical dates only. Default value: 'n'
[
  {
    "cost_pct_spread": 105.55646724769893,
    "cost_contract": 0.000056494627759558066,
    "cost_bps": 0.8737808964224868,
    "cost_ivwap_pct_spread": 30.86144284860241,
    "cost_ivwap_contract": 0.000016517280004865602,
    "cost_ivwap_bps": 0.2554664806455144,
    "duration_mins": 510,
    "trade_imbalance": 868,
    "avg_spread_bps": 0.8224104706119859,
    "avg_depth": 23.547698106434535,
    "volume": 11143,
    "day_volume": 92346,
    "interval_volatility": 15.444013767242039,
    "avg_imbalance_est": -870.4,
    "avg_spread_bps_est": 0.8277852785391837,
    "avg_depth_est": 29.66792783628453,
    "avg_volume_est": 18167.4,
    "interval_volatility_est": 22.154013531780713,
    "day_volume_est": 122051.2,
    "interval_vwap": 0.64157825091986,
    "arrival_price": 0.64095,
    "open_bid_size": 3,
    "open_ask_size": 28,
    "close_price": 0.6413249999999999,
    "fit_confidence": "high"
  }
]
Cost-estimator-fixed-participation
Provides estimated cost of trading a specified contract at a specified start time with specified participation rate and order size.
Notes:
1) If the estimated end time is beyond market close, model will assume order ends at market close and increase participation to complete order accordingly. All output will align with this change.
2) "trailing days" & "val" parameters are optional, with default values indicated below. All other parameters are required.
start_time
Start time of the intraday period in the format HH:MM:SS
participation
Enter participation rate (0.0 - 1.0)
ordersize
Size of the order (no. of contracts)
exchange_symbol
Enter exchange symbol of contract
futures_base_symbol
Respective base symbol. Must align with exchange symbol
date
Date to estimate for in the format YYYY-MM-DD. For historical, no more than one year prior
trailing_days
Number of previous days to include in estimated analytical inputs to model (default value n=7). Larger values require more estimation time; we recommend limiting to 30 days
val
Use 'n' for estimated model inputs. For realized data as model inputs use 'y'; this option is available for historical dates only. Default value: 'n'
[
  {
    "cost_ivwap_contract": 0.000019574274731940793,
    "cost_ivwap_pct_spread": 35.526818129805136,
    "cost_ivwap_bps": 0.2955050973435145,
    "cost_pct_spread": 182.8800462900357,
    "cost_contract": 0.00010076174725222553,
    "cost_bps": 1.5211603156710802,
    "duration_mins_est": 100.21,
    "trade_imbalance": 121,
    "avg_spread_bps": 0.8048500684485186,
    "avg_depth": 24.21395955642531,
    "volume": 4599,
    "day_volume": 93879,
    "interval_volatility": 9.80144616419046,
    "avg_imbalance_est": 58.2,
    "avg_spread_bps_est": 0.8317803645229946,
    "avg_depth_est": 17.184426683348732,
    "avg_volume_est": 658.2,
    "interval_volatility_est": 8.688071765725107,
    "day_volume_est": 20031.8,
    "interval_vwap": 0.6740500652315721,
    "arrival_price": 0.6737249999999999,
    "open_bid_size": 34,
    "open_ask_size": 13,
    "close_price": 0.674375,
    "fit_confidence": "high"
  }
]
Estimated stats
Provides estimated analytics for a specified product from a specified start time to a specified end time.
Notes:
"trailing days" & "val" parameters are optional with default values indicated below. All other parameters are required.
start_time
Start time of the intraday period in the format HH:MM:SS
end_time
End time of the intraday period in the format HH:MM:SS
exchange_symbol
Enter exchange symbol of contract
date
Date in format YYYY-MM-DD. For historical, no more than one year prior
trailing_days
Number of previous days to include in estimated analytics (default value n=7). Larger values require more estimation time; we recommend limiting to 30 days
{
  "avg_depth_est": 26.41116065079775,
  "avg_spread_est": 0.000051691908910491186,
  "avg_volume_est": 486.6,
  "avg_mid_price_est": 0.6419080774541763,
  "avg_imbalance_est": -40.2,
  "day_volume_est": 80414,
  "est_interval_vol_parkinsons": 4.022101068942373
}
Realized stats
Calculates the realized analytics (historical) for a specified exchange symbol from aspecified start time to a specified end time.
All parameters are required.
start_time
Start time of the intraday period in the format HH:MM:SS
end_time
End time of the intraday period in the format HH:MM:SS
exhange_symbol
Enter exchange symbol
date
Date in format YYYY-MM-DD; no more than one year prior
{
  "interval_vwap": 0.6420841201716737,
  "arrival_price": 0.6428750000000001,
  "interval_open_bid_size": 42,
  "interval_open_ask_size": 14,
  "interval_close_price": 0.6422749999999999,
  "interval_volume": 4427,
  "avg_interval_spread": 0.000050677659814776685,
  "avg_interval_depth": 40.659024169866726,
  "imbalance": 67,
  "day_volume": 87767,
  "interval_vol_parkinsons": 15.897767730546736
}
Daily trading stats
Provides realized daily analytics for a specified exchange symbol from a specified start date to a specified end date.
All parameters are required.
exchange_symbol
Enter exchange symbol to fetch respective trading stats
start_date
Start date of range in the format YYYY-MM-DD; no more than one year prior
end_date
End date of range in the format YYYY-MM-DD; no more than one year prior
[
  {
    "exchange_symbol": "6AZ23",
    "date": "2023-06-29",
    "avg_spread_bps": 1.0732,
    "trade_imbalance": -136,
    "avg_depth": 14.7886,
    "day_volume": 351,
    "active_volume": 255,
    "liquid_open": 6,
    "liquid_close": 7,
    "day_high_mid": 0.6666,
    "day_low_mid": 0.6628,
    "day_open_mid": 0.6628,
    "day_close_mid": 0.6659,
    "day_vwap": 0.6642,
    "active_vwap": 0.6644,
    "avg_trade_size": 3.211,
    "trades": 109,
    "day_volatility": 33.4324
  },
]
Active-instruments
Provides a list of contracts (varying expiries) traded on a given day for a specified base symbol; if no active instruments are found, “None” is returned.
All parameters are required.
futures_base_symbol
Base symbol for which to fetch active contracts
date
Active date of contracts to be returned in the format YYYY-MM-DD. For historical, no more than one year prior
[
  {
    "day": "2023-10-03",
    "exchange_symbol": "6AZ23",
    "last_trading_date": "2023-12-18",
    "close_price": 0.63215,
    "open_price": 0.6381,
    "volume": 153483,
    "high_price": 0.63835,
    "low_price": 0.6303,
    "volume_rank": 1,
    "days_to_expiry": "76",
    "expiry_rank": 1,
    "percent_dayvolume_per_contract": 99.99
  },
  {
    "day": "2023-10-03",
    "exchange_symbol": "6AH24",
    "last_trading_date": "2024-03-18",
    "close_price": 0.6342,
    "open_price": 0.6401,
    "volume": 20,
    "high_price": 0.6401,
    "low_price": 0.6329,
    "volume_rank": 2,
    "days_to_expiry": "167",
    "expiry_rank": 2,
    "percent_dayvolume_per_contract": 0.01
  }
]
Supported-symbols
Provides a list of base symbols supported by the API.
This endpoint takes no parameters.
This function takes no parameters
[
  {
    "futures_base_symbol": "CC",
    "category": "Agriculture",
    "sub_category": "Softs",
    "exchange_mic_code": "IFUS",
    "description": "Cocoa Futures",
    "valid_contract_months": "{H,K,N,U,Z}",
    "illiquid_contract_months": "{}",
    "tick_size": 1,
    "multiplier": 10,
    "market_open_local": "04:45:00",
    "market_close_local": "13:30:00",
    "liquid_open_local": "08:00:00",
    "liquid_close_local": "11:50:00",
    "tz": "America/New_York"
  },
{65+ symbols supported by PULSE]}
]

Access via AMS

Our Algorithm Management System (AMS) offers a point-and-click interface for Pulse Market Impact Model
Generate market impact and total cost estimates and curves based on fixed duration and specified order size or fixed participation rate and start time
Download historical estimated and realized trade analytics including spread, depth, volume, and volatility

FAQs

What is the Pulse Market Impact Model?

The Pulse Market Impact Model returns transaction cost estimates for a given order specific to the instrument, order size, and order duration. It is accessible via REST API and our Algorithm Management System (AMS), which offers a point-and-click user interface.

How is Pulse different from traditional transaction cost models?

Unlike traditional models that rely on equity-centric assumptions, Pulse is designed to account for the unique microstructure complexities of each asset class. It partitions total cost into market impact and order placement cost components, yielding more actionable estimates. The model is currently live for Global Futures, with cost estimates for Equities coming soon.

Can equity cost models be repurposed for futures?

While market impact exists in all traded instruments, futures present unique modeling challenges that must be accommodated for more accurate cost estimation. Unlike equities, futures often have wider tick sizes, thinner order books, and more volatile liquidity conditions — especially around macro events and roll periods. With a thoughtful, futures-specific approach, these structural differences can be well accounted for in cost estimates.

What is shadow liquidity, and how does it affect cost estimation?

Shadow liquidity refers to the hidden capacity of the market—the volume that exists beyond visible top-of-book orders. In futures, where displayed liquidity can be sparse or fleeting, accounting for this hidden layer is critical. Ignoring it can lead to poor slippage estimates and misinformed execution decisions. Pulse accounts for shadow liquidity by following a unique normalization approach and building a separate model for each base symbol, capturing its unique liquidity profile.

How do large tick sizes affect cost estimation?

In large-tick futures—such as many short-duration interest rate contracts, for example—prices move in coarse increments, leading to artificially wide spreads and clustered prints. This distorts traditional impact models, which assume more continuous price behavior. Pulse normalizes model inputs and cost differently to support more accurate estimates under large-tick conditions.

Does Pulse handle liquid and illiquid instruments differently?

Yes. Rather than grouping instruments by volume or volatility, Pulse contains distinct models for each base symbol and accounts for each symbol’s unique liquidity profile. This allows the model to adapt naturally across the liquidity spectrum—capturing hidden liquidity in illiquid instruments and preventing overfitting in highly liquid ones.

How can traders access Pulse Market Impact Model?

Pulse is available via API and our Algorithm Management System (AMS). Our team provides onboarding support and training to all of our clients as needed. To request access, institutional investors can contact us directly or request a free trial using the button below.

What evidence supports the accuracy of Pulse estimates?

Pulse has been validated against over 70,000 executed orders from BestEx Research algorithms, covering a wide range of products, order sizes and durations, and market conditions. Pulse’s estimates align with out-of-sample data, confirming its stability over time, contract expiries, and execution speeds. Some of these results are shown in the performance section above. For a deeper look at our testing methodology and results, request access to the Pulse research paper.

How can I try Pulse?

We offer trial access for qualified users interested in exploring Pulse’s capability. To get started, use the “Request Access” link below or contact our team directly.

Ready to check the pulse of your orders?

Trial for institutional investors only