用 XGBoost 預測高溫,在 Kalshi 自動下單。
這是一套自動化機器學習交易系統。它的目標很明確:預測紐約、邁阿密、奧斯汀、芝加哥四座城市的每日最高溫,並依預測結果在 Kalshi 的天氣事件市場下單。Kalshi 是美國受監管的事件合約交易所,「某城市今日最高溫落在某區間」本身就是一種可交易的合約,因此一個夠準的溫度模型可以直接轉化為交易訊號。
系統核心是 XGBoost 迴歸模型。四座城市各自獨立建模,訓練資料取自 NOAA 等氣象來源的歷史天氣紀錄,超參數以 grid search 搭配手動調校最佳化。模型輸出每日最高溫預測,再由交易程式對應到 Kalshi 的合約區間。
專案用三本 Jupyter Notebook 組織整條流程:Final_Prediction_Model.ipynb 訓練模型,KalshiTradingV2.ipynb 串接 Kalshi API 自動下單,MSE of Settled Trades.ipynb 在交易結算後以 MSE 評估預測誤差。作者把開發過程歸納為三階段:先手動交易理解市場,再訓練模型,最後交給自動化執行。
手動交易
模型訓練
自動執行
績效分析
一套自動化機器學習系統,預測四座美國城市的每日最高溫,並在 Kalshi 預測市場執行交易。
取得專案,依序執行三本 Notebook。
這是一個以 Jupyter Notebook 為主的研究型專案,不是可全域安裝的 CLI 工具。流程是:取得專案、安裝相依套件、在 Jupyter 或 VS Code 開啟 notebook,逐格執行。下單部分需要 Kalshi 帳號與 API 憑證。
# 取得專案並安裝相依套件
git clone https://github.com/AruneshDev/Automated-Trading-System-Kalshi-Weather-Model.git
cd Automated-Trading-System-Kalshi-Weather-Model
pip install -r requirements.txt執行順序:三本 Notebook
README 指定的執行順序如下。先訓練模型,確認預測可用後再串接交易,最後在交易結算後檢視績效。
# 1 · 訓練 XGBoost 溫度模型
Final_Prediction_Model.ipynb
# 2 · 串接 Kalshi API 自動下單
KalshiTradingV2.ipynb
# 3 · 結算後以 MSE 評估績效
MSE of Settled Trades.ipynb從資料到下單的完整管線。
專案由資料目錄與三本 notebook 構成一條線性管線:資料進來、訓練模型、產生預測、對應下單、結算後評估。下表把各組成依階段列出。核心是三本 notebook,其餘目錄是它們的輸入與產出。
資料 · 01
/Data
歷史氣象資料
蒐集自 NOAA 等氣象來源的歷史天氣資料集,作為四城溫度模型的訓練輸入。
模型 · 02
Final_Prediction_Model.ipynb
XGBoost 訓練
訓練四城每日最高溫預測模型,含 grid search 與手動超參數調校。
模型 · 03
XGBoost
梯度提升樹
以 XGBoost 迴歸預測每日最高溫;紐約、邁阿密、奧斯汀、芝加哥各自獨立建模。
執行 · 04
KalshiTradingV2.ipynb
Kalshi API 下單
串接 Kalshi API,依模型輸出在對應的天氣事件市場自動執行交易。
評估 · 05
MSE of Settled Trades.ipynb
MSE 績效
交易結算後,以 MSE 衡量四城預測誤差與整體成效。
產出 · 06
/Xg_boost Training
訓練產出物
存放模型訓練過程的中間產物與設定,供重訓與檢視。
紀錄 · 07
/SettledPredictions
結算結果
紀錄已結算的預測與交易結果,作為回測與績效分析的依據。
文件 · 08
/Common Task Docs
任務文件
專案的共用任務說明與相關文件。
你想做什麼,開哪一本
| 你的目的 | 開啟的 Notebook |
|---|---|
| 訓練或重新訓練溫度模型 | Final_Prediction_Model.ipynb |
| 串接 Kalshi、執行自動下單 | KalshiTradingV2.ipynb |
| 檢視已結算交易的誤差與績效 | MSE of Settled Trades.ipynb |
三階段開發與 MSE 評估。
以下是專案 README 與目錄結構所載的方法,而非社群技巧。它說明這套系統如何從資料走到可評估的交易決策。
三階段開發路徑
專案依「手動交易 → 模型訓練 → 自動執行」推進:先以人工下單建立對市場的理解,再訓練模型取代直覺,最後把決策交給自動化程式。
來源 · 專案 README
四座城市各自建模
紐約、邁阿密、奧斯汀、芝加哥分別訓練獨立的 XGBoost 模型,以反映各地不同的氣候型態,而非共用單一模型。
來源 · 專案 README
超參數以 grid search 調校
模型最佳化結合 grid search 與手動調校。訓練資料取自 NOAA 等氣象來源的歷史紀錄,作為訓練與驗證輸入。
來源 · 專案 README
用 MSE 衡量成效
以四座城市已結算交易的 MSE(均方誤差)評估預測準確度,作為模型是否堪用的客觀依據,而非只看單筆損益。
來源 · MSE of Settled Trades.ipynb
一輪從預測到結算的流程。
以下用 notebook 的執行順序,示意一輪完整流程:訓練四城模型、產生當日最高溫預測、對應到 Kalshi 合約區間下單,隔日結算後以 MSE 檢視誤差。終端輸出為示意,實際數值依當日資料與市場而定。
> ▸ Final_Prediction_Model.ipynb
claude: 為四座城市各訓練一個 XGBoost 迴歸模型,
claude: 以 grid search 搜尋超參數,再手動微調。
> ▸ KalshiTradingV2.ipynb
claude: 取得各城當日最高溫預測,對應到 Kalshi
claude: 的溫度區間合約,在符合條件的市場下單。
hl: NYC 預測高溫 → 對應區間合約 → 送出委託
hl: Miami / Austin / Chicago → 同一流程
> ▸ MSE of Settled Trades.ipynb
claude: 將預測高溫與實測高溫比對,計算各城 MSE,
claude: 檢視哪一座城市的模型誤差最大、需要重訓。
ok: [輸出四城 MSE 與已結算交易績效報表]
溫度區間是 Kalshi 上可交易的合約。 一個夠準的高溫模型,就是一條交易訊號。
這條流程為什麼這樣設計
關鍵在於把問題收斂成一個可量測的數字:每日最高溫。它同時是模型的預測目標、Kalshi 合約的結算依據,也是 MSE 評估的對象。三者對齊,模型誤差就能直接連到交易成效,讓「模型好不好」有客觀答案。
三本 notebook 的切分也呼應這點:訓練、執行、評估各自獨立,任何一步出問題都能單獨重跑,不必牽動其他步驟。
上線前先看清楚邊界。
把模型換成你的市場。
這套系統的價值在於它的結構:資料 → 模型 → 下單 → 評估的閉環。要延伸,通常是沿著這條線替換或加厚某一段。
進階玩法地圖
**1. 換城市或換市場。**收集目標城市的歷史氣象資料,沿用 Final_Prediction_Model.ipynb 的訓練流程重新建模,再把 KalshiTradingV2.ipynb 指向對應的合約。
**2. 擴充特徵。**在資料層加入更多氣象變數(濕度、氣壓、風速、雲量),重新訓練後用 MSE 比較是否真的降低誤差。
**3. 換模型比較。**XGBoost 之外可試 LightGBM 或時序模型,套進同一份 MSE 評估框架做公平比較,而非各說各話。
**4. 加風控層。**在 KalshiTradingV2.ipynb 的下單前加入部位上限、單日虧損上限與停損規則,降低單一誤判的衝擊。
**5. 自動化排程。**把 notebook 流程改寫為腳本並定時排程,減少手動逐格執行,但要先補上監控與告警。
最該先讀的三份檔案
① Final_Prediction_Model.ipynb——XGBoost 溫度模型的完整訓練程式。 ② KalshiTradingV2.ipynb——Kalshi API 串接與自動下單邏輯。 ③ MSE of Settled Trades.ipynb——結算後的誤差與績效分析。原始碼:github.com/AruneshDev/Automated-Trading-System-Kalshi-Weather-Model
手動交易 → 模型訓練 → 自動執行: 先理解市場,再交給模型,最後交給自動化。