Use when an agent needs a bounded market-aware scan of one Polymarket or prediction-market event to fetch current prices, do quick subject research, estimate resolution likelihoods, and surface suspected 15+ point mispricings with candidate trade terms for PMKNB.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pm-mispricing-analysis:pm-mispricing-analysisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill for a cheaper, shorter, market-aware pass over one PM event. The goal is not to build the full world model. The goal is to decide whether any child market appears mispriced by enough to deserve operator attention.
Use this skill for a cheaper, shorter, market-aware pass over one PM event. The goal is not to build the full world model. The goal is to decide whether any child market appears mispriced by enough to deserve operator attention.
Default threshold: surface only suspected mispricings of 15 points or more between current executable market price and the agent's quick resolution estimate.
This skill may use market prices. It is the opposite of price-blind deep analysis. It should still use evidence, exact instrument identity, and resolution rules before producing a candidate trade.
Analyze one PM event at a time. A PM event may contain many child markets; each child market gets its own row.
Use this skill when:
Do not use this skill for:
Expected inputs:
target: PM event URL, PMKNB situation id, venue event id, or market-question set.as_of: analysis timestamp.If current price cannot be fetched from a trusted provider, return status: blocked with blocked_reason: market_provider_unavailable. Do not invent prices from memory or stale screenshots.
Verify event and instrument identity.
blocked or watch_only.Pull current market state.
snapshot_as_of.Do bounded subject research.
Estimate resolution likelihood.
Compare to market price.
yes_edge_points = estimated_resolution_likelihood_0_100 - current_yes_price_0_100.no_edge_points = (100 - estimated_resolution_likelihood_0_100) - current_no_price_0_100.no_candidate.Produce candidate trade terms.
YES when YES appears underpriced; NO when YES appears overpriced.max_entry_price_0_100 should preserve the threshold edge:
estimated_resolution_likelihood_0_100 - threshold_points.(100 - estimated_resolution_likelihood_0_100) - threshold_points.This skill is intentionally bounded. Prefer useful triage over exhaustive certainty.
Minimum evidence gates for a surfaced candidate:
threshold_points;If those gates fail, produce watch_only, blocked, or no_candidate.
Large apparent edge is not enough. Ask why the market has not already corrected.
Check:
Down-rank or reject candidates that rely on obvious public reasoning with no source advantage.
Emit concise readable analysis plus structured fields.
schema_version: pm_mispricing_analysis.v1
status: completed | blocked | skipped | failed
analysis_kind: mispricing_analysis
threshold_points: 15
as_of: "ISO-8601 timestamp"
target:
situation_id:
platform: polymarket | kalshi | other
event_url:
event_title:
event_slug:
event_ticker:
market_snapshot:
provider:
snapshot_as_of:
freshness_status: fresh | stale | unavailable
notes:
event_summary:
short_take:
main_entities: []
key_history: []
current_state:
resolution_notes:
market_rows:
- market_question_id:
instrument_id:
platform:
market_url:
market_title:
outcome_label:
side_evaluated: YES
resolution_predicate:
rules_url:
resolver_or_source:
deadline:
current_yes_price_0_100:
current_no_price_0_100:
executable_price_basis: best_ask | midpoint | last_trade | provider_quote | unknown
spread_points:
depth_notes:
estimated_resolution_likelihood_0_100:
confidence: low | medium | high
yes_edge_points:
no_edge_points:
disposition: candidate | no_candidate | watch_only | blocked
reason:
why_market_might_be_wrong:
why_this_might_be_false:
source_ids: []
claim_ids: []
next_checks: []
mispricing_candidates:
- candidate_id:
market_question_id:
instrument_id:
side: YES | NO
current_entry_price_0_100:
max_entry_price_0_100:
estimated_resolution_likelihood_0_100:
edge_points:
threshold_points: 15
confidence: low | medium | high
horizon: to_resolution | catalyst | timeboxed
exit_reason:
invalidation:
liquidity_caveat:
basis_record_ids: []
proposed_record:
pmknb_type: forecast
fields:
thesis_type: settlement_value
instrument_id:
side:
as_of:
current_price:
fair_value:
horizon:
max_entry:
exit_plan:
invalidation:
confidence:
basis_record_ids: []
report:
pmknb_type: report
fields:
schema_version: pm_mispricing_analysis.v1
report_kind: mispricing_analysis
title:
situation_id:
context_mode: market
format_id: pm.market.report.mispricing_analysis.v1
body_markdown:
sections:
event_summary:
market_table:
candidate_trades:
caveats:
next_checks:
status: draft | current
apply_batch:
records:
- kind: source | claim | report | proposal | run_trace
id:
client_id:
qualifiers:
pmknb_type:
fields: {}
links: []
patches: []
run_trace:
run_type: market_analysis
status: completed | blocked | skipped | failed
Use existing PMKNB record types. Do not introduce a new canonical mispricing record type unless the user explicitly approves it later.
For large sweeps, prefer:
report per event with report_kind="mispricing_analysis";proposal per surfaced candidate trade, where proposed_record.pmknb_type="forecast";source only when it supports a candidate or audit trail;run_trace for the event pass.Write a direct forecast only if the runner explicitly permits direct forecast writes and all gates pass. Otherwise create a proposal. Cheap or uncertain scans should not silently enter canonical forecasts.
Do not call knb apply or knb add from inside a PMKNB runner. Emit the apply batch for the runner to commit.
Keep the report short:
If nothing clears the threshold, say so plainly and preserve the useful scan log.
Return blocked or watch_only instead of a candidate when:
threshold_points at the proposed max entry.Never produce orders, execution instructions, wallet sizing, or automated trade commands.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub ratacat/ratacats-skills --plugin pm-mispricing-analysis