CLV付きベット記録スプレッドシート
回答: ベットごとに1行、取ったオッズを記録し、同じアウトカムのピナクル価格を2回取得します。ベット時点と、試合開始の少し前です。クロージングラインバリュー(CLV)は自分のオッズ / 終値 − 1です。どちらの価格も、どのプランでも/v1/oddsまたは/v1/events/{id}で自分で取得できます(Freeは30秒遅延)。Builderでは、/v1/closing/{eventId}に保存された終値レコードを読むこともできます。
列#
| 列 | 例 | 入力方法 |
|---|---|---|
| 日付、イベント、市場、アウトカム | 2026-11-09, Ajax v PSV, moneyline, home | 自分で |
event_id、market_id | 123456, 123456:... | ベット時に/v1/oddsから |
| 自分のオッズ | 2.30 | 利用先が提示したオッズ |
| ステーク | 10 | 自分で |
| ベット時のピナクル | 2.22 | そのアウトカムのdecimal |
| ベット時のピナクル公正値 | 2.27 | そのアウトカムのfair |
| ピナクル終値 | 2.15 | 試合開始前に取得した最後の価格 |
| CLV | =G2/J2-1 | 終値に対する自分のオッズ |
| 結果 | 勝ち/負け/無効 | 自分で |
多くのベットでCLVがプラスなら、終値を上回っている可能性を示します。短期の損益はほとんど何も語りません。
終値を自分で取得する(全プラン)#
import os, requests
KEY = os.environ["PINNFEED_KEY"] # ps_live_...
def pinnacle_price(event_id: int, market_id: str, outcome: str):
r = requests.get(f"https://pinnfeed.io/v1/events/{event_id}",
headers={"x-api-key": KEY}, timeout=10)
if r.status_code == 404:
return None # event no longer listed (started or finished)
for m in r.json()["event"]["markets"]:
if m["id"] == market_id:
for o in m["outcomes"]:
if o["name"] == outcome:
return o["decimal"], o["fair"]
return None
各試合開始の数分前にスケジューラーで実行し、結果を「ピナクル終値」列に書き込みます。ピナクルが掲載をやめるとイベントは/v1/events/{id}から消えるため、試合開始前に取得してください。Freeでは値が30秒遅れます。
保存された終値を読む(Builder)#
GET /v1/closing/{eventId}は、PinnFeedが市場ごとに保存した終値レコードを返します(BuilderまたはPro)。
プラン#
Free(2競技、1日1,000リクエスト、30秒遅延)で、1日に数件のベットを記録するには十分です。Builder(月額99ユーロ)ではリアルタイムのプッシュと保存済みの終値が加わります。3日間のトライアルがあります。カード登録が必要で、解約しない場合は3日目の後に課金されます。
18歳以上の方を対象とした教育目的のコンテンツです。予想や利益の約束ではありません。日本では刑法により賭博は原則として禁止されています。
よくある質問#
CLVは生の終値と公正な終値のどちらで計算しますか?#
どちらでも構いません。生の値のほうが簡単で、公正値(マージンなし)はピナクルのマージンを取り除きます。どちらかに決めて一貫させてください。
CLVが意味を持つには何件のベットが必要ですか?#
多く必要です。数十件ではまだノイズが大きいので、数百件の平均を見てください。
PinnFeedで他社のオッズも取得できますか?#
いいえ。PinnFeedはピナクルのみです。利用先のオッズは自分で入力してください。