Guardrail
28 bots · 7 live · 1 beta · 20 planned · 5 reference
Bots that can block, downsize, quarantine, or pause an order. They vote on every OrderIntent. A guardrail must have at least one REJECT path — if it cannot reject, it is not a guardrail and should be reclassified.
Class rules
- MUST have at least one
REJECTpath — a guardrail that cannot reject is not a guardrail. - MUST have a safe fallback when required data is missing or stale. Default to reject, never approve on missing data.
- MUST emit a
RiskVote(orSecurityCheckfor the Security layer). - MUST handle close-only and risk-reducing trades explicitly.
- MUST state whether it can downsize via
RESHAPE_REQUIREDbefore falling through toREJECT.
Bots in this class
Grouped by layer. Reference bots first, then live, then alphabetical within each layer.
Risk · 19 in this class
1.2
Risk
LIVE
v3.5 · wired
KillSwitch reference
KillSwitch is the top-level emergency stop for the entire trading system. It can be triggered automatically when intraday or weekly drawdown exceeds a threshold, when the order-reject rate spikes above a circuit-breaker level, or when a market data feed is lost with open positions. It can also be triggered manually via the Admin UI. Once active, KillSwitch rejects every incoming OrderIntent without exception until a manual reset is performed (if require_manual_reset=true) or the trigger condition clears. It does not modify orders — it only blocks them entirely.
Guardrail
General live
1.4
Risk
LIVE
LiquidityGuard reference
LiquidityGuard prevents strategies from placing orders that would consume too much of the visible order-book depth on a given market. It checks book depth, spread, and top-of-book freshness on every OrderIntent and either approves, downsizes, or rejects the order. It cannot change the market, the direction, or the strategy intent — only the size and the timing of execution.
Guardrail
General live
1.3
Risk
LIVE
OracleRiskMonitor reference
OracleRiskMonitor watches the UMA Optimistic Oracle queue for proposals and active disputes on markets where open positions exist. When a market enters a resolution proposal or a dispute window, the bot can block new orders on that market, require reduced size, or flag a position for review. It protects against the scenario where a trade is submitted into a market moments before a contested resolution flips the outcome. It never overrides the strategy intent or changes the direction of an order — it only controls whether and how much the order is permitted to proceed.
Guardrail
General live
1.1
Risk
LIVE
v3.5 · wired
PortfolioGuard reference
PortfolioGuard enforces account-wide exposure limits across every running strategy simultaneously. It tracks aggregate notional, rolling 24-hour drawdown, per-market concentration, and correlated-cluster concentration. When an incoming order would breach any of these limits, it is either downsized to the safe remaining budget or rejected outright. PortfolioGuard does not change the strategy intent, the market, or the direction — it only sets the maximum size an order is allowed to carry.
Guardrail
General live
1.8
Risk
LIVE
v3.5 · wired
ComplianceGate
ComplianceGate enforces Polymarket's terms-of-service access policy on every OrderIntent before it reaches execution. It validates (1) that the originating wallet has completed Polymarket onboarding, (2) that the user's jurisdiction is not on the blocked list, (3) that the wallet address does not appear on OFAC or other configured sanctions lists, and (4) that the target market is eligible for trading (not restricted by category policy). When any check fails the order is rejected outright; for geopolitical markets the bot applies NegRisk-aware category rules before passing. ComplianceGate is fail-closed: any inability to verify policy results in a hard reject.
Guardrail
General live
1.6
Risk
LIVE
InventoryUnwinder
InventoryUnwinder detects when a position has breached its concentration or capital limit — either because an OrderIntent would push it over, or because an existing position is already over the limit (e.g. after a parameter change or strategy crash). When a breach is detected it generates unwind OrderIntents targeting the source bot, using the NegRiskAdapter on Polygon for negRisk markets, and routes them back into the execution pipeline. It can also hard-reject incoming intents that would worsen an already-breached position. Builder codes from the original strategy are preserved on unwind intents for attribution. Fail-closed: if position data is unavailable, all new intents for the affected market are rejected.
Guardrail
General live
1.5
Risk
LIVE
RateLimitGovernor
RateLimitGovernor prevents the system from exceeding Polymarket's CLOB order send-rate limits at both the per-market and per-account levels. It reads live rate-limit headers from CLOB responses (X-RateLimit-Remaining, X-RateLimit-Reset), maintains sliding-window counters, and either delays (reshapes) or rejects OrderIntents when the remaining budget falls below configured thresholds. Cancel and risk-flatten requests always receive priority allocation over new open orders. The bot is fail-closed: if rate-limit state cannot be determined, new order intents are rejected until state is re-established.
Guardrail
General live
1.7
Risk
BETA
BlacklistKeeper
BlacklistKeeper maintains a dual-registry of banned market condition IDs and banned counterparty wallet addresses. On every OrderIntent it checks both registries and hard-rejects any intent whose target market or counterparty appears on either list. The bot also monitors for ambiguity signals (undefined resolution sources, prior dispute history, time-to-resolution below threshold) and rejects structurally hostile markets before execution. It is fail-closed: if the registry cannot be read, the intent is rejected.
Guardrail
Limited live
1.10
Risk
PLANNED
CapitalAllocator
CapitalAllocator carves the user's total risk budget across active strategies and refuses new orders that would cause any strategy slice or the aggregate portfolio to exceed its configured allocation. It emits a RESHAPE constraint when a downsize is possible, and HARD_REJECT when the budget is exhausted.
Guardrail
Planned
1.11
Risk
PLANNED
CorrelationShockGuard
CorrelationShockGuard monitors the rolling pairwise return correlation of open positions and blocks new orders when the portfolio correlation exceeds the configured ceiling. It detects sudden hidden correlation shocks where previously independent markets begin resolving together, increasing tail risk beyond what the capital model assumes.
Guardrail
Planned
1.14
Risk
PLANNED
FeeAndGasGuard
FeeAndGasGuard estimates the total transaction cost (CLOB maker/taker fee plus Polygon gas) for a proposed order and rejects or downsizes it when the cost-to-edge ratio exceeds the configured ceiling. It prevents strategies from placing orders where fee drag exceeds the expected edge, turning a positive-expected-value intent into a negative-EV execution.
Guardrail
Planned
1.16
Risk
PLANNED
ManualOverrideAuditor
ManualOverrideAuditor intercepts every request to bypass or adjust a guardrail, enforces a rate limit on overrides per time window, requires a non-empty justification string, and emits an immutable RiskVote audit record for every approved or rejected override attempt. It ensures that manual guardrail bypasses cannot occur silently and that every override is visible to the risk team.
Guardrail
Planned
1.17
Risk
PLANNED
v3.5 · wired
MarketHaltDetector
Watches for market-level halt conditions across Polymarket — wide-spread blowouts, missing best bid/ask, locked or crossed books, and sudden order-rate collapse. When any halt condition fires, MarketHaltDetector quarantines the affected market_id so no new OrderIntent for that market can pass the Risk pipeline. It does not pause the whole system — only the affected market. Cleared automatically once conditions normalise for a configurable cool-off window, or manually via the Admin UI.
Guardrail
Spec ready
1.12
Risk
PLANNED
ModelDriftMonitor
ModelDriftMonitor flags strategies whose live behaviour has decoupled from their backtest distribution. It computes a drift score by comparing the rolling distribution of live signals or fill prices against the expected backtest baseline and hard-rejects new orders when drift exceeds the configured ceiling, preventing a degraded model from continuing to place orders.
Guardrail
Planned
1.19
Risk
PLANNED
SelfTradeWashGuard
Prevents Polytraders from trading against itself. If an outgoing OrderIntent would cross with one of our own resting orders on the same market and outcome, SelfTradeWashGuard rejects it (full overlap) or downsizes it (partial overlap). This protects against wash-trade exposure and inadvertent self-fills.
Guardrail
Spec ready
1.15
Risk
PLANNED
v3.5 · wired
SettlementExposureGuard
SettlementExposureGuard tracks how much pUSD is committed in markets that share the same UMA resolution window and blocks or downsizes new orders that would push the concurrent settlement exposure above the configured ceiling. It prevents the user from having more equity at risk in a single 2-hour UMA settlement window than they can afford to lose if all markets in that window resolve adversely.
Guardrail
Planned
1.18
Risk
PLANNED
v3.5 · wired
StaleBookGuard
Rejects any OrderIntent priced against an order book older than the configured staleness threshold. The book may look healthy, but if its last update is too old, prices have almost certainly moved. StaleBookGuard fails closed: if it cannot prove the book is fresh, it rejects.
Guardrail
Spec ready
1.9
Risk
PLANNED
StrategySuitabilityGate
StrategySuitabilityGate screens every OrderIntent against the user's declared experience tier and capital envelope, blocking strategy types that exceed the user's configured risk profile. It prevents novice-tier users from executing advanced multi-leg or high-leverage strategies without explicit elevation.
Guardrail
Planned
1.13
Risk
PLANNED
TailLossSimulator
TailLossSimulator applies scripted adverse shock scenarios to the combined portfolio (open positions plus the proposed order) and rejects or downsizes the order if the simulated tail loss exceeds the configured maximum. It acts as a pre-trade stress test, replacing post-hoc margin calls with a forward-looking gate.
Guardrail
Planned
Security · 9 in this class
5.8
Security
PLANNED
ContractAddressGuard reference
ContractAddressGuard refuses to allow a signature or on-chain submission against any contract address that is not present on the committed CLOB V2 allow-list. It enforces the EIP-712 domain separator match against the expected V2 domain and rejects any order that targets a V1 Exchange address. This is a hard security control for the V1-to-V2 migration and must not be loosened without an explicit signed-off admin change. It cannot modify orders — it only approves or rejects.
Guardrail
Ready to build
5.2
Security
PLANNED
AllowanceMonitor
Track ERC-20 allowances per token and contract; alert and shrink to a tight ceiling on idle.
Guardrail
Spec started
5.7
Security
PLANNED
ChainStateVerifier
Cross-check every order’s chain-derived inputs (nonce, balance, allowance) against multiple sources before signing.
Guardrail
Spec started
5.5
Security
PLANNED
KeyRotationReminder
Nag the user to rotate signing keys on a schedule; prevent key reuse across environments.
Guardrail
Spec started
5.6
Security
PLANNED
RPCFailoverManager
Probe RPC providers continuously and fail over before a stale endpoint poisons our chain view.
Guardrail
Spec started
5.4
Security
PLANNED
SessionKeyManager
Issue, scope, and expire short-lived session keys so strategies can sign without re-prompting on every order.
Guardrail
Spec started
5.3
Security
PLANNED
SignaturePreviewer
Render a plain-English summary of every EIP-712 signature before the wallet shows the modal.
Guardrail
Spec started
5.9
Security
PLANNED
WalletFundingGuard
Rejects any OrderIntent whose required pUSD collateral cannot be covered by the funded balance of the assigned wallet, including a configurable buffer. Prevents the system from submitting orders that would fail at the exchange for insufficient funds, which burns latency and creates noisy reject metrics.
Guardrail
Spec ready
5.1
Security
PLANNED
WalletPermissionGuard
Enforce that each strategy can only call the wallet methods the user has explicitly granted, scoped per session.
Guardrail
Spec started