TW Market Data LogoTW Market Data

統計與事實

事實總覽

台股的長期統計基準,每一個數字都附樣本區間與 as_of

季節性

逐月報酬分布與勝率,含樣本數

法人動向

三大法人買賣超廣度的季節性分布

漲跌停事件

漲跌停的發生頻率與集中度

下市與存續

下市家數與存續期間,回測避開倖存者偏誤的基礎

規則沿革

交易制度變更的時間軸,解讀歷史資料時的前提

資料與探索

資料集總覽

全部資料集、涵蓋範圍與更新頻率

Playground

不用金鑰,直接在瀏覽器裡打一次 API

市場快照

當日市場概況與重點數字

個股分析

單一標的的資料檢視入口

熱力圖

全市場一張圖:面積是市值,顏色是營收年增率

台股日程

法定揭露截止日:一筆資料哪一天依法才能被知道

產品能力

產品概覽

TWMD 提供什麼,以及它為誰而做

可驗證證明

簽章 checkpoint 與逐列 inclusion proof

資料品質

對帳、缺漏處理與品質狀態

方法學

數字怎麼算出來的,以及口徑

可稽核交割

把交易決策連回它當時看到的資料

券商串接

把 TWMD 接進既有下單與研究流程

開發者

文件

API 參考、資料集頁與整合指南

快速開始

認證與你的第一個 request

依角色整合

量化研究、資料工程與應用開發各自的路徑

MCP 連線

讓 agent 直接連上 TWMD

MCP registry

已發布的 MCP tool 清單與簽章 manifest

Webhooks

資料更新時主動通知你的系統

學習

部落格

資料、方法與市場結構的長文

問答

具體問題的具體答案,附資料出處

主題

產業鏈與主題的關聯檢視

說明中心

帳號、計費與使用上的常見問題

名詞表

台股與資料領域的名詞定義

比較與狀態

為何選 TWMD

與 FinMind、TEJ 的逐項比較

從 FinMind 搬遷

欄位對映與搬遷步驟

從 FinLab 搬遷

欄位對映與搬遷步驟

從 TEJ 搬遷

欄位對映與搬遷步驟

系統狀態

服務可用性與事件紀錄

安全與信任

信任中心

我們宣稱什麼、以及每個宣稱的界線

安全中心

架構、存取控制與事件處理

安全事實

可以從外部自行查證的項目

安全證據

SBOM、ASVS 對照與威脅模型,含未達成的三條。

自我評估

採購問卷用的逐項回覆

合規與標準

合規對應

證據原語對應到 FSB、IOSCO 與 SR 26-2

資料標準

逐條對應到已發布標準,以及對不上的地方

資料溯源與 C2PA

機器可讀的來源圖,免金鑰取得

授權條款

資料的使用與再散布範圍

導入

方案評估

不用帳號就能自己跑的七項檢查

聯絡銷售

企業方案、額度與合約細節

方案價格
EN登入註冊
TW Market Data

台股資料基礎設施 · 為 AI agent 與量化流程而建。

狀態未知
© 2026 TW Market Data

TW Market Data(TWMD)提供之歷史資料與統計,非投資建議;投資決策與風險由您自行判斷。

  • 隱私權政策·
  • 服務條款·
  • Cookie 政策·
  • 可接受使用政策·
  • 資料來源與授權·
  • 法律文件總覽
EN

AI Agent

  • MCP Server
  • Skills 技能包
  • 工具清單
  • Agent 工作流範例
  • Agent 評測題庫
  • llms.txt
  • OpenAPI 規格

Security

  • 資安總覽
  • 可驗證資料
  • 信任中心
  • 標準與相容性
  • 監理對照表

Product

  • 資料集總覽
  • 題材研究
  • 統計資料
  • 文件
  • 接入指南
  • 試玩台(免註冊)
  • 免費方案
  • 解決方案

Company

  • 關於 TWMD
  • 部落格
  • 幫助中心
  • 方案價格

文件 · Webhooks

Webhooks(Phase A)

當發生一個你也能從 /freshness 拉到的資料事件時,我們會把 同一份凍結 payload 推送到你的 HTTPS 端點——推即是拉,零雙重真相。投遞以 Standard Webhooks 簽章,失敗會退避重試,並有 SSRF 防護。

語義:at-least-once、不保序

  • 同一事件可能送達不只一次(重試/部署中)。請用 webhook-id 去重,不要假設 exactly-once。
  • 不保證依 occurred_at 順序抵達;需要順序請自行以 occurred_at 排序。

請求與簽章 headers

POST,Content-Type: application/json。 三個 Standard Webhooks headers:

  • webhook-id — 事件穩定 id,用它去重
  • webhook-timestamp — unix 秒;驗簽有 5 分鐘容差
  • webhook-signature — v1,<base64 HMAC-SHA256>,簽 {id}.{timestamp}.{body}

Body envelope(路由 metadata + 凍結 payload 放在 data):

{
  "id": "3f2b0c9e-…",
  "type": "revenue.announced",
  "occurred_at": "2026-07-10T09:00:00Z",
  "dataset": "monthly-revenue",
  "symbol": "2330",
  "schema_ver": 1,
  "data": { "…frozen event payload, verbatim…": true }
}

驗簽——用官方庫,別自己寫

簽章是標準 HMAC-SHA256。用官方庫驗,篡改的 body / 錯的 secret / 過期 timestamp 都會被擋。可直接執行的範例:

Node:examples/webhooks/verify_signature.mjs(npm i standardwebhooks)· Python:examples/webhooks/verify_signature.py(pip install standardwebhooks)

import { Webhook } from "standardwebhooks";

const wh = new Webhook(process.env.WEBHOOK_SIGNING_SECRET); // whsec_…
// Pass the RAW request body (bytes as received) — re-serializing changes the signed bytes.
const event = wh.verify(rawRequestBody, {
  "webhook-id": req.headers["webhook-id"],
  "webhook-timestamp": req.headers["webhook-timestamp"],
  "webhook-signature": req.headers["webhook-signature"],
}); // throws on tampered body / wrong secret / stale timestamp
from standardwebhooks import Webhook

wh = Webhook(os.environ["WEBHOOK_SIGNING_SECRET"])  # whsec_…
event = wh.verify(raw_request_body, {
    "webhook-id": headers["webhook-id"],
    "webhook-timestamp": headers["webhook-timestamp"],
    "webhook-signature": headers["webhook-signature"],
})  # raises on any mismatch

三個事件(schema_ver = 1)

所有 payload 都帶 schema_ver: 1 與 not_investment_advice: true;結構凍結。

revenue.announced — 月營收公告

{
  "schema_ver": 1,
  "symbol": "2330",
  "revenue_month": "2026-06",
  "revenue": 331109,
  "unit": { "currency": "TWD", "scale": "thousand_twd" },
  "data_as_of": "2026-07-10",
  "not_investment_advice": true
}

filing.announced — 財報公告

statement 為 income | balance | cash_flow。

{
  "schema_ver": 1,
  "symbol": "2330",
  "statement": "income",
  "fiscal_period": "2026-Q1",
  "report_date": "2026-05-15",
  "data_as_of": "2026-05-15",
  "not_investment_advice": true
}

catalog.dataset_listed — 新資料集上架

此事件沒有 symbol,因此只會匹配「未設 symbol filter」的訂閱。

{
  "schema_ver": 1,
  "dataset": "derivatives-market",
  "exposure_status": "public_sellable",
  "reconciliation_badge": "green",
  "not_investment_advice": true
}

重試、退避、自動停用

失敗(非 2xx、逾時、連線錯誤、遇到 redirect)以指數退避 + 抖動重試,24 小時內最多 8 次。用盡後端點會被自動停用並 email 通知帳號;修好後可在後台重新啟用。每次嘗試逐筆記錄。

端點規則(SSRF:建立與每次投遞都檢查)

  • 僅 HTTPS。
  • host 必須解析到公網 IP。私網/loopback/link-local/CGNAT 及雲 metadata(169.254.169.254 / fd00:ec2::254) 一律拒絕(含 IPv4-mapped / 6to4 / NAT64)。
  • 不跟隨 redirect——3xx 視為投遞失敗。
  • 僅預設埠;URL 不得含帳密;payload 大小上限。

簽章密鑰:揭示與輪替

每個端點有 whsec_… 簽章密鑰,加密儲存(與 API key 相同的 key-reveal 鏈),建立時完整顯示一次,其餘僅能經節流的 reveal 端點取得。可隨時輪替——新密鑰回傳一次,舊的立即停止簽章。

完整參考:docs/WEBHOOKS.md · 返回文件入口