Case Study 1: The True Cost of Trading on Polymarket

Overview

Maria is a semi-professional prediction market trader who has developed a quantitative model for U.S. political events. Her model identifies opportunities where her estimated probabilities differ from market prices. She has been trading on Polymarket for three months and wants to conduct a thorough cost analysis to understand her true profitability and compare whether Kalshi would be a better choice.

In this case study, we walk through Maria's complete cost analysis, covering spread costs, gas fees, slippage, market impact, and the overall impact on her trading strategy's profitability.


Maria's Trading Profile

Metric Value
Capital deployed $25,000
Average trades per week 15
Average position size 200 contracts
Average contract price $0.50
Average hold time 7 days
Model edge (estimated) 4 cents above midpoint
Markets traded U.S. political elections, policy outcomes

Part 1: Cataloging All Costs on Polymarket

1.1 Spread Costs

Maria records the quoted spread at the time of each trade. Over 60 trades in her most recent month, she observes:

Market Category Avg Quoted Spread Avg Effective Spread Number of Trades
Presidential election $0.02 | $0.024 20
Congressional races $0.04 | $0.052 15
Policy outcomes $0.05 | $0.068 15
Economic indicators $0.03 | $0.038 10
Weighted average $0.033** | **$0.043 60

The effective spread exceeds the quoted spread by an average of 1 cent, reflecting slippage from order book depth limitations.

Monthly spread cost: $$\text{Spread cost} = \frac{S_{\text{effective}}}{2} \times \text{contracts per trade} \times \text{trades} = \frac{0.043}{2} \times 200 \times 60 = \$258$$

1.2 Gas Fees

Maria's gas fee history on Polygon:

Transaction Type Avg Gas Fee Frequency per Month
Trade execution (approve + swap) $0.008 60
Position close / claim $0.005 45
USDC deposit $0.003 4
USDC withdrawal $0.012 2

Monthly gas cost: $$G = (60 \times 0.008) + (45 \times 0.005) + (4 \times 0.003) + (2 \times 0.012) = 0.48 + 0.225 + 0.012 + 0.024 = \$0.74$$

Gas fees on Polygon are essentially negligible for Maria's trade sizes. Even during periods of congestion (10x normal fees), her monthly gas cost would only reach ~$7.40.

1.3 Slippage Analysis

Maria categorizes her trades by size relative to the available liquidity at the best price:

Order Size vs. Best Level Occurrences Avg Slippage
< 50% of best level 25 $0.000
50-100% of best level 20 $0.003
100-200% of best level 10 $0.008
> 200% of best level 5 $0.018

Monthly slippage cost: $$\text{Slippage} = (25 \times 0 + 20 \times 0.003 + 10 \times 0.008 + 5 \times 0.018) \times 200 = (0 + 0.06 + 0.08 + 0.09) \times 200 = \$46$$

1.4 Market Impact (Permanent)

Maria estimates permanent market impact by observing the midpoint 1 hour after her trades. On average, the midpoint moves 0.4 cents in the direction of her trade. This represents the market incorporating the information in her order flow.

Monthly impact cost estimate: $$\text{Impact} = 0.004 \times 200 \times 60 = \$48$$

Note: This cost is partially offset by the fact that the price moving in her favor means her position is worth more. However, it increases the cost of building the full position.

1.5 Total Monthly Cost Summary (Polymarket)

Cost Component Monthly Amount Per Trade Per Contract
Spread (half effective) $258.00 | $4.30 $0.0215
Gas fees $0.74 | $0.01 $0.0001
Slippage $46.00 | $0.77 $0.0038
Market impact $48.00 | $0.80 $0.0040
Total $352.74** | **$5.88 $0.0294

Total cost as percentage of notional: $352.74 / ($0.50 \times 200 \times 60) = 5.88\%$

Cost per contract: $0.0294 (approximately 3 cents)


Part 2: Calculating Net Edge After Costs

Maria's model estimates an average edge of 4 cents above the midpoint. But she buys at the ask, not the midpoint, so her edge relative to execution price is:

$$\text{Edge vs. execution} = \text{Edge vs. midpoint} - \frac{S_{\text{effective}}}{2}$$ $$= 0.04 - 0.0215 = 0.0185 \text{ cents above her average execution price}$$

After accounting for all other costs (gas + slippage + impact): $$\text{Net edge} = 0.0185 - 0.0001 - 0.0038 - 0.0040 = 0.0106 \text{ per contract}$$

Monthly expected profit: $$\Pi = 0.0106 \times 200 \times 60 = \$127.20$$

Monthly cost-to-edge ratio: $$\frac{\text{Total costs}}{\text{Gross edge}} = \frac{352.74}{0.04 \times 200 \times 60} = \frac{352.74}{480} = 73.5\%$$

Maria is losing 73.5% of her gross edge to transaction costs. Her expected monthly profit of ~$127 on $25,000 of capital represents an annual return of approximately 6.1%.

Edge Sensitivity Analysis

How sensitive is Maria's profitability to her edge estimate?

True Edge (cents) Gross Profit Costs Net Profit Annual ROI
2 $240 | $353 -$113 -5.4%
3 $360 | $353 $7 0.3%
4 $480 | $353 $127 6.1%
5 $600 | $353 $247 11.9%
6 $720 | $353 $367 17.6%

Critical finding: If Maria's edge is 3 cents or less instead of her estimated 4 cents, she is approximately breaking even or losing money. Given the uncertainty in her edge estimates, this is a concerning margin of safety.


Part 3: Comparison to Kalshi

Maria now models the same 60 trades per month on Kalshi to compare total costs.

3.1 Kalshi Cost Structure

For taker orders at an average price of $0.50: - Taker fee: $\min(0.01, 0.50/15) = \min(0.01, 0.0333) = 0.01$ per contract - Maker fee: $0.00

Kalshi's quoted spreads tend to be slightly wider than Polymarket's for the same markets:

Market Category Polymarket Spread Kalshi Spread
Presidential election $0.02 | $0.03
Congressional races $0.04 | $0.05
Policy outcomes $0.05 | $0.06
Economic indicators $0.03 | $0.04
Weighted average $0.033** | **$0.043

3.2 Kalshi Cost Calculation (Taker Orders)

Cost Component Monthly Amount Per Contract
Spread (half effective) $322.50 | $0.0269
Taker fee $120.00 | $0.0100
Gas fees $0.00 | $0.0000
Slippage (estimated similar) $46.00 | $0.0038
Market impact (estimated similar) $48.00 | $0.0040
Total $536.50** | **$0.0447

3.3 Kalshi Cost Calculation (Maker Orders — 60% fill rate)

If Maria switches to limit orders on Kalshi (zero maker fee, but only 60% fill rate):

  • Trades executed as maker: 60 × 60% = 36 trades
  • Trades requiring taker fallback: 60 × 40% = 24 trades
  • Maker trades: no fee, earn the spread (buy at bid)
  • Taker fallback trades: full taker costs
Scenario Maker Trades (36) Taker Trades (24) Monthly Total
Spread cost $0 (at bid) | $0.0269 × 200 × 24 = $129 | $129
Taker fee $0 | $0.01 × 200 × 24 = $48 | $48
Opportunity cost (missed trades) Est. $40 | $0 $40
Other costs ~$30 | ~$30 $60
Total $277

3.4 Side-by-Side Comparison

Metric Polymarket (Taker) Kalshi (Taker) Kalshi (Maker-First)
Monthly cost $353 | $537 $277
Cost per contract $0.029 | $0.045 $0.023
Net monthly profit $127 | -$57 $203
Annual ROI 6.1% -2.7% 9.7%
Breakeven edge 2.9¢ 4.5¢ 2.3¢

3.5 Key Insights

  1. Polymarket is significantly cheaper than Kalshi for taker orders due to zero trading fees and generally tighter spreads.

  2. Kalshi's maker-first strategy is the cheapest overall if Maria can achieve a 60% fill rate on limit orders. The zero maker fee combined with buying at the bid instead of the ask is powerful.

  3. The choice depends on execution patience: If Maria needs to trade immediately (breaking news, time-sensitive information), Polymarket taker orders are best. If she can wait for fills, Kalshi maker orders are optimal.

  4. With only 4 cents of edge, platform choice is the difference between profitability and loss. Kalshi taker orders actually produce a negative expected return for Maria's strategy.


Part 4: Optimization Recommendations

Based on the analysis, Maria should:

Recommendation 1: Prioritize Limit Orders

Switch from predominantly market/taker orders to a limit-order-first strategy. Target a 60%+ fill rate by placing orders 1 tick above the bid (for buys) or 1 tick below the ask (for sells).

Expected savings: $76 per month (switching from Polymarket taker to Kalshi maker-first)

Recommendation 2: Filter Low-Edge Trades

Reject any trade where the estimated edge is less than 4 cents (1.5x the breakeven cost). This eliminates unprofitable trades that drag down overall performance.

Expected impact: Fewer trades, but higher average profitability per trade.

Recommendation 3: Concentrate on Liquid Markets

Focus trading on presidential election and economic indicator markets where spreads are tightest. Avoid congressional races and policy outcomes unless the edge is proportionally larger.

Expected savings: ~$30 per month from reduced spread costs.

Recommendation 4: Size Trades to Avoid Slippage

Limit individual trade sizes to 50-75% of the liquidity at the best price level. For markets with thin books, split orders across time.

Expected savings: ~$20 per month from reduced slippage.

Recommendation 5: Use Both Platforms

Maintain accounts on both Polymarket and Kalshi. For each trade, compare the effective cost on each platform and execute on whichever is cheaper for that specific trade.


Part 5: Three-Month Projection

Under the optimized strategy:

Metric Current Optimized Improvement
Monthly trades 60 45 (filtered) -25%
Avg cost per contract $0.029 | $0.020 -31%
Monthly costs $353 | $180 -49%
Monthly gross edge $480 | $400 (fewer but better trades) -17%
Monthly net profit $127 | $220 +73%
Annual ROI 6.1% 10.6% +74%
Cost-to-edge ratio 73.5% 45.0% -39%

The optimized strategy reduces costs by 49% while only reducing gross edge by 17%, resulting in a 73% increase in net profitability.


Discussion Questions

  1. Maria's edge estimate of 4 cents has estimation uncertainty. If the true edge were drawn from a normal distribution centered at 4 cents with a standard deviation of 2 cents, what would her expected annual ROI be under the optimized strategy?

  2. As more traders adopt similar quantitative models, Maria's edge may decay. At what point should she stop trading altogether? What leading indicators should she monitor?

  3. If Polymarket introduced a 0.5% trading fee, how would the platform comparison change? Would Kalshi maker orders become unambiguously better?

  4. Maria is considering scaling up to $100,000 in capital. What additional costs would she face (market impact, liquidity constraints)? How should her strategy adapt?

  5. How would the analysis change if Maria were trading on Ethereum mainnet (with gas fees of $5-$50 per transaction) instead of Polygon?


Code Reference

See code/case-study-code.py for the complete Python implementation of Maria's cost analysis, including the platform comparison and optimization calculations.