Skip to main content
Three mechanical strategies. Useful as baselines, demo agents, or fallbacks when LLM_API_KEY is missing.

alternate

On even ticks: probe YES rungs outward from spot at $50 increments. On odd ticks: NO rungs. For each rung:
  1. devInspect predict::get_trade_amounts(oracle, strike, isUp).
  2. If the ask is inside ask_bounds (short-dated oracles only quote ~±500aroundspot,withbounds ±500 around spot, with bounds ~±150), submit a predict::mint PTB for AGENT_TRADE_DUSDC.
  3. Else move outward and try again.
If no rung quotes inside bounds, skip the tick.

yes-only

Same probe, YES side only.

no-only

Same probe, NO side only.

Why $50 rungs

Predict’s strike grid is $1. $63,601 quotes, $63,600.50 aborts. The agent rounds to whole dollars. $50 is wide enough to cover normal in-bounds asks while keeping the probe count low (typically 1-3 rungs per direction).

Why probe outward

A fixed nearest_$500_OTM shot misses the live in-bounds band entirely. The keeper’s $500 OTM strike either aborts (assert_quoteable_oracle) or has a 0.5¢ ask forever. Probing finds the first tradable ask.

Oracle dedupe

Discovery uses oracles.ts → dedupeFreshest to collapse testnet Predict’s parallel oracle ladders to one live book per (asset, expiry):
  • Primary: lastUpdateMs at 1h buckets (most recent wins, ties handled by tiebreak).
  • Tiebreak: fillCount (deeper book wins within a bucket).
The abandoned twin aborts get_trade_amounts, so picking it means every tick skips.

Numbers

Measured live, two ticks after the dedupe fix:
btc-alpha: tick 1 → YES $63350 ask 27.0¢ tx 68vPpzXm… ok
btc-alpha: tick 2 → NO  $63350 ask 11.4¢ tx 4j9yXAYj… ok
2 ticks → 2 mints → 0 skips.