Edge Filter Sweep
Edge data filters (VWAP, EMA, change_5m thresholds) are too restrictive, causing the bot to pass on cheap Kalshi prices during favorable windows. Loosening entry bands, lowering momentum thresholds, and simplifying edge conditions should increase fill rate and capture more of those opportunities.
Historical research only. Not investment advice.
Top strategy variants
Bottom strategy variants
Historical research only. Not investment advice. These results are based on simulated backtests and may not reflect live execution, liquidity, fees, slippage, or market availability.
Intro / Thesis
This research tested the thesis: Edge data filters (VWAP, EMA, change_5m thresholds) are too restrictive, causing the bot to pass on cheap Kalshi prices during favorable windows. Loosening entry bands, lowering momentum thresholds, and simplifying edge conditions should increase fill rate and capture more of those opportunities.
The run explored one Kalshi crypto strategy shape across 100 deterministic variants. Each variant changed risk bounds, loop cadence, position sizing, and signal sensitivity while keeping the underlying thesis intact.
Variant and Strategy Explanation
The base DSL was treated as the control shape. The research runner generated a family around that shape, persisted every successful candidate as a runnable Turbine strategy, and ranked the family by ROI with PnL as a tie-breaker.
version: 1
platform: kalshi
strategy: custom
strategy_name: "Deep Research - Edge Filter Sweep"
market:
series_ticker: KXBTC15M
risk:
max_position: 5000
price_floor: 0.01
price_ceiling: 0.99
loop:
interval: 10
edge:
btc:
provider: coinbase
symbol: BTC-USD
fields: [price, vwap_1h, change_5m, ema_12_1m]
refresh: 5s
rules:
- name: position_hard_cap
when:
all:
- field: position_size
op: ">="
value: 5000
action: skip
- name: market_settled_skip
when:
all:
- field: price
op: "=="
value: 1.00
- field: position_size
op: ">="
value: 0
action: skip
- name: time_exit_2m
when:
all:
- field: time_to_expiry
op: "<="
value: "2m"
- field: position_size
op: ">"
value: 0
action: cancel_all
- name: cancel_on_no_exit
when:
all:
- field: time_to_expiry
op: "<="
value: "30s"
- field: position_size
op: ">"
value: 0
action: cancel_all
- name: flat_stop_loss
when:
all:
- field: unrealized_pnl
op: "<="
value: -8
- field: position_size
op: ">"
value: 0
action: cancel_all
- name: tp_tier0
when:
all:
- field: position_size
op: "<"
value: 10
- field: unrealized_pnl
op: ">"
value: 2
action: sell_all
- name: sl_tier0
when:
all:
- field: position_size
op: "<"
value: 10
- field: unrealized_pnl
op: "<"
value: -3
action: cancel_all
- name: tp_tier1
when:
all:
- field: position_size
op: ">="
value: 10
- field: position_size
op: "<="
value: 30
- field: unrealized_pnl
op: ">"
value: 5
action: sell_all
- name: sl_tier1
when:
all:
- field: position_size
op: ">="
value: 10
- field: position_size
op: "<="
value: 30
- field: unrealized_pnl
op: "<"
value: -6
action: cancel_all
- name: tp_tier2
when:
all:
- field: position_size
op: ">="
value: 31
- field: position_size
op: "<="
value: 60
- field: unrealized_pnl
op: ">"
value: 7
action: sell_all
- name: sl_tier2
when:
all:
- field: position_size
op: ">="
value: 31
- field: position_size
op: "<="
value: 60
- field: unrealized_pnl
op: "<"
value: -8
action: cancel_all
- name: tp_tier3
when:
all:
- field: position_size
op: ">="
value: 61
- field: position_size
op: "<="
value: 100
- field: unrealized_pnl
op: ">"
value: 10
action: sell_all
- name: sl_tier3
when:
all:
- field: position_size
op: ">="
value: 61
- field: position_size
op: "<="
value: 100
- field: unrealized_pnl
op: "<"
value: -10
action: cancel_all
- name: tp_tier4
when:
all:
- field: position_size
op: ">="
value: 101
- field: unrealized_pnl
op: ">"
value: 15
action: sell_all
- name: sl_tier4
when:
all:
- field: position_size
op: ">="
value: 101
- field: unrealized_pnl
op: "<"
value: -12
action: cancel_all
- name: buy_yes_above_vwap
when:
all:
- field: edge.btc.price
op: ">"
value_field: edge.btc.vwap_1h
- field: edge.btc.change_5m
op: ">"
value: 0.0004
- field: price
op: ">="
value: 0.30
- field: price
op: "<="
value: 0.70
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 100
orders:
- side: yes
action: buy
size: 5
price:
reference: best_bid
offset: 0
post_only: true
- name: buy_no_below_vwap
when:
all:
- field: edge.btc.price
op: "<"
value_field: edge.btc.vwap_1h
- field: edge.btc.change_5m
op: "<"
value: -0.0004
- field: price
op: ">="
value: 0.30
- field: price
op: "<="
value: 0.70
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 100
orders:
- side: no
action: buy
size: 5
price:
reference: best_bid
offset: 0
post_only: true
- name: accel_momentum_yes
when:
all:
- field: edge.btc.change_5m
op: ">"
value: 0.0008
- field: price
op: ">="
value: 0.20
- field: price
op: "<="
value: 0.80
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 100
orders:
- side: yes
action: buy
size: 5
price:
reference: best_bid
offset: 0
post_only: true
- name: accel_momentum_no
when:
all:
- field: edge.btc.change_5m
op: "<"
value: -0.0008
- field: price
op: ">="
value: 0.20
- field: price
op: "<="
value: 0.80
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 100
orders:
- side: no
action: buy
size: 5
price:
reference: best_bid
offset: 0
post_only: true
- name: late_yes_certainty
when:
all:
- field: time_to_expiry
op: "<="
value: "4m"
- field: edge.btc.price
op: ">"
value_field: edge.btc.ema_12_1m
- field: edge.btc.change_5m
op: ">"
value: 0.0004
- field: price
op: ">="
value: 0.15
- field: price
op: "<="
value: 0.80
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 150
action: buy_yes
size: 5
- name: late_no_certainty
when:
all:
- field: time_to_expiry
op: "<="
value: "4m"
- field: edge.btc.price
op: "<"
value_field: edge.btc.ema_12_1m
- field: edge.btc.change_5m
op: "<"
value: -0.0004
- field: price
op: ">="
value: 0.20
- field: price
op: "<="
value: 0.85
- field: spread
op: "<="
value: 0.03
- field: position_size
op: "<="
value: 150
action: buy_no
size: 5
- name: late_yes_super_momentum_boost
when:
all:
- field: time_to_expiry
op: "<="
value: "3m"
- field: edge.btc.price
op: ">"
value_field: edge.btc.ema_12_1m
- field: edge.btc.change_5m
op: ">"
value: 0.0012
- field: spread
op: "<="
value: 0.03
- field: price
op: ">="
value: 0.10
- field: price
op: "<="
value: 0.85
- field: position_size
op: "<="
value: 150
action: buy_yes
size: 10
- name: late_no_super_momentum_boost
when:
all:
- field: time_to_expiry
op: "<="
value: "3m"
- field: edge.btc.price
op: "<"
value_field: edge.btc.ema_12_1m
- field: edge.btc.change_5m
op: "<"
value: -0.0012
- field: spread
op: "<="
value: 0.03
- field: price
op: ">="
value: 0.15
- field: price
op: "<="
value: 0.90
- field: position_size
op: "<="
value: 150
action: buy_no
size: 10Top Results
- #1 BTC strategy · floor 0.45 / ceil 0.82: ROI 0.62%, PnL 31.24, Sharpe 0.22, win rate 63.38%, max drawdown -14.65, trades 177.
- #2 BTC strategy · floor 0.45 / ceil 0.86: ROI 0.62%, PnL 31.24, Sharpe 0.22, win rate 63.38%, max drawdown -14.65, trades 177.
- #3 BTC strategy · floor 0.45 / ceil 0.91: ROI 0.62%, PnL 31.24, Sharpe 0.22, win rate 63.38%, max drawdown -14.65, trades 177.
- #4 BTC strategy · floor 0.45 / ceil 0.95: ROI 0.62%, PnL 31.24, Sharpe 0.22, win rate 63.38%, max drawdown -14.65, trades 177.
- #5 BTC strategy · floor 0.45 / ceil 0.64: ROI 0.60%, PnL 29.98, Sharpe 0.19, win rate 57.78%, max drawdown -11.90, trades 109.
Bottom Results
- #97 BTC strategy · floor 0.05 / ceil 0.55: ROI -0.18%, PnL -9.17, Sharpe -0.08, win rate 34.88%, max drawdown -22.22, trades 114.
- #98 BTC strategy · floor 0.09 / ceil 0.55: ROI -0.18%, PnL -9.17, Sharpe -0.08, win rate 34.88%, max drawdown -22.22, trades 114.
- #99 BTC strategy · floor 0.14 / ceil 0.55: ROI -0.18%, PnL -9.17, Sharpe -0.08, win rate 34.88%, max drawdown -22.22, trades 114.
- #100 BTC strategy · floor 0.18 / ceil 0.55: ROI -0.18%, PnL -9.17, Sharpe -0.08, win rate 34.88%, max drawdown -22.22, trades 114.
- #95 BTC strategy · floor 0.23 / ceil 0.55: ROI -0.14%, PnL -7.08, Sharpe -0.06, win rate 36.59%, max drawdown -22.22, trades 110.
Conclusion
The best-performing branch of this thesis was BTC strategy · floor 0.45 / ceil 0.82, which suggests that this parameter region deserves manual inspection before any live deployment. The gap between the top and bottom variants was 0.80 percentage points of ROI, so the shape appears sensitive to parameter choices rather than uniformly robust.
Long Disclaimer
This report is educational research generated from historical simulations. It is not financial, investment, legal, tax, or trading advice, and it is not a recommendation to buy, sell, deploy, or automate any strategy. Prediction markets can be illiquid and volatile; live fills, fees, spreads, latency, market resolution, settlement behavior, outages, data quality, and position limits can materially change outcomes. Backtested performance is not evidence of future performance. Review every DSL, market, risk rule, and live deployment setting yourself before running any strategy.
This report is generated from historical simulations. Backtests can be wrong or incomplete, and live trading can differ materially because of liquidity, fees, slippage, latency, market resolution, outages, and data quality. Do your own review before running any strategy.