← StrikerAPICONTENT HISTORY

Update to StrikerAPI

Snapshot Oct 30, 2026 · 00:06 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save StrikerAPI and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Converts soccer odds between American, decimal and fractional formats and removes the bookmaker margin from three-way (home/draw/away) markets to get no-vig probabilities, using proportional, power and Shin methods, plus two-way devigging for totals and handicaps. Use when the user asks about devigging, implied probability, overround, fair odds, no-vig lines, the draw's true price, or the favorite-longshot bias. Do not use for browsing current odds, see odds-explorer.",
  "included_files": [],
  "name": "odds-analysis",
  "skill_md_contents": "---\nname: odds-analysis\ndescription: \"Converts soccer odds between American, decimal and fractional formats and removes the bookmaker margin from three-way (home/draw/away) markets to get no-vig probabilities, using proportional, power and Shin methods, plus two-way devigging for totals and handicaps. Use when the user asks about devigging, implied probability, overround, fair odds, no-vig lines, the draw's true price, or the favorite-longshot bias. Do not use for browsing current odds, see odds-explorer.\"\nmetadata:\n  version: 1.0.0\n  author: StrikerAPI\n---\n\n# Odds Analysis\n\n> **Default data tool:** StrikerAPI (`strikerapi-tool`).\n> `get_odds` (5 credits for one match) returns each book's open and close with `close_prob`, the no-margin probabilities. `get_schedule` (2) returns a median line. For your own odds CSV the math below needs no credits.\n\n\n## When to Use\n\n- \"What is the true probability of the draw at +250?\"\n- \"Remove the vig from +290 / +250 / -118\"\n- Converting decimal 3.90 to American, or to a probability\n- Comparing a soft book against Pinnacle or an exchange\n- Working out how much margin a book charges\n\n## When NOT to Use\n\n- Browsing prices and finding the best one: `odds-explorer`\n- Model calibration: `probability-calibration`\n\n## Commands Available\n\n| Command | What It Does | Credits |\n|---------|-------------|---------|\n| `get_odds` | Per-book three-way prices, handicap, total, open and close, `close_prob` with `overround` | 5 (one match) |\n| `get_schedule` | Median line and raw `implied` for upcoming fixtures | 2 |\n| `get_line_movement` | Pre-kickoff snapshots, for devigging the open | 10 |\n\n## Commands That Do NOT Exist\n\n| Not Available | Use Instead |\n|--------------|-------------|\n| `get_fair_odds`, `get_no_vig_odds` | `close_prob` in `get_odds`, or compute below |\n| `get_implied_probability` | Compute with the formulas here |\n| `get_btts_odds`, `get_correct_score_odds` | Not available; only the three-way moneyline, goal handicap and total |\n\n## Conversion\n\n```\nAmerican +x  ->  decimal = 1 + x / 100            implied = 100 / (x + 100)\nAmerican -x  ->  decimal = 1 + 100 / x            implied = x / (x + 100)\ndecimal d    ->  implied = 1 / d\nfractional a/b -> decimal = 1 + a / b\n```\n\nExamples: `+290` is decimal 3.90 and implied 25.6%. `-118` is decimal 1.847 and implied 54.1%. Always say which format you are in; StrikerAPI returns American.\n\n## Three-Way Devigging\n\nTake implied probabilities `p_h`, `p_d`, `p_a`. Their sum `B` is above 1, and `overround = B - 1`.\n\n### 1. Proportional (multiplicative)\n\n```\nfair_i = p_i / B\n```\n\nFast and the default. It removes the same percentage from every outcome, which understates the favorite-longshot effect.\n\n### 2. Power\n\nFind the exponent `k` so that `sum(p_i ** k) = 1`, then `fair_i = p_i ** k`. It shrinks longshots more than proportional.\n\n### 3. Shin\n\nModels the margin as protection against a share `z` of insider money. Solve for `z` so the fair probabilities sum to 1:\n\n```python\nfrom math import sqrt\n\ndef shin(implied):\n    \"\"\"Shin devig for any number of outcomes. implied: list of raw implied probabilities.\"\"\"\n    B = sum(implied)\n    def fair(z):\n        return [(sqrt(z * z + 4 * (1 - z) * x * x / B) - z) / (2 * (1 - z)) for x in implied]\n    lo, hi = 0.0, 0.4\n    for _ in range(100):\n        z = (lo + hi) / 2\n        if sum(fair(z)) > 1:\n            lo = z\n        else:\n            hi = z\n    return fair(z), z\n```\n\nShin moves probability from longshots to favorites compared with proportional, and returns `z`, an estimate of the insider share, which behaves like a margin score.\n\n### 4. Additive\n\n`fair_i = p_i - (B - 1) / 3`. Can go negative on longshots. Do not use it on skewed markets.\n\n## Worked Example\n\n888sport's close for Crystal Palace v Arsenal, from `get_odds {\"game_id\": \"740968\"}`: home `+290`, draw `+250`, away `-118`.\n\n```\nimplied:      home 0.2564   draw 0.2857   away 0.5413     sum 1.0834  (overround 8.3%)\nproportional: home 0.2367   draw 0.2637   away 0.4996\nShin:         home 0.2307   draw 0.2594   away 0.5099     z = 0.042\n```\n\nThe API's `close_prob` for this row was `home 0.237, draw 0.264, away 0.5, overround 0.083`, which matches the proportional method. So `close_prob` is a proportional devig; if you want Shin or power, compute them yourself from the prices.\n\nNotice the gap. Proportional says Arsenal 50.0%, Shin 51.0%. The one-point difference is bigger than many \"edges\" people chase. Pick a method and keep it for the whole analysis.\n\nSharpest reference in the same match, Pinnacle (`+317 / +279 / -111`, overround 3.0%): `close_prob` home 0.233, draw 0.256, away 0.511. A low-margin book is the best single estimate of the market's view, because the margin you remove is small and the method barely matters.\n\n## Choosing a Method\n\n| Situation | Use |\n|-----------|-----|\n| Low-margin book (Pinnacle, exchange) | Any; they agree within a fraction of a point |\n| High-margin book (6-9% overround) | Shin or power; proportional misstates the longshot |\n| Heavy favorite and a longshot draw | Shin |\n| Quick screening | Proportional |\n| Consensus across books | Devig each book, then take the median of fair probabilities |\n\nExchanges can show an overround near zero (the Betfair Exchange close above was 0.4%), which is liquidity, not a missing margin. Thin early snapshots can produce prices that make no sense (a negative overround). Reject rows with overround below 0 or above about 15%.\n\n## Two-Way Markets: Totals and Handicaps\n\nFor a total of 2.75 with over and under prices, the market has two outcomes, so devig as in two-way:\n\n```\nfair_over = p_over / (p_over + p_under)\n```\n\nQuarter lines (2.25, 2.75, and handicaps like -0.25) settle as two half-stakes on adjacent lines, with a push or half-win possible. Price each half, then average. Whole-number lines can push, which removes that probability from both sides; ignore it only knowing you are doing so.\n\nHandicaps and totals are posted by fewer books. In the 740968 sample, only Bet 365, Pinnacle and William Hill had a total at close.\n\n## Pitfalls\n\n1. **Devig the triple together.** Never devig home and away alone as if the draw did not exist.\n2. **Raw `implied` is not a probability.** The `implied` field in `get_schedule` is the raw price converted, summing to more than 1 (1.040 for the median Liverpool v City line). Normalize before quoting.\n3. **Medians are not a book.** A median across books does not correspond to any bettable price. Use it for context.\n4. **Closing versus opening.** Fair opening probabilities are less informative; the close is the benchmark.\n6. **Compare methods once.** Whatever you choose, apply it to your model benchmarks and your backtest alike.\n7. **Never mix formats.** American `-110` and decimal 1.91 are the same price. A mix produces nonsense.\n\n## Anti-patterns\n\n| Rationalization | Why It's Wrong | Do This Instead |\n|----------------|---------------|-----------------|\n| \"Divide the draw by 1.083\" | Ignores the other two outcomes' margin share | Devig all three |\n| \"Use one book's raw prices as probability\" | Overround 3-9% | Devig first |\n| \"Shin is always better\" | The difference vanishes on low-margin books | Use it where margin is high |\n| \"The exchange price is the truth\" | Thin books misprice | Check liquidity and overround |\n| \"Edge = model minus raw implied\" | Overstates every edge by the margin | Subtract the devigged probability |\n\n## Output Format\n\n```\n[Match] - [book], [open/close]\nPrices: H [+x]  D [+x]  A [-x]   overround [x.x]%\nFair (proportional): H [p]  D [p]  A [p]\nFair (Shin, z = [z]): H [p]  D [p]  A [p]\nBenchmark: [Pinnacle or exchange] fair H [p] D [p] A [p]\n```\n\n## What to Do Next\n\n| What You Found | Next Action | Skill |\n|----------------|-------------|-------|\n| Want to browse more books | Compare prices | `odds-explorer` |\n"
}

SHA-256 of public snapshot: 13440610e69bb925a45537e6e66128cb9d72710f3c8636ef71693f8099830116