2026-03-09 09:30,策略把這一根當成台北時間開盤第一根。
這條紀錄最值得先查什麼?金融資料蒐集:從 K 線到委託簿與 API
資料不是下載後就能使用。研究者要知道欄位代表什麼、何時產生、是否調整,以及 API 回傳失敗或不完整時如何處理。

- 區分成交、K 線、委託簿與事件資料的粒度與用途
- 理解 API 請求、分頁、速率限制與錯誤處理基礎
- 區分可瀏覽與獲准使用
- 辨認存活者偏誤與前視偏誤
- 建立含欄位字典、品質檢查與原始資料留存的清單
除權息或分割讓價格跳變,回測會不會把它當成崩盤?
調整後價格會把股票分割、股利等公司行動納入歷史序列,讓跨期報酬比較保持一致。若忽略調整,策略可能把制度性價格變化當成交易訊號。 公司行動處理中要先理解還原價格。
策略突然回測 +300%,先別慶祝:找資料問題
下面六條紀錄都『看起來正常』。逐條判斷最可能的問題。真實研究裡,時區、缺K、拆股、未還原價格、陳舊報價與單位錯誤都能製造假收益。
分鐘序列 10:14 後直接跳到 10:17,但系統按連續三根K線計算。
這條紀錄最值得先查什麼?某股一夜從120變12,成交量同步放大約10倍。
這條紀錄最值得先查什麼?15:58、15:59、16:00 報價完全相同,source timestamp 停在15:57。
這條紀錄最值得先查什麼?黃金一欄寫4350,另一欄寫139.9,系統直接相減。
這條紀錄最值得先查什麼?日線序列有明確交易日、時區、還原欄位與source timestamp。
這條紀錄最值得先查什麼?排錯正確: 0/6
資料 QA 應該排在策略績效之前。異常漂亮的回測首先是排錯訊號,不是先宣告發現 alpha。
撿到一箱食材,不等於可以直接開店
食材看起來新鮮,還要知道來源、保存期限、儲存方式與能不能販售。資料也一樣:能瀏覽不代表可以大量下載或再散布,表格整齊也不代表沒有遺漏與事後修訂。下載成功只是取得檔案,不是取得可以直接用來研究的資料。
粒度越細,語意與成本越複雜
描述已撮合的交易;時間戳記、價格與數量是核心欄位。
開高低收與成交量是彙總結果,無法還原區間內完整的先後順序。
檔位會新增、修改與取消;快照只描述當時可見的委託,不等於可成交保證。
除權息、停牌、減資與交易日曆都會影響價格序列,發布時間與修訂版本要分開記錄。
為不同資料來源選擇正確用法
比較歷史 K 線、委託簿快照、基本面與新聞資料,辨認每一類記錄了什麼、又遺漏了什麼。
歷史K線
按固定時間間隔聚合的開高低收與成交量。不同資料商對同一時間間隔的計算可能略有差異——要確認某個來源如何處理缺口和還原。
委託簿快照
某一時刻掛單的買賣委託快照。快照只顯示單一瞬間——從快照到基於它做決定之間,簿子可能變化很大。
參考與基本面
公司財務、指數成分或其他描述性資料。基本面資料事後可能被修訂或重述,用今天的版本回測歷史時期會引入前視偏差。
新聞與另類資料
圍繞某個工具的文本、情緒分數或其他非價格資料。資料點實際公開的時間戳很關鍵——把它當成更早已知來測試會扭曲結果。
一張乾淨的表格,也可能漏掉最關鍵的那幾筆
事實
【虛構練習資料】某教學名冊在研究期間內共有 120 個練習代號,其中 20 個在期間中下市、合併或轉換市場別;目前的查詢結果只回傳仍留在名冊上的 100 個。名冊、代號與數量皆為模擬教學資料,不對應任何真實市場名單。
解釋
樣本系統性漏掉已退出的代號,可能產生存活者偏誤;這不是補幾個空值就能解決的問題,也提醒識別碼必須能追蹤更名、合併、下市與市場別轉換。
預測(待驗證)
若依當時可取得的資訊補回已退出的代號,彙總結果可能下降或分布變寬;這是資料偏誤假設,要真的重算一次才算驗證,不是對市場的方向判斷。
反證
若研究問題明確只討論目前仍存在的代號,並揭露這個範圍,缺少已退出代號未必違背問題;但結論不能外推到完整歷史母體。
找出時間戳記、修訂與樣本範圍裡的陷阱
固定虛構練習資料:來源 ID 為 `EDU-KLINE-v1`,擷取時間為教學時間 `T0`,原始檔雜湊教學值為 `sha256:0000000000000000000000000000000000000000000000000000000000000001`。
欄位依序為日期、開盤、高點、低點、收盤、成交量;日期加資料代號構成唯一鍵。六個欄位都不得空白。
本題所需的資料來源資訊已全部題內提供,不需要查即時外部資料。所有代號與數值均為虛構教學資料,不代表真實市場資料,也不構成投資建議。
| 資料列 | 日期 | 開盤 | 高點 | 低點 | 收盤 | 成交量 |
|---|---|---|---|---|---|---|
| 第 1 列 | D1 | 100 | 103 | 99 | 102 | 10 |
| 第 2 列 | D1 | 100 | 103 | 99 | 102 | 10 |
| 第 3 列 | D2 | 102 | 104 | 101 | 空值 | 12 |
檢查重複
比較完整欄位及唯一鍵,填入重複列數;本例第 2 列重複第 1 列,所以答案為 1。
檢查缺值
逐欄套用不得空白規則;本例第 3 列的收盤為空值。
檢查價格關係
有值的列須符合高點不低於開盤、低點與收盤,且低點不高於開盤、高點與收盤;無法檢查的列填「待查」。
留下處置
每列填接受、隔離或待查及理由。完成條件是重複列數、缺值欄位、三列價格關係、三列處置、來源 ID、擷取時間與原始檔雜湊欄全部填妥。
倖存者偏差
回測只包含今天仍在上市的公司,排除了測試期內下市或破產的公司。這存在倖存者偏差:被排除的公司往往正是拖累歷史績效的那批。
前視偏差
回測用公司當前發布的財務數字,去測試這些數字被修訂或定稿之前的時期。這引入了前視偏差:當時實際並不存在的新資訊被提前使用了。
時間戳已核對
研究者在使用每條新聞資料前,先確認它真正公開的確切時間戳。這正確避免了在資訊實際可用之前就拿來測試。
匯入資料前,先登記四類資訊
- 1來源與授權記錄提供方、取得位置、允許用途、保存期限與取得日期。臺灣的官方入口可從臺灣證券交易所、證券櫃檯買賣中心與公開資訊觀測站逐案查閱;三者的資料範圍、更新節奏與授權條件並不相同,必須逐案確認並記下查閱日期,不要沿用別人的說法。
- 2介面契約與分頁先讀清端點、參數、時區、單位、授權與使用限制;分頁要保存游標或頁碼,檢查漏頁、重複與排序改變。對速率限制採等待與重試上限,不以高頻請求繞過規範。API 金鑰放在受控環境變數或祕密管理軟體,不寫進程式、課堂筆記、螢幕截圖或版本控制。
- 3時間、版本與欄位區分事件時間、發布時間、擷取時間與後續修訂;確認時區、幣別、頻率、識別碼與缺值規則。採用除權息前價格或權息調整後價格必須明確標記,不能混用兩種價格序列。
- 4交易日曆與樣本進出以交易場所公告的交易日與停止交易資訊建立日曆;公告為非交易日的日期不屬於預期資料列,不應直接判成缺漏。另外檢查下市、退出、篩選條件與無法取得的標的,並為更名與市場別轉換保留穩定識別碼。
離開前收好三條資料規則
區間彙總、瞬時快照與文字紀錄不能互相取代;只有日 K 的高低點,無法還原盤中先後順序。
能瀏覽只說明入口存在,不說明所有用途都被允許;來源條款、修訂與缺漏都要留下紀錄。
記錄發布時間與版本,避免事後修訂值悄悄回填到舊時點,讓研究看見當時看不到的資訊。
檢驗你是否真正理解
確認你能判斷資料粒度與 API 品質風險。送出作答後會顯示每一題的原理說明。
只有日 K 的最高價與最低價,可以確定兩者在盤中誰先出現嗎?
API 回傳 HTTP 成功狀態後,還應做什麼?
做歷史回測時,直接用現在查得到的最新版財報(已經過後續重編)代表「發布當時」的資訊,理由是「數字準就好,用哪個版本都一樣」。這樣做合適嗎?
卡住了?讓 Mira 幫你拆解
Mira 僅處理去識別化的虛構教學情境,不接收真實帳戶、個人資料、資產、委託或成交資料、登入資訊或憑證,也不提供具體標的、方向、數量、時點或個人化指令。真實 API 金鑰與資料不得貼入對話。
正在檢查登入狀態...