mcpField
K
kalshi-weather-markets

kalshi-weather-markets

github.com/agiprolabsその他456306 回インストール8 週間前に更新
リポジトリ

kalshi-weather-markets について

Kalshiの日次最高・最低気温のレンジおよび閾値市場を分析するためのリファレンススキルです。確率計算、決済規則、予測補正、データやモデルの誤りを解説し、実行可能なPythonスクリプトも含みます。

主な機能

  1. 01レンジ・閾値契約の規則
  2. 02整数補正を含むガウス確率式
  3. 03アンサンブル分位点から平均・標準偏差を算出
  4. 04CLI決済とバイアス補正
  5. 05確率・決済計算スクリプト

活用シーン

  1. 01気温契約のYES確率を計算
  2. 02Kalshiの決済日・情報源に合わせてラベルを整合
  3. 03レンジ境界や閾値タイプの誤りを回避
  4. 04当日の観測値を予測に反映

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill kalshi-weather-markets

インストール後、Claude Code で/kalshi-weather-marketsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
brackets-and-settlement.md
forecasting.md
scripts/
weather_brackets.py

詳細

Kalshi の天気マーケット — 日次最高・最低気温

Kalshi では、米国約20都市の日次最高気温・最低気温オプションを、YES($1.00)または NO($0.00)で決済されるバイナリー契約として掲載しています。このスキルでは、マーケットの構造、予報から確率への変換方法、正確な決済の仕組み、そして実体験から得た注意点を説明します。これは取引所レイヤーを基盤としています。Kalshi API の仕組み(ホスト、認証、注文、オーダーブック、ローソク足)については kalshi-api スキルを、戦略、ポジションサイズ、バックテストについては prediction-market-strategy を参照してください。

契約タイプ

ブラケット — B<center>

ブラケットティッカー B<center> は、両端を含む、幅2°F の範囲です。

  • B74.5 は 2つの整数 {74, 75}°F を対象とします。
  • 決済気温がちょうど74 または 75の場合、YESとなります。
  • 1つのイベント内のブラケットは相互排他的であり、(両端に2つの未確定テールマーケットがある場合)全体で網羅的です。
  • YES価格の合計がオーバーラウンドになります(公正価格は1.0、1.0を超える場合は全体として割高です)。
閾値 — T<strike>

閾値ティッカー T<strike> は、片側のバイナリー契約です。

  • greater → cli >= strike + 1 の場合、YESとなります。
  • less → cli <= strike - 1 の場合、YESとなります。
  • 重要: strike_type("greater" / "less")はティッカーから推測できません。毎回、API の strike_type フィールドを確認してください。
ティッカー形式
KXHIGH<CITY>-<YYMONDD>-B<center>     # bracket high
KXLOW<CITY>-<YYMONDD>-T<strike>      # threshold low

日付はティッカーに含まれており、close_time からは導出できません。
KXHIGHNY-26JUN21 は、2026-06-21 LST に決済されます。close_time は翌日の UTC(およそ00:59 ET)です。close_time を使って結合すると、すべてのラベルで日付が1日ずれます。ティッカーの日付を使ってください。


予報 → P(YES)

その日の極値について予報分布 N(μ, σ) がある場合、半整数の連続性補正を適用してください(必須です。決済値は連続値ではなく整数です)。

# Bracket B<center>, covering integers {floor, cap}
P(YES) = Φ((cap + 0.5 − μ) / σ) − Φ((floor − 0.5 − μ) / σ)

# Threshold "greater":
P(YES) = 1 − Φ((T + 0.5 − μ) / σ)

# Threshold "less":
P(YES) =     Φ((T − 0.5 − μ) / σ)

Φ(x) = 0.5 · (1 + erf(x / √2))   # stdlib only, no scipy needed

±0.5 のシフトは省略できません。これを省くと、すべてのブラケットにバイアスが生じます。2°Fのブラケットを1°Fの半開区間として扱った結果、あるプロジェクトではバックテストで**+1640%の架空の利益**が発生しました。

4つの関数すべての実行可能な実装については、scripts/weather_brackets.py を参照してください。


アンサンブル分位点から (μ, σ) を導出する

sigma_raw = max((p90 − p10) / 2.56, 0.5) · sigma_scale · sigma_mult
mu        = p50                          # or nowcast-blended (see forecasting.md)
sigma     = max(sigma_raw, 0.1)          # hard floor against degeneracy

2.56で割るのは、標準正規分布の10~90パーセンタイル幅(2 × 1.28σ)に基づいています。


CLI 空間でのバイアス補正

決済値(NWS CLI の整数 °F、LST の日付)は、生の ASOS/METAR 毎時最高・最低気温と同じではありません。CLI では品質管理、代替観測所へのフォールバック、LST による集計が適用されます。P(YES) を計算する前に μ をシフトしてください。

mu_cli = mu_metar + bias_city_season     # bias = oracle_extreme − asos_extreme, fit per city + season

都市ごとに、季節性を考慮した(循環型の)曲線として bias_max / bias_min をフィッティングしてください。これを省くと、CLI と METAR に構造的な差がある都市では、すべてのブラケットの価格が体系的に不適切になります。


決済ルール

Kalshi
  • 情報源: NWS Climatological Report(CLI)。各 WFO が発行する公式の日次気候概要です。
  • フォールバック: IEM ASOS の日次ダウンロードは CLI と100%一致し、プログラムから利用できます。
  • **時間帯:**LST(地方標準時、夏時間調整なし)。 年間を通して、1日はLSTの午前0時から翌日の午前0時までです。
  • 値: そのLSTの日の整数 °F の最高(HIGH)または最低(LOW)気温です。
  • ブラケット: cli ∈ {floor, cap} の場合、YESとなります(両端を含みます)。
  • 閾値 greater: cli >= strike + 1 の場合、YESとなります。
  • 閾値 less: cli <= strike - 1 の場合、YESとなります。
決済情報源の参照先

スコアリングや取引を行う前に、各マーケット固有のルールブックを確認してください。 決済情報源、観測所、対象日の時間帯はマーケットごとの契約条件であり、変更される場合があります。

リソースURL
Kalshi マーケットルール/ルールブックhttps://docs.kalshi.com(マーケットごとの「Rulebook」)
NWS Climatological Report(CLI)https://www.weather.gov/wrh/Climate
IEM ASOS 日次ダウンロードhttps://mesonet.agron.iastate.edu/request/daily.phtml
Polymarket の解決(WU)https://www.wunderground.com
Polymarket の異議申し立て(UMA)https://docs.uma.xyz

取引所間の乖離

同じ都市圏でも同じ日付に、取引所によって異なる値で清算されることがあります。これは観測所と春・秋のDST期間の両方が原因です。

軸KalshiPolymarket
情報源NWS CLI / IEM ASOSWeather Underground
日付の時間枠LST(DSTなし)現地時刻(DSTあり)
NYC の観測所KNYC(セントラルパーク)KLGA(ラガーディア)
丸め整数 °F、t ∈ {floor, cap}WU の履歴に準拠

取引所間の分析では、それぞれの取引所の情報源に基づいて個別に清算する必要があります。


ナウキャストのブレンド(当日経路)

日中の観測値が利用可能になったら、μを実際の値に近づけ、σを縮小します。

  • HIGH: μを[obs, obs + drift · hours_remaining]の範囲に制限します
  • LOW: μを[obs − drift · hours_remaining, obs]の範囲に制限します
  • σはsigma_raw · sqrt(hours_remaining / 24)に縮小し、sigma_floor(約 0.5)を下限とします
  • driftのデフォルト値は約 3.0°F/hr です

オプションの NWP 事前分布ブレンド:new_p50 = w · hrrr + (1−w) · p50(w は約 0.5)とし、校正済みのσを使って対称な分位点を再構築します。


校正済みモデルの性能(参考値)

22 件の最高気温と 22 件の最低気温における都市別の OOS Brier スコア(v1.5、2026-06-17 ベースライン):

指標範囲
都市別 OOS Brier0.07 – 0.14(低いほど良好。0.25 は気候値)
都市別精度65–85%(ブラケット分類)

予報スキル ≠ 取引エッジです。 気候値を Brier スコアで 0.05 上回る校正済みモデルでも、市場価格でプラスの EV が得られるとは限りません。市場価格にはすでに NWP が織り込まれています。実践的なエッジは、生の方向予測ではなく、価格設定を誤ったロングショットのブラケットをメイカー側から逆張りすること(本命–ロングショット・バイアス)です。


気象データで注意すべき点

  1. 清算元が間違っています。 会場の判定とは異なるものの相関する派生値を使って採点すると、結果の約 10% が反転します。会場独自のresultに基づいて清算してください。

  2. ブラケットの端点を 1 つずらす(幻の +1640%)。 2°F の両端を含むブラケット{floor, cap}を、1°F の半開区間[floor, cap)として扱うと、バックテストに大きな幻のエッジが生まれます。ブラケットは両端を含みます。

  3. ticker からstrike_typeを推測することはできません。 安値市場のT74は、greaterの場合もlessの場合もあります。必ず API からstrike_typeを読み取ってください。推測してはいけません。

  4. close_timeではなく、ticker 内の日付を使います。 清算日との結合には、close_time(翌日の UTC 時刻)ではなく ticker 文字列内の日付を使用してください。

  5. LST ≠ 現地時刻です。 Kalshi は LST(DSTなし)に基づいて清算します。春と秋には、LST の時間枠が現地時刻に対してずれます。DST 切り替え日に現地時刻を使う WU と CLI を照合すると、不一致が生じます。

  6. CLI ≠ METAR です。 ASOS の生の毎時最高・最低値は清算値ではありません。CLI は QC、代替観測所へのフォールバック、LST に基づく集計を適用します。P(YES) を計算する前に、都市ごとに季節別のバイアス補正を当てはめてください。

  7. UTC と現地日付の特徴量集計。 LST 日ではなく UTC 日で予報特徴量を集計すると、ラベルの対応がずれます。ある調査では、精度が約 14 パーセントポイント低下しました。

  8. 時刻の不一致による先読み。 特徴量の締め時刻が 14:00 LST である一方、18:00Z の板スナップショットで約定させると、東部時間以外の都市では将来情報を使って取引することになります。各都市固有の現地判断時刻を使用してください。

  9. 幻の 1 セント売り気配。 1¢ の売り気配は頻繁にスプーフィングされます。それらで約定すると想定すると、PnL を約 23 倍過大評価します。複数のスナップショットにわたって残り、約定記録でも裏付けられる板の厚さだけを数えてください。

  10. 診断指標としてのオーバーラウンド。 イベントの全ブラケットの YES 価格を合計してください。overround > 1.0は通常(胴元の優位性)ですが、overround >> 1.1は価格設定を誤ったイベント(またはデータエラー)を示します。


ファイル

参考資料
  • references/brackets-and-settlement.md — ブラケット/しきい値の構造、P(YES) の計算式、清算ルール、取引所間の乖離を示す表、オーバーラウンド
  • references/forecasting.md — アンサンブル分位点から(μ, σ)への変換、ナウキャストのブレンド、CLI 空間でのバイアス補正、モデルのスキル数値、予報 ≠ エッジ
スクリプト
  • scripts/weather_brackets.py — ガウス区間/しきい値のP(YES)、決済判定、分位点→(μ,σ)関数(標準ライブラリのみを使用し、オフラインで実行できます)

コメント