evaluate_trade, evaluate_trade_paid,
and the REST analyze endpoints.
The risk score is an integer from 0 to 100. 0 means “no risk factors found”; 100 means “hard-blocked”. It is a deterministic function of the inputs below — the same request produces the same score given the same on-chain and registry state. There is no machine-learning model in the loop.
| Score band | Decision | Meaning |
|---|---|---|
| 0 – 30 | allow | Policy passed. Safe to execute. |
| 31 – 70 | warn | Soft violation. May proceed; reasons are advisory. |
| 71 – 100 | deny | Hard violation. Do not execute. |
These bands are indicative. Individual categories can force a decision outside its band — see §5, Hard Overrides.
The score is the sum of five independent categories. Maxima are listed. Exact per-signal weights inside each category are internal and may change without notice.
contract_address present in the official Robinhood
Chain asset registry?asset?
A mismatch between asset and contract_address
is treated as a suspected fake-token attempt and is an auto-deny
regardless of the rest of the score.
check_token_safety returning severity=danger
forces an auto-deny on the next
evaluate_trade for the same contract, regardless of the
other categories.
oracle > uniswap_v4 >
fallback_default > unavailable.
unavailable price is a hard stop for non-trivial notional.
max_slippage_bps vs the asset's typical spread.buy / sell) asymmetry.[0, max].allow / warn /
deny via the bands in §1.deny and the
score is set to the maximum of the override's category.
Any reason string prefixed with ADVISORY: is
non-blocking context. It appears on allow
and warn decisions and does not change the score. The
absence of an ADVISORY: prefix means the reason inherited
its weight from the overall decision.
These bypass the score bands and force deny:
asset and contract_address mismatch
(suspected fake token).check_token_safety returned severity=danger
for this contract within the recent window.price_source=unavailable for a notional above the
tier's advisory floor.error key:
no verdict was produced. Treat it as a hard stop.These are withheld because publishing them enables adversarial tuning: a bot that knows the exact weights can structure trades that score just under a band. The categories above are stable; the weights are not.
Every decision is written to the audit trail with:
audit_hash — SHA-256 over the decision payload.audit_seq — monotonic sequence number.request_id — echoed idempotency key when supplied.
verify_audit_trail(wallet) recomputes each record's hash
and validates the chain. A healthy chain proves no record was edited,
deleted, or reordered after the fact.
Collar is independent third-party infrastructure. Not built, operated, or endorsed by Robinhood. COLR is a separate token, not affiliated with Robinhood Markets, Inc.
Machine-readable version:
/.well-known/methodology.md