OpenParable
Skip to content
← Back to skills

Exiting an Alphapoly Position

Apps & Automation

Sells or merges tokens from an open alphapoly position via CLOB or on-chain merge. Use when exiting, cleaning up, or managing an open position. Also use when the user says "sell", "close position", "cash out", "redeem", "exit", "clear tokens", or wants to get out of a trade.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/chainstacklabs/polymarket-alpha-bot/blob/HEAD/.claude/skills/alphapoly-exit-position/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/exiting-an-alphapoly-position, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Exiting an Alphapoly Position

Prerequisites

  • Backend running on http://localhost:8000
  • Wallet unlocked (action endpoints return HTTP 401 if not)

Flow

  1. List positions — GET /positions (or ?state=active to filter)
  2. Pick a position — note the position_id
  3. Choose action based on state:
SituationAction
Fully close a positionExit — orchestrated merge + sell (preferred)
Sell one specific sideSell — token_type: "wanted"
Clear failed entry leftoversSell — token_type: "unwanted"
Market resolved, hold both outcomesMerge
State is pendingRetry
  1. Confirm — require explicit user approval before executing any sell or merge
  2. Execute — see quick reference below
  3. Verify — re-fetch position; full exit shows state: "complete"

Quick Reference

# Fully exit (orchestrated merge + sell) — preferred
POST /positions/{id}/exit
{"slippage": 10}

# Sell a side
POST /positions/{id}/sell
{"side": "target", "token_type": "wanted"}

# Merge resolved pair
POST /positions/{id}/merge
{"side": "target"}

# Retry pending
POST /positions/{id}/retry

# Check result
GET /positions/{id}

token_type Explained

When entering, the system splits pUSD into YES+NO tokens and sells the side you don't want via CLOB to recover partial cost.

  • "wanted" — the token you hold as your position (normal exit)
  • "unwanted" — residual from a failed or partial entry sell (cleanup)

Typical Exit Flow

GET  /positions                          # find position_id
POST /positions/{id}/sell                # {"side":"target","token_type":"wanted"}
POST /positions/{id}/sell                # {"side":"cover","token_type":"wanted"}
GET  /positions/{id}                     # confirm state == "complete"

If unwanted balances remain after entry: POST /positions/{id}/retry

If market resolved and holding both outcomes:

POST /positions/{id}/merge   # {"side":"target"}
POST /positions/{id}/merge   # {"side":"cover"}

For full response schemas and error codes, see api-reference.md.

Safety Rules

These operations involve real tokens on Polygon — sells are irreversible once the CLOB order fills, and merges burn tokens permanently.

  • Always list positions (GET /positions) before acting — never guess a position_id
  • Never execute a sell or merge without explicit user confirmation
  • After any sell/merge, re-fetch the position to verify the new state
  • If a sell returns filled: false, surface it — the user still holds the tokens