2026年10月24日の例では、価格0.88はインプライド確率88.0%を意味しました。質問のすべての結果の生の価格の合計が1を超える場合は、各価格をその合計で割ります。
APIを使う方法
2026年10月24日の例では、プラットフォームの価格は、結果を1ドルの支払いに対するドル建てで0から1までの値として示す慣例に従っています。そのため、価格がその結果の生のインプライド確率になります。正規化では価格をまとめて使います。合計は1つの質問のすべての結果に属するためです。
Narwhalは結果ごとに、プラットフォーム間で統合済みの probability を返します。各プラットフォームには固有の quotes もあります。計算の前に、必要なフィールドを決めてください。返ってくる確率はそのまま読め、生の結果価格にはPythonの例にある換算を使います。RESTとMCPは同じAPIキーを共有するので、Narwhalアカウントのキーを使ってください。
- APIキーを取得 無料キーを取得し、環境変数
NARWHAL_API_KEYに保存してください。リクエストを送るときは、そのキーをAuthorization: Bearer YOUR_KEYヘッダーに入れます。 - 質問を読み取る 2026年10月28日のFRBの決定については、
https://api.narwhalapi.comのGET /v1/predictions/scalar/usa-fed-2026-10を使います。統合結果は各結果のprobability、プラットフォームごとの価格は venue のquotesから読み取ります。 - オッズには日付を添えて読む 各スナップショットには
as_ofが付きます。2026年10月24日付のスナップショットではas_ofが2026-10-24T00:00:00Zです。そこから取った数値には、この日付を併記してください。 - 必要に応じて生の価格を正規化する 2026年10月24日付の例示用の生の価格について、同じ質問のすべての結果の価格を足し合わせ、各価格をその合計で割ります。生の価格から始める場合にこの計算を使ってください。Narwhalが返す
probabilityの値は、すでに合計が1になっています。# A venue quotes each outcome as a price between 0 and 1 (cents on the dollar). # Narwhal returns the probabilities already # normalised, but if you start from raw prices you remove the overround yourself. yes_prices = {"cut": 0.05, "hold": 0.88, "hike": 0.10} # example raw prices, sum 1.03 total = sum(yes_prices.values()) for outcome, price in yes_prices.items(): print( f"{outcome:5} price {price:.2f} implied {price:.1%} " f"normalised {price / total:.1%}" ) print("overround", round(total - 1, 2))
スプレッドシートまたはコードを使わずに計算する
同じ質問のすべての結果の生の価格をスプレッドシートに入力します。2026年10月24日付の例では、価格を B2:B4 に置き、最初の価格の横に =B2/SUM($B$2:$B$4) と入力します。数式を残りの価格の横にコピーし、結果をパーセント表示にします。
ドル記号があるため、数式をコピーしても合計は同じ範囲に固定されます。各行では、その行の価格を分子に、すべての結果の価格を分母にします。正規化には質問全体の合計を使うので、範囲にはすべての結果を含めてください。
計算なしで質問を読みたい場合は、Narwhalの予測ページを開いてください。確率がそのまま表示されます。生の価格の集まりから始めて、元のクォートの横に各除算の結果を見たいときは、シートを使います。
状況に応じた方法の選び方
| 状況 | 適した方法 | 理由 |
|---|---|---|
| アプリで1つの質問を見る | APIが返す確率を読む | すでに正規化されています |
| ほかのソースの生の価格 | 各価格を合計で割る | これでオーバーラウンドが取り除かれます |
| 小数、分数、アメリカンオッズ | 公式で換算してから正規化する | 換算の結果は生のインプライド確率です |
小数、分数、アメリカンオッズ
まず、オッズの表記方法に合った公式を使います。小数オッズ d のインプライド確率は 1/d です。分数オッズ a/b では b/(a+b) を使います。正のアメリカンオッズ +X では 100/(X+100)、負のアメリカンオッズ -X では X/(X+100) です。X は示された数字の大きさ(絶対値)です。
2026年10月24日付のこれらの例では、小数オッズ2.50、分数オッズ3/2、アメリカンオッズ+150は、いずれもインプライド確率40.0%を意味します。アメリカンオッズ-200は66.7%です。オッズの表記に合う関数を選び、返ってきた値をパーセントで表してください。
アメリカン用の関数は符号つきのオッズを受け取るので、プラスやマイナスの符号を付けたままにしてください。負のオッズでは、関数は除算に絶対値を使います。分数用の関数は分子と分母を別々に受け取るので、分数オッズの表記と同じ順序で入力してください。
def from_decimal(d): # decimal odds, e.g. 2.50
return 1 / d
def from_fractional(a, b): # fractional odds a/b, e.g. 3/2
return b / (a + b)
def from_american(x): # American odds, e.g. +150 or -200
return 100 / (x + 100) if x > 0 else -x / (-x + 100)
print(f"decimal 2.50 -> {from_decimal(2.50):.1%}")
print(f"fractional 3/2 -> {from_fractional(3, 2):.1%}")
print(f"American +150 -> {from_american(150):.1%}")
print(f"American -200 -> {from_american(-200):.1%}")これらの公式は、クォートを1つずつ換算します。同じ市場のすべての結果のオッズがある場合は、生のインプライド確率を足し合わせ、それぞれをその合計で割ります。クォートの表記を変えてもオーバーラウンドは取り除かれないため、換算と正規化は別々の計算です。
価格の合計が100.0%を超えるのはなぜですか?
スプレッドや手数料のため、すべての結果を買うときの最良価格の合計が、満額の支払いをわずかに上回ることがあります。その超過分がオーバーラウンドです。各生の価格をすべての結果の合計で割ると超過分が取り除かれ、結果を正規化された確率の組として表せます。
価格は予測ですか?
取引参加者が支払う金額であり、保証ではなく、市場が示すインプライド確率です。
Narwhalの数値をもう一度正規化する必要はありますか?
いいえ。返される probability の値は、すでに合計が1です。質問の統合確率が必要なときは、その値をそのまま読んでください。生のクォートには生の価格の計算を当てはめてください。返ってきた確率を、まだオーバーラウンドが残る価格として扱ってはいけません。
計算例:生の結果価格を換算する
この例示用の数値は2026年10月24日のものです。
たとえば、生の価格が利下げ0.05、据え置き0.88、利上げ0.10だとします。足すと1.03です。この合計から満額の支払い1を引くと、オーバーラウンドは0.03、つまり3ポイントです。
各価格を1.03で割り、合計に占める割合を求めます。生のインプライド確率の割合は価格からそのまま得られ、正規化後の割合はこの共通の分母を使います。すべての価格を計算に含めるため、全結果で同じ分母を使ってください。
| 結果 | 生の価格 | 生のインプライド確率 | 計算 | 正規化後の確率 |
|---|---|---|---|---|
| 利下げ | 0.05 | 5.0% | 0.05 / 1.03 | 4.9% |
| 据え置き | 0.88 | 88.0% | 0.88 / 1.03 | 85.4% |
| 利上げ | 0.10 | 10.0% | 0.10 / 1.03 | 9.7% |
公開。