High-Frequency Trading and Latency Arbitrage › Key Parameters
Quantitative FinanceAll chapters High-Frequency Trading and Latency Arbitrage › Key ParametersOne section · Sections in this chapter5 / 18 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
The key parameters for cross-market arbitrage are:
- price_a: Lower price on the buy side exchange (dollars per share), which determines the cost basis for the arbitrage position.
- price_b: Higher price on the sell side exchange (dollars per share), which determines the revenue when closing the position.
- shares: Number of shares to trade, with larger positions amplifying both profits and costs proportionally.
- fee_per_share: Exchange fee for removing liquidity (dollars per share). These transaction costs erode gross profits and represent a fixed hurdle that must be overcome.
- slippage_bps: Expected price movement against the trader during execution (basis points), representing adverse selection and execution timing risk that grows with position size and market volatility.
- breakeven_spread: Minimum price difference required for profitability after costs (dollars per share), a critical threshold determining whether arbitrage is viable and representing the entry barrier for slower competitors.
ETF Arbitrage Mechanics
ETF arbitrage is more complex because it involves trading a basket of securities against the ETF itself. The key participants are authorized participants (APs), typically large financial institutions, who can create or redeem ETF shares directly with the fund.
Authorized participants can exchange a basket of the underlying securities for ETF shares (creation) or exchange ETF shares for the underlying basket (redemption). This mechanism keeps ETF prices aligned with NAV.
When an ETF trades at a premium to NAV, you can execute the following strategy:
- Buy the underlying basket of securities
- Deliver the basket to the ETF issuer to create new ETF shares
- Sell the newly created ETF shares at the premium price
- Profit equals the premium minus transaction costs and creation fees
When an ETF trades at a discount to NAV, the process reverses.
def etf_arbitrage_analysis(
etf_price: float,
nav: float,
shares_per_creation_unit: int = 50000,
creation_fee: float = 500,
basket_execution_cost_bps: float = 2.0,
etf_execution_cost_bps: float = 1.0,
):
"""
Analyze ETF arbitrage opportunity.
Parameters:
-----------
etf_price : Current ETF market price
nav : Net asset value per ETF share
shares_per_creation_unit : Shares in one creation/redemption unit
creation_fee : Fixed fee for creation/redemption
basket_execution_cost_bps : Cost to trade underlying basket
etf_execution_cost_bps : Cost to trade ETF
"""
# Calculate premium/discount
premium_pct = (etf_price - nav) / nav * 100
premium_bps = premium_pct * 100
# Creation unit value
creation_unit_nav = nav * shares_per_creation_unit
creation_unit_etf = etf_price * shares_per_creation_unit
# Gross arbitrage profit
if etf_price > nav:
# Premium: buy basket, create ETF, sell ETF
gross_profit = creation_unit_etf - creation_unit_nav
action = "Premium: Buy basket, create ETF shares, sell ETF"
else:
# Discount: buy ETF, redeem for basket, sell basket
gross_profit = creation_unit_nav - creation_unit_etf
action = "Discount: Buy ETF, redeem for basket, sell basket"
gross_profit = abs(gross_profit)
# Costs
basket_cost = creation_unit_nav * basket_execution_cost_bps / 10000
etf_cost = creation_unit_etf * etf_execution_cost_bps / 10000
total_cost = basket_cost + etf_cost + creation_fee
net_profit = gross_profit - total_cost
# Breakeven premium
breakeven_bps = (
basket_execution_cost_bps
+ etf_execution_cost_bps
+ creation_fee / creation_unit_nav * 10000
)
return {
"premium_bps": premium_bps,
"action": action,
"gross_profit": gross_profit,
"basket_cost": basket_cost,
"etf_cost": etf_cost,
"creation_fee": creation_fee,
"total_cost": total_cost,
"net_profit": net_profit,
"breakeven_bps": breakeven_bps,
}
# Example: SPY trading at small premium
etf_price = 450.15
nav = 450.00
result = etf_arbitrage_analysis(
etf_price=etf_price, nav=nav, shares_per_creation_unit=50000
)ETF Arbitrage Analysis ================================================== ETF Price: $450.15 NAV: $450.00 Premium: 3.33 basis points Action: Premium: Buy basket, create ETF shares, sell ETF P&L for One Creation Unit (50,000 shares): Gross profit: $ 7,500.00 Basket execution: $ 4,500.00 ETF execution: $ 2,250.75 Creation fee: $ 500.00 Total costs: $ 7,250.75 Net profit: $ 249.25 Breakeven premium: 3.22 basis points
The analysis shows that the premium generates substantial profits at scale. For one creation unit (50,000 shares), the gross profit exceeds total costs, yielding a net profit. However, the breakeven premium demonstrates why only well-capitalized, low-cost traders can profitably engage in ETF arbitrage. The margin between the actual premium and breakeven is narrow, requiring precise execution and minimal slippage.
