Risk Score Methodology

Collar Guardrail · Version 1.0 · Last updated 2026-10-06 · Applies to evaluate_trade, evaluate_trade_paid, and the REST analyze endpoints.

1. What the score is

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 bandDecisionMeaning
0 – 30allow Policy passed. Safe to execute.
31 – 70warn Soft violation. May proceed; reasons are advisory.
71 – 100deny Hard violation. Do not execute.

These bands are indicative. Individual categories can force a decision outside its band — see §5, Hard Overrides.

2. Categories

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.

2.1 Registry & identity — max 30

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.

2.2 Contract safety — max 30

check_token_safety returning severity=danger forces an auto-deny on the next evaluate_trade for the same contract, regardless of the other categories.

2.3 Price & market data quality — max 15

unavailable price is a hard stop for non-trivial notional.

2.4 Wallet behavior — max 15

2.5 Trade parameters — max 10

3. How the score becomes a decision

  1. Each category produces an integer in [0, max].
  2. The score is the sum, capped at 100.
  3. The score maps to allow / warn / deny via the bands in §1.
  4. Hard overrides (§5) are applied last.
  5. If a hard override fires, the decision is deny and the score is set to the maximum of the override's category.

4. ADVISORY reasons

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.

5. Hard overrides

These bypass the score bands and force deny:

6. What we do not disclose

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.

7. Reproducibility

Every decision is written to the audit trail with:

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.

8. Changelog


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