Skip to content

[new-plugin] otto-mispricing-assistant v0.1.0#369

Closed
Vb6Z wants to merge 1 commit intookx:mainfrom
useOttoAI:submit/otto-mispricing-assistant
Closed

[new-plugin] otto-mispricing-assistant v0.1.0#369
Vb6Z wants to merge 1 commit intookx:mainfrom
useOttoAI:submit/otto-mispricing-assistant

Conversation

@Vb6Z
Copy link
Copy Markdown

@Vb6Z Vb6Z commented Apr 27, 2026

Summary

Otto Mispricing Assistant v0.1 — Polymarket scanner that ranks active prediction markets by divergence between implied probability and Otto AI's news + KOL + funding signals, then trades one market at a time only after explicit per-trade user confirmation. Submitted for the OKX Plugin Store Developer Challenge S1.

  • Risk tier: advanced — automated trading
  • Basic Skill dependency: polymarket-plugin (every Polymarket action flows through it; no raw CLOB or EIP-712 signing)
  • Signal source: https://signals.useotto.xyz/v1/{news-flash,kol-sentiment,funding-extremes} — public, keyless, IP-rate-limited
  • Strategy attribution: every live order passes --strategy-id otto-mispricing-assistant

This is a scanner, not a bot. No batch execution, no autonomous trading, no fire-and-forget. Each trade requires the user to type "confirm" at Step 7 of the Skill protocol. The optional scripts/bot.py is notify-only and never trades — it logs candidates the user can paste back into the reactive Skill flow.

Decision flow (9 steps, single-market-per-intent)

  1. Polymarket readiness check
  2. Pull Otto signals (news-flash + KOL + funding) for matching topics
  3. List active Polymarket markets in crypto/macro/elections categories
  4. Compute mispricing score: |otto_estimate - implied_prob| × signal_confidence × liquidity_score
  5. Present ranked top-5 candidates to user above MIN_EDGE_PCT = 0.08 threshold
  6. User picks one market; Skill re-quotes mid-price right before confirmation (catches late drift)
  7. Mandatory user "confirm" gate with full pre-trade summary (size, edge at re-quote, session budget remaining)
  8. Place single polymarket-plugin buy with strategy-id attribution
  9. Report and remind user about prediction-market resolution risks

Advanced-tier safeguards (lines 1501-1510)

  • Dry-run default. DRY_RUN = True. Live orders require both DRY_RUN = False AND per-trade --confirm.
  • Per-trade hard cap. MAX_TRADE_SIZE_USD = 50 — no single trade above this regardless of user request.
  • Per-session hard cap. MAX_SESSION_BUDGET_USD = 200 — cumulative trades refused once budget is spent.
  • Edge threshold. Markets below 8 percentage points filtered out.
  • Resolution-window filter. RESOLUTION_WINDOW_DAYS = 14 — long-dated markets filtered (Otto's edge estimates degrade further out).
  • Liquidity + volume floors. MIN_LIQUIDITY_USD = 5,000, MIN_VOLUME_USD = 1,000 (24h).
  • Risk disclaimer. Prominent in SKILL.md Security Notices section, including resolution-oracle risk and "mispricings can persist or widen" caveats.
  • Geofencing respect. Skill aborts on region_blocked and refuses to suggest workarounds.
  • Never bypasses Polymarket Basic Skill. All CLOB interaction goes through polymarket-plugin.

Pre-Submission Checklist (lines 1467-1486)

  • plugin.yaml, .claude-plugin/plugin.json, and SKILL.md all present
  • name is lowercase with hyphens only (otto-mispricing-assistant, 25 chars)
  • version matches across all three files (0.1.0)
  • author.github set to useOttoAI
  • license SPDX identifier (MIT)
  • category is trading-strategy
  • api_calls: signals.useotto.xyz, gamma-api.polymarket.com
  • SKILL.md frontmatter has name, description, version, author
  • SKILL.md includes Overview / Pre-flight Checks / Commands / Error Handling / Security Notices
  • No hardcoded API keys or credentials
  • No pre-compiled binary files (Python stdlib only)
  • LICENSE file present (MIT)
  • PR title: [new-plugin] otto-mispricing-assistant v0.1.0
  • PR branch: submit/otto-mispricing-assistant
  • PR only modifies files inside skills/otto-mispricing-assistant/
  • Trading plugin: risk disclaimer included
  • Trading plugin: dry-run / paper-trade mode supported as default

Test plan

  • CI lint + automated checks pass
  • Two-reviewer human review per Advanced-tier requirement
  • Verify SKILL.md trigger phrases route correctly in Onchain OS Agentic Wallet
  • Verify the per-trade $50 + per-session $200 caps clamp user requests
  • Verify mid-price re-quote happens between rank-step and confirm-step
  • Verify bot.py never calls polymarket-plugin buy (notify-only)

Notes for reviewers

  • Differentiator from existing Polymarket Skills. This is a "scanner with explicit user confirmation" — not a Resolution Harvester / autonomous trader. Each candidate is presented; the user picks one. We deliberately reframed away from statistically-aggressive language to make the safety boundary explicit.
  • Author identity. author.github is useOttoAI (Otto AI org). Fork branch lives at Vb6Z/plugin-store due to API restrictions on org-scope forks.
  • Signal feed. Live at signals.useotto.xyz/v1/news-flash and /kol-sentiment (200 OK on health). News-flash producer currently emits synthetic severity (default 3) and tags (default ['macro']); the Skill flags these as status: degraded and only uses news as confirmation input — never as sole trade trigger.
  • Sibling Skills. Two more Otto Strategy Skills (otto-alpha-sniper, otto-kol-follow) submitted as separate PRs in the past 1-24h.

@Noah3595
Copy link
Copy Markdown
Collaborator

Plugin Store DApp Popularity Contest

  • 💰 Prize Pool: 17,700 USDC
  • 📅 Period: Apr 23 – May 7, 23:59 (UTC+8)
  • 🧩 Featured Basic Skills: Polymarket Plugin | Hyperliquid Plugin

About the Contest

Plugin Store is the decentralized agent plugin marketplace on Onchain OS.

This contest focuses on two trading-related Basic Skills in Plugin Store — the Polymarket Plugin and the Hyperliquid Plugin — and encourages developers to build more high-quality strategy Skills around them.

Contest Rules

  • Strategy Skills must be built on top of the Polymarket Plugin or the Hyperliquid Plugin.
  • Each strategy Skill is ranked across three independent dimensions: trading volume, number of trades, and number of unique trading addresses.

Scoring Rules

  • Stats are aggregated per Skill. If you submit multiple Skills, each one is scored and competes independently.
  • Only trades initiated through Onchain OS and executed via the Polymarket Plugin or Hyperliquid Plugin are counted. Trades that bypass the Basic Skill are excluded.
  • Leaderboards are synced daily in the official community. Final standings are locked at May 7, 23:59 (UTC+8).

Four Steps to Participate

  1. Open Plugin Store and install the Polymarket Plugin or the Hyperliquid Plugin.
  2. Build your own strategy on top of the Plugin.
  3. Use your strategy — the three metrics will be tracked automatically.
  4. Submit the entry form: https://forms.gle/gFCef1Y4qCv49L2z7

Three Leaderboards · 5,900 USDC each · 17,700 USDC in total

Trading Volume | Number of Trades | Unique Trading Addresses

  • Top 1 — 1,300 USDC
  • Top 2 — 800 USDC
  • Top 3–5 — 600 USDC × 3
  • Top 6–10 — 400 USDC × 5

A single Skill can win on multiple leaderboards. All prizes are paid in USDC.

⚠️ Red Lines

Sybil attacks · Plagiarism · Malicious code

The contest follows fair-play principles. Any confirmed violation will result in immediate removal from the leaderboards.


⚠️ Skills/Plugins not officially listed on OKX Plugin Store have not been reviewed by OKX. Please be aware of the risks when installing or running third-party Skills.

@Noah3595 Noah3595 closed this Apr 28, 2026
@Vb6Z
Copy link
Copy Markdown
Author

Vb6Z commented Apr 30, 2026

Resubmitting after Google Form submission (https://forms.gle/gFCef1Y4qCv49L2z7).

v0.1.1 changelog:

  • Added strategy-plugin metadata per FOR-DEVELOPERS.md (dependent_plugin, risk_level: advanced, supported_venues)
  • Threshold tunes calibrated against the live signal feed at signals.useotto.xyz (kol_count, confidence, signal age)
  • Versions bumped to 0.1.1 across plugin.yaml + plugin.json + SKILL.md frontmatter

Stress test: all 3 skills exercised end-to-end against live data, verified with real hyperliquid-plugin order previews. Decision logs at https://github.com/Vb6Z/OttoWallet/blob/development/services/otto-skills/stress_test.py.

Happy to file fresh PRs if reopening these isn't the right workflow — just let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants