All Agent Setups
BTC/ETH tactical tradingMedium complexityActive traders

Hermes + CoinGlass + RiskState + CoW

Derivatives-informed trading agent with funding rate, open interest, and liquidation context. RiskState gates position size and leverage based on real-time market regime. CoW Swap executes with MEV protection.

How it works

1

CoinGlass provides market intelligence

Your agent queries CoinGlass for real-time market data — funding rates, open interest, liquidation maps, CVD, and ETF flows. Hobbyist or starter tier.

2

RiskState gates the decision

Before any execution, your agent calls POST /v1/risk-state. The response contains max_size_fraction (position ceiling), allowed_actions (what’s permitted), and structural_blockers (hard stops). If blockers exist, the agent halts. Otherwise, it sizes the trade within the policy limit. 30+ signals scored in real-time, 60-second cache, SHA-256 audit hash.

3

CoW Swap executes within limits

The trade is submitted to CoW Swap with MEV protection via batch auctions. Surplus goes to the trader, not the MEV bot. Position size never exceeds what RiskState permitted.

Integration code

Copy this into your project. Replace the API keys with your own.

hermes_riskstate_cow.py
import requests

# 1. Get market intelligence from CoinGlass
coinglass = requests.get(
    "https://open-api-v3.coinglass.com/api/futures/funding-rate",
    headers={"coinglassSecret": COINGLASS_KEY},
    params={"symbol": "BTC"}
).json()

# 2. Get risk policy from RiskState
policy = requests.post(
    "https://riskstate.netlify.app/v1/risk-state",
    headers={"Authorization": f"Bearer {RISKSTATE_KEY}"},
    json={"asset": "BTC", "include_details": True}
).json()

max_size = policy["exposure_policy"]["max_size_fraction"]
leverage_ok = policy["exposure_policy"]["leverage_allowed"]
blockers = policy["risk_flags"]["structural_blockers"]

# 3. Enforce governance before execution
if blockers:
    print(f"BLOCKED: {blockers}")
elif max_size < 0.15:
    print("Policy level BLOCK — reduce only")
else:
    # 4. Execute via CoW Swap (MEV-protected)
    trade_size = portfolio_value * max_size
    cow_url = f"https://swap.cow.fi/#/1/swap/DAI/cbBTC?sellAmount={trade_size}"
    print(f"Execute: {cow_url}")

What your agent receives from RiskState

Every call to /v1/risk-state returns these three blocks. Your agent reads them in order.

Exposure Policy

Binding
  • max_size_fraction — hard ceiling
  • leverage_allowed — boolean
  • allowed_actions — enum list
  • blocked_actions — enum list

Market Intelligence

Context
  • tactical_state — LEAN BULL, etc.
  • market_regime — TREND, RANGE...
  • binding_constraint — source + why
  • risk_flags — blockers + risks

Auditability

Trust
  • policy_hash — SHA-256
  • confidence_score — 0-100
  • data_sources — per-signal
  • ttl_seconds — cache hint

Start building

Get an API key in under a minute. Free during beta.