Late-Resolution Spread
Late-Resolution Spread captures the time-decay component of high-probability outcomes near market maturity.
What it does
Late-Resolution Spread captures the time-decay component of high-probability outcomes near market maturity. As a binary or multi-outcome market approaches its endDate (from Gamma API), a token priced at $0.95–$0.99 retains a positive expected settlement of $1.00 if the leading outcome holds. The spread between the current market price and $1.00 shrinks deterministically as resolution approaches. This bot monitors gamma.market.endDate to identify markets within max_minutes_to_resolution of close, checks that the price-to-$1.00 spread exceeds the configurable minimum, and emits a buy OrderIntent sized to max_clip_usd. It never averages down (never_average_down is locked true). This is a user-controlled execution tool exploiting time-value decay in near-resolution predictive markets; it is not a directional price forecast.
Pipeline placement
Applies to: Markets within max_minutes_to_resolution of their gamma.market.endDate, where price is ≥ min_price_cents/100 and spread
Why it matters
| If this fails | Consequence |
|---|---|
| endDate not fetched from Gamma API; using stale time-to-resolution | Entering a late-resolution trade with incorrect time remaining may expose the position to a full overnight resolution cycle, dramatically extending holding time and risk. |
| Oracle challenge window not respected | UMA Optimistic Oracle: $750 pUSD bond, 2-hour challenge window, potential 24–48h DVM delay. Entering a late-resolution trade when a challenge is active means the position may not settle at $1.00 within the expected window. |
| feeRateBps hardcoded on signed order (V1 pattern) | CLOB V2 rejects orders containing feeRateBps. Fees are operator-set at match time. The signed order must not contain this field. |
| never_average_down not enforced | If price drops after entry on a late-resolution market, averaging down concentrates risk just before resolution — the opposite of the strategy intent. |
Inputs
Polymarket inputs
| Input | Source | Required | Use |
|---|---|---|---|
| Market endDate and resolution metadata | gamma (Gamma API — gamma.market.endDate, resolutionSource, negRisk flag) | required | Primary time-to-resolution signal. Compute minutes_to_resolution = (endDate - now) / 60. Only consider markets within max_minutes_to_resolution. |
| Current best ask for the leading outcome | clob_public | required | Confirm price ≥ min_price_cents/100 and compute spread = 1.00 - best_ask. |
| Oracle proposal status and challenge window state | onchain (UMA Optimistic Oracle / Polygon) | required | Skip markets with an active oracle challenge (2h window + potential DVM delay 24–48h) to avoid unexpected settlement delays. |
| Market negRisk flag and multi-outcome structure | gamma | required | For neg-risk events, verify each outcome's endDate independently and check NegRiskAdapter availability for position exit. |
| Top-of-book depth for the leading outcome | clob_public | required | Size order to min(depth_available, max_clip_usd) to avoid moving the book. |
Internal inputs
| Input | Source | Required | Use |
|---|---|---|---|
| KillSwitch active flag | KillSwitch | required | Abort intent emission if KillSwitch is active. |
| Builder code bytes32 | internal config | required | Injected into builder field on every signed V2 order for attribution. |
| OracleRiskMonitor approval status for this market | OracleRiskMonitor | required | Only enter when OracleRiskMonitor confirms no active challenge or DVM escalation. |
Authority
What this bot is permitted to do
State
Readiness
General live
Status
live
Class
Alpha Strategy
Default mode
general_live
Developer owner
Polytraders core — Strategy pod
Capital impact
Direct
Reason codes emitted
| Code | Severity | Meaning | Action |
|---|---|---|---|
| LATE_RES_SPREAD_ENTRY | INFO | Market is within max_minutes_to_resolution, spread ≥ min_spread_to_1_cents, oracle clear, no averaging down. OrderIntent emitted. | Emit buy OrderIntent. |
| LATE_RES_SPREAD_TOO_TIGHT | INFO | spread_cents < min_spread_to_1_cents hard floor. Price is too close to $1.00 to trade profitably after fees. | Skip; emit DecisionReport intent_emitted=false. |
| LATE_RES_NOT_IN_WINDOW | INFO | minutes_to_resolution > max_minutes_to_resolution. Market is not yet in the late-resolution window. | Skip; re-evaluate on next poll cycle. |
| LATE_RES_ORACLE_CHALLENGE_ACTIVE | WARN | UMA Optimistic Oracle challenge is active for this market (2h window) or DVM escalation is in progress (24–48h). | Skip; emit DecisionReport intent_emitted=false; re-evaluate when oracle is clear. |
| LATE_RES_NO_AVERAGE_DOWN | INFO | Existing position price is above current best ask. Never-average-down rule prevents adding to the position. | Skip; emit DecisionReport intent_emitted=false. |
| LATE_RES_APPROACHING | WARN | minutes_to_resolution < 30. Book may be thin; clip size reduced by 20%. | Emit OrderIntent at 80% clip size; log warning. |
| STALE_MARKET_DATA | HARD_REJECT | Gamma API endDate data is > 60s old, or CLOB book snapshot is > 5s old. | Skip; no OrderIntent emitted. |
| KILL_SWITCH_ACTIVE | HARD_REJECT | Global kill switch is active. | Skip all markets; no OrderIntents. |
Related bots in Strategy
Used by
Reverse index — strategies that currently reference strat.late-resolution-spread. If you change this bot's authority or reason codes, these strategies must re-pass shadow.
| Strategy | State | Activity |
|---|---|---|
| Fed Rates — surprise drift | frozen | last triggered 4m ago |
Showing 1 of 1 · demo-wired ≠ production-live
Why this matters
Strategy bots does NOT sign, route, or directly submit orders to the chain. Understanding the authority boundary prevents misuse and makes promotion-gate reviews faster and more reliable. View raw spec JSON →