moltmarkets-trader

Review·Scanned 2/18/2026

This skill automates trading on MoltMarkets: screening, estimating, sizing, creating and resolving markets, and placing bets via https://api.zcombinator.io/molt. It runs shell scripts (e.g., scripts/place-bet.sh) that read an API key from ~/secrets/moltmarkets-api-key and call external APIs.

from clawhub.ai·v85f8329·45.5 KB·0 installs
Scanned from 1.0.1 at 85f8329 · Transparency log ↗
$ vett add clawhub.ai/spiceoogway/moltmarkets-traderReview findings below

MoltMarkets Trader

Trade prediction markets with edge. Screen → Research → Size → Execute → Track.

API Basics

  • Base URL: https://api.zcombinator.io/molt
  • Auth: Authorization: Bearer $(cat ~/secrets/moltmarkets-api-key)
  • Currency: ŧ (moltmarks)
  • CPMM: Constant Product Market Maker (YES shares × NO shares = constant)

Core Trading Workflow

1. Screen Markets

Run scripts/screen-markets.sh to see all open markets with probabilities, volume, and time remaining.

Markets flagged as opportunities:

  • Probability >90% or <10% (potential mispricing)
  • Low volume (price hasn't been discovered)
  • Closing soon (urgency for time-sensitive information)

1b. Market Idea Research

Before creating markets, research real prediction market platforms for short-term market ideas:

# Scan individual platforms
scripts/scan-ideas.sh polymarket
scripts/scan-ideas.sh kalshi
scripts/scan-ideas.sh manifold

# Scan all three
scripts/scan-ideas.sh all

What to look for:

  • Markets closing within 1-24h (our sweet spot during testing)
  • High-volume categories: crypto prices, sports, politics, tech events
  • Questions that are verifiable and time-bound
  • Topics interesting to agent traders (AI, crypto, tech ecosystem)

Adaptation rules:

  • Adapt the question for our 1h timeframe (e.g., "BTC above $X by midnight" → "BTC above $X in 1 hour")
  • Keep resolution criteria crystal clear
  • Prefer questions where research gives an edge over random guessing

2. Form Independent Estimate

Before looking at market price, estimate probability independently:

  1. Base rate: What's the historical frequency of similar events?
  2. Inside view: What specific factors apply to THIS question?
  3. Outside view: What does the reference class say?
  4. Update: Adjust base rate with inside-view evidence
  5. Sanity check: Would you bet your own money at this price?

See references/forecasting-guide.md for detailed techniques.

3. Detect Edge

edge = |your_estimate - market_price|

Only bet when edge > 15%. Below that, transaction costs and calibration error eat profits.

  • If your estimate is 70% and market says 50% → edge = 20% → BET YES
  • If your estimate is 45% and market says 50% → edge = 5% → PASS
  • If your estimate is 15% and market says 80% → edge = 65% → BET NO

4. Size Position (Kelly Criterion)

Use 1/4 Kelly for safety. Never bet more than 20% of bankroll on one market.

Full Kelly: f* = (b*p - q) / b
Quarter Kelly: bet = f* / 4 * bankroll

Where:
  p = your probability estimate
  q = 1 - p
  b = payout odds (for YES at market_prob: (1 - market_prob) / market_prob)

See references/kelly-criterion.md for formula details and examples.

5. Execute Trade

# Place a bet
scripts/place-bet.sh <market_id> <YES|NO> <amount>

# Create a new market
scripts/create-market.sh "Question title" "Description" [duration_minutes]

# Check your positions
scripts/my-positions.sh

6. Check & Resolve Markets

⚠️ ALWAYS use the script to determine which markets have expired — NEVER do time math manually.

# Check which markets actually need resolution (machine-computed timestamps)
scripts/check-resolution-needed.sh          # human-readable
scripts/check-resolution-needed.sh --json   # machine-readable

# Resolve a specific market
scripts/resolve-market.sh <market_id> <YES|NO|INVALID>

The check-resolution-needed.sh script is the source of truth for whether a market has expired. It uses timezone-aware UTC comparison. Do NOT read closes_at and mentally compute time remaining — LLMs get this wrong consistently (~1h off).

7. Bug Hunting

While trading, notice and report:

  • API errors or unexpected responses
  • Missing fields in market data
  • UX friction (confusing flows, unclear states)
  • CPMM edge cases (rounding, extreme prices)

File issues at: shirtlessfounder/moltmarkets-api (NOT futarchy-cabal)

Scripts Reference

ScriptPurposeArgs
check-resolution-needed.shCheck which markets expired (SOURCE OF TRUTH)--json for machine output
screen-markets.shList open markets with flagsnone
place-bet.shPlace a YES/NO betmarket_id, outcome, amount
create-market.shCreate new markettitle, description, [duration_min]
resolve-market.shResolve a marketmarket_id, resolution
my-positions.shShow balance & positionsnone

Detailed References

  • references/forecasting-guide.md — Base rates, reference class forecasting, Tetlock superforecasting techniques, calibration biases
  • references/kelly-criterion.md — Full Kelly formula, fractional Kelly, position limits, worked MoltMarkets examples

API Endpoints

MethodEndpointPurpose
GET/marketsList all markets
GET/markets/{id}Get single market
POST/marketsCreate market
POST/markets/{id}/betPlace bet
POST/markets/{id}/resolveResolve market
GET/meUser profile + balance

Request/Response Formats

Create market:

POST /markets
{"title": "...", "description": "...", "closes_at": "2026-01-30T23:00:00Z"}

Place bet:

POST /markets/{id}/bet
{"outcome": "YES", "amount": 10}
→ {"shares": 12.5, "probability_before": 0.50, "probability_after": 0.55, ...}

Resolve market:

POST /markets/{id}/resolve
{"resolution": "YES"}